玩轉 MCP:手把手教你打造 Git AI 倉庫助手
一、背景
隨着人工智能技術的快速發展,開發工具也在不斷進化。Gitee 作爲國內領先的代碼託管平臺,推出了 MCP(Model Context Protocol,模型上下文協議)功能,幫助開發者利用 AI 助手高效管理代碼倉庫。Gitee 的 MCP Server 使 AI 能夠直接訪問代碼倉庫,進行 Issue 管理、Pull Request 審查及代碼操作等任務。這標誌着 AI 不再只是代碼的旁觀者,而是成爲了軟件開發過程中的智能參與者。
二、什麼是 MCP?
MCP 是一種允許 AI 模型與外部工具和服務直接交互的標準協議。通過 MCP,AI 模型不僅能讀取倉庫內容、查看提交歷史,還可以創建倉庫、提交代碼以及管理 Issue 和 Pull Request,實現真正的自動化操作。
MCP 協議主要優勢包括:
-
提供與外部系統交互的標準接口;
-
支持多種傳輸模式,適應不同使用場景;
-
使 AI 能夠執行實際操作,而不僅僅是提供建議。
三、Java 生態下的 MCP 實現
雖然 Gitee 官方提供的是基於 Go 語言的實現,但 Java 開發者完全可以通過 LangChain4j 實現 MCP 集成。
LangChain4j 簡介
LangChain4j 是 Java 生態中集成 AI 服務的優秀工具,能夠輕鬆對接各類大型語言模型(LLM),並實現與 MCP 協議服務器的對接。
MCP Java 客戶端構建
在 Java Maven 項目中引入 LangChain4j 相關依賴:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-mcp</artifactId>
<version>1.0.0-beta2</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>1.0.0-beta2</version>
</dependency>
配置 AI 模型
在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 兩種傳輸模式,各適用於不同的開發場景。
(一)stdio 傳輸模式
stdio 模式通過本地標準輸入輸出流進行通信,適用於本地開發和測試。
實現代碼示例:
@Autowired
private ChatLanguageModel chatLanguageModel;
@SneakyThrows
@Test
void contextLoads() {
McpTransport transport = new StdioMcpTransport.Builder()
.command(List.of("/path/to/mcp-gitee", "-token", "GITEE-TOKEN"))
.logEvents(true)
.build();
@Cleanup McpClient mcpClient = new DefaultMcpClient.Builder()
.transport(transport)
.build();
ToolProvider toolProvider = McpToolProvider.builder()
.mcpClients(List.of(mcpClient))
.build();
GiteeAiService giteeAiService = AiServices.builder(GiteeAiService.class)
.chatLanguageModel(chatLanguageModel)
.toolProvider(toolProvider)
.build();
String result = giteeAiService.chat("獲取 log4j/pig 開啓的 issue 列表");
log.info("gitee mcp result: {}", result);
}
(二)SSE 傳輸模式
SSE 模式通過 HTTP 連接,服務器主動推送事件,適用於分佈式、多客戶端環境。
服務器啓動命令:
mcp-gitee -transport sse -token GITEE-TOKEN
客戶端實現代碼示例:
@Autowired
private ChatLanguageModel chatLanguageModel;
@SneakyThrows
@Test
void contextLoads() {
McpTransport sseTransport = new HttpMcpTransport.Builder()
.sseUrl("http://localhost:8000/sse")
.logRequests(true)
.logResponses(true)
.build();
@Cleanup McpClient mcpClient = new DefaultMcpClient.Builder()
.transport(sseTransport)
.build();
ToolProvider toolProvider = McpToolProvider.builder()
.mcpClients(List.of(mcpClient))
.build();
GiteeAiService giteeAiService = AiServices.builder(GiteeAiService.class)
.chatLanguageModel(chatLanguageModel)
.toolProvider(toolProvider)
.build();
String result = giteeAiService.chat("獲取 log4j/pig 開啓的 issue 列表");
log.info("gitee mcp result: {}", result);
}
兩種模式對比
五、實際應用:打造 Gitee AI 倉庫助手
AI 助手通過 MCP,可以:
-
讀取和理解倉庫 Issue;
-
自動審查 Pull Request 代碼變更;
-
監控倉庫狀態;
-
執行代碼管理操作,如創建分支、提交代碼、合併 PR 等。
AI 查詢倉庫示例結果:
目前 log4j/pig 倉庫中有以下開啓的 issue:
1. JDK17 版本中oauth2.0的授權碼模式,無法通過code獲取到access_token
- 編號: IBQJ94
- 創建時間: 2025-03-04T13:04:53+08:00
安裝方式:
- 二進制下載:前往倉庫 release 頁,下載對應平臺的可執行文件
- 源碼編譯:
git clone https://gitee.com/oschina/mcp-gitee.git
cd mcp-gitee
make build
3.Go Install:
# 安裝 Go 1.23+
# 安裝 mcp-gitee
go install gitee.com/oschina/mcp-gitee@latest
六、總結與展望
通過 Java 與 MCP 的深度結合,可以創建一個功能強大的 Gitee 倉庫助手,實現智能化和自動化代碼管理。MCP 協議極大拓展了 AI 在代碼管理領域的可能性,將成爲企業級 AI 應用的重要基礎設施。隨着技術發展,未來開發者與 AI 的協作將更加緊密,軟件開發也將更加智能、高效。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/hyfwceZkzN6CstTHPX6n1A