手把手教你打造 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);
}

两种模式对比

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汤姆yu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值