社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

架构师 • 3 月前 • 153 次点击  
架构师(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
     
    153 次点击