Py学习  »  Git

玩转 MCP:手把手教你打造 Git AI 仓库助手

架构师 • 1 年前 • 325 次点击  
架构师(JiaGouX)
我们都是架构师!
架构未来,你来不来?





一、背景


随着人工智能技术的快速发展,开发工具也在不断进化。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.langchain4jgroupId>
<artifactId>langchain4j-mcpartifactId>
<version>1.0.0-beta2version>
dependency>
<dependency>
<groupId>dev.langchain4jgroupId>
<artifactId>langchain4j-open-ai-spring-boot-starterartifactId>
<version>1.0.0-beta2version>
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);
}

两种模式对比

特性stdio模式SSE模式
部署方式本地子进程独立服务器进程
适用场景本地开发分布式部署、多客户端
配置复杂度简单较复杂
多客户端支持不支持支持
网络要求无需网络需要网络连接

五、实际应用:打造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

安装方式:

1.二进制下载:前往仓库 release 页,下载对应平台的可执行文件

2.源码编译

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的协作将更加紧密,软件开发也将更加智能、高效。

如喜欢本文,请点击右上角,把文章分享到朋友圈
如有想了解学习的技术点,请留言给若飞安排分享

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享

·END·

相关阅读:

    版权申明:内容来源网络,仅供学习研究,版权归原创者所有。如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

    架构师

    我们都是架构师!



    关注架构师(JiaGouX),添加“星标”

    获取每天技术干货,一起成为牛逼架构师

    技术群请加若飞:1321113940 进架构师群

    投稿、合作、版权等邮箱:admin@137x.com

    Python社区是高质量的Python/Django开发社区
    本文地址:http://www.python88.com/topic/180244