來源:JAVA架構日記,作者:冷冷
背景
隨著人工智能技術的快速發展,開發者工具也在不斷進化。Gitee 作為國內領先的代碼托管平臺,現已推出 MCP (Model Control Protocol) 功能,讓開發者能夠通過 AI 助手更高效地管理代碼倉庫。
mcp-gitee 是 Gitee 的模型上下文協議 (MCP) 服務器實現,它提供了一組與 Gitee API 交互的工具,允許 AI 助手管理倉庫、Issue、Pull Request 等。
Gitee開源MCP Server:讓AI直接操作代碼倉庫的“外掛”
雖然 Gitee 官方目前僅提供 Go 語言和各種圖形化配置的實現,但這并不妨礙 Java 開發者大展身手!
本文將以 LangChain4j 為技術基座,為老 Javaer 們呈現一套 MCP 集成方案。通過深度結合 Java 生態優勢,我們將從零構建企業級 AI 倉庫助手,揭秘如何用 Java 玩轉 MCP 協議,讓 Spring Boot 應用輕松獲得 Gitee 智能管理能力。
MCP 是什么?
MCP (Model Control Protocol) 是一種允許 AI 模型與外部工具和服務進行交互的協議。通過 MCP,AI 助手可以執行各種操作,如創建倉庫、提交代碼、管理 Issue 和 Pull Request 等,使開發流程更加智能化和自動化。
MCP 的核心優勢在于:
? 為 AI 模型提供了與外部系統交互的標準接口
? 支持多種傳輸模式,適應不同的使用場景
? 使 AI 能夠執行實際操作,而不僅僅是提供建議
準備工作
下載 Gitee MCP
首先,從Gitee MCP 發布頁下載對應操作系統的 MCP Gitee Server。
筆者使用 Mac,下載解壓后需要分配執行權限:
chmod+x mcp-gitee
構建 MCP Java 客戶端
以 PIG AI 為例,根 Maven 項目中添加以下依賴:
PIG AI | 助力企業快速構建Java AI應用平臺
dev.langchain4j langchain4j-mcp 1.0.0-beta2 dev.langchain4j langchain4j-open-ai-spring-boot-starter 1.0.0-beta2
配置文件
在application.yml中添加 AI 模型配置:
langchain4j: open-ai: chat-model: api-key:sk- base-url:https://api.deepseek.com/v1 model-name:deepseek-chat log-requests:true
MCP 傳輸模式
MCP 支持多種傳輸模式,主要有 stdio 和 SSE 兩種模式,下面我們分別介紹。
方式一:MCP stdio 模式
stdio 模式概念
stdio(標準輸入輸出)模式是 MCP 的一種基本傳輸方式,它通過標準輸入輸出流與 MCP 服務器進行通信。在這種模式下:
? MCP 客戶端通過子進程啟動 MCP 服務器
? 通過標準輸入(stdin)向服務器發送請求
? 通過標準輸出(stdout)接收服務器的響應
? 適合在本地開發環境中使用,無需額外的網絡配置
這種模式的優點是設置簡單,無需額外的網絡配置;缺點是只能在本地使用,不適合分布式環境。
實現代碼
@Autowired privateChatLanguageModel chatLanguageModel; @SneakyThrows @Test voidcontextLoads(){ // 創建 stdio 傳輸模式 McpTransporttransport=newStdioMcpTransport.Builder() .command(List.of("/Users/lengleng/Downloads/mcp-gitee-darwin-arm64/mcp-gitee","-token","GITEE-TOKEN")) .logEvents(true)// 可選:在日志中顯示通信內容 .build(); // 創建 MCP 客戶端 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder() .transport(transport) .build(); // 創建工具提供者 ToolProvidertoolProvider=McpToolProvider.builder() .mcpClients(List.of(mcpClient)) .build(); // 構建 Gitee AI 服務 GiteeAiServicegiteeAiService=AiServices.builder(GiteeAiService.class) .chatLanguageModel(chatLanguageModel) .toolProvider(toolProvider) .build(); // 使用 AI 服務查詢 Gitee 信息 Stringresult=giteeAiService.chat("獲取 log4j/pig 開啟的 issue 列表 "); log.info("gitee mcp result: {}", result); }
方式二:MCP Server SSE 模式
SSE 模式概念
SSE(Server-Sent Events)模式是一種基于 HTTP 的單向通信機制,允許服務器向客戶端推送數據。在 MCP 中使用 SSE 模式:
? MCP 服務器以獨立進程運行,監聽 HTTP 請求
? 客戶端通過 HTTP 連接到服務器
? 服務器可以持續向客戶端推送事件和數據
? 適合在分布式環境中使用,支持多客戶端連接
SSE 模式的優點是支持分布式部署,可以被多個客戶端同時訪問;缺點是配置相對復雜,需要額外的網絡設置。
實現步驟
首先,以 SSE 模式啟動 Gitee MCP 服務器:
mcp-gitee -transport sse -token GITEE-TOKEN
然后,在 Java 代碼中使用 SSE 傳輸模式:
@Autowired privateChatLanguageModel chatLanguageModel; @SneakyThrows @Test voidcontextLoads(){ // 創建 SSE 傳輸模式 McpTransportsseTransport=newHttpMcpTransport.Builder() .sseUrl("http://localhost:8000/sse") .logRequests(true)// 可選:記錄請求日志 .logResponses(true)// 可選:記錄響應日志 .build(); // 創建 MCP 客戶端 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder() .transport(sseTransport) .build(); // 創建工具提供者 ToolProvidertoolProvider=McpToolProvider.builder() .mcpClients(List.of(mcpClient)) .build(); // 構建 Gitee AI 服務 GiteeAiServicegiteeAiService=AiServices.builder(GiteeAiService.class) .chatLanguageModel(chatLanguageModel) .toolProvider(toolProvider) .build(); // 使用 AI 服務查詢 Gitee 信息 Stringresult=giteeAiService.chat("獲取 log4j/pig 開啟的 issue 列表 "); log.info("gitee mcp result: {}", result); }
輸出結果示例
無論使用哪種傳輸模式,成功執行后都會得到類似的結果:
2025-03-16T2351.211+08:00 INFO 67659 --- [ main] com.example.demo.DemoApplicationTests : gitee mcp result: 目前 log4j/pig 倉庫中有以下開啟的 issue: 1. **JDK17 版本中 oauth2.0 的授權碼模式,無法通過 code 獲取到 access_token** - 編號: IBQJ94 - 創建時間: 2025-03-04T1353+08:00 - 鏈接: [https://gitee.com/log4j/pig/issues/IBQJ94](https://gitee.com/log4j/pig/issues/IBQJ94)
兩種模式的對比
特性 | stdio 模式 | SSE 模式 |
部署方式 | 本地子進程 | 獨立服務器 |
適用場景 | 本地開發 | 分布式環境 |
配置復雜度 | 復雜 | 簡單 |
多客戶端支持 | 不支持 | 支持 |
網絡要求 | 無 | 需要網絡連接 |
總結
通過 Java 與 MCP 的結合,我們可以創建一個功能強大的 Gitee 倉庫助手,實現代碼管理的智能化和自動化。這不僅提高了開發效率,還減少了重復性工作,讓開發者能夠專注于更有創造性的任務。
MCP 提供的 stdio 和 SSE 兩種傳輸模式滿足了不同場景的需求:
? stdio 模式適合本地開發和測試
? SSE 模式適合分布式環境和多客戶端訪問
隨著 AI 技術的不斷發展,MCP 協議的功能也將越來越豐富,為開發者提供更多可能性。希望本文能夠幫助您了解如何使用 Java 玩轉 MCP,打造屬于自己的 AI Gitee 倉庫助手。
-
JAVA
+關注
關注
20文章
2984瀏覽量
106877 -
AI
+關注
關注
87文章
34256瀏覽量
275399 -
人工智能
+關注
關注
1804文章
48717瀏覽量
246525 -
開源
+關注
關注
3文章
3611瀏覽量
43485 -
Git
+關注
關注
0文章
203瀏覽量
16114
原文標題:Java玩轉MCP:手把手教你打造Git AI倉庫助手
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Git 常用命令大全
git之推送提交
git簡單使用(一)
Linux 下建立 Git 與 GitHub的連接并clone至本地
java如何創建對象的分析
GitHub教程 倉庫的創建、同步、刪除
在Git中如何克隆,修改,添加和刪除文件的詳細資料概述

如何在GitHub上創建一個全新的Git倉庫詳細講解

獲取Git項目倉庫的兩種方式
git如何記錄每次更新到倉庫

評論