一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過(guò)Java和MCP創(chuàng)建Git AI倉(cāng)庫(kù)助手

OSC開(kāi)源社區(qū) ? 來(lái)源:JAVA架構(gòu)日記 ? 2025-03-19 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來(lái)源:JAVA架構(gòu)日記,作者:冷冷

背景

隨著人工智能技術(shù)的快速發(fā)展,開(kāi)發(fā)者工具也在不斷進(jìn)化。Gitee 作為國(guó)內(nèi)領(lǐng)先的代碼托管平臺(tái),現(xiàn)已推出 MCP (Model Control Protocol) 功能,讓開(kāi)發(fā)者能夠通過(guò) AI 助手更高效地管理代碼倉(cāng)庫(kù)。

mcp-gitee 是 Gitee 的模型上下文協(xié)議 (MCP) 服務(wù)器實(shí)現(xiàn),它提供了一組與 Gitee API 交互的工具,允許 AI 助手管理倉(cāng)庫(kù)、Issue、Pull Request 等。

Gitee開(kāi)源MCP Server:讓AI直接操作代碼倉(cāng)庫(kù)的“外掛”

雖然 Gitee 官方目前僅提供 Go 語(yǔ)言和各種圖形化配置的實(shí)現(xiàn),但這并不妨礙 Java 開(kāi)發(fā)者大展身手!

本文將以 LangChain4j 為技術(shù)基座,為老 Javaer 們呈現(xiàn)一套 MCP 集成方案。通過(guò)深度結(jié)合 Java 生態(tài)優(yōu)勢(shì),我們將從零構(gòu)建企業(yè)級(jí) AI 倉(cāng)庫(kù)助手,揭秘如何用 Java 玩轉(zhuǎn) MCP 協(xié)議,讓 Spring Boot 應(yīng)用輕松獲得 Gitee 智能管理能力。

MCP 是什么?

MCP (Model Control Protocol) 是一種允許 AI 模型與外部工具和服務(wù)進(jìn)行交互的協(xié)議。通過(guò) MCP,AI 助手可以執(zhí)行各種操作,如創(chuàng)建倉(cāng)庫(kù)、提交代碼、管理 Issue 和 Pull Request 等,使開(kāi)發(fā)流程更加智能化和自動(dòng)化。

MCP 的核心優(yōu)勢(shì)在于:

? 為 AI 模型提供了與外部系統(tǒng)交互的標(biāo)準(zhǔn)接口

? 支持多種傳輸模式,適應(yīng)不同的使用場(chǎng)景

? 使 AI 能夠執(zhí)行實(shí)際操作,而不僅僅是提供建議

準(zhǔn)備工作

下載 Gitee MCP

首先,從Gitee MCP 發(fā)布頁(yè)下載對(duì)應(yīng)操作系統(tǒng)的 MCP Gitee Server。

筆者使用 Mac,下載解壓后需要分配執(zhí)行權(quán)限:

chmod+x mcp-gitee

構(gòu)建 MCP Java 客戶(hù)端

以 PIG AI 為例,根 Maven 項(xiàng)目中添加以下依賴(lài):

PIG AI | 助力企業(yè)快速構(gòu)建Java AI應(yīng)用平臺(tái)


 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(標(biāo)準(zhǔn)輸入輸出)模式是 MCP 的一種基本傳輸方式,它通過(guò)標(biāo)準(zhǔn)輸入輸出流與 MCP 服務(wù)器進(jìn)行通信。在這種模式下:

? MCP 客戶(hù)端通過(guò)子進(jìn)程啟動(dòng) MCP 服務(wù)器

? 通過(guò)標(biāo)準(zhǔn)輸入(stdin)向服務(wù)器發(fā)送請(qǐng)求

? 通過(guò)標(biāo)準(zhǔn)輸出(stdout)接收服務(wù)器的響應(yīng)

? 適合在本地開(kāi)發(fā)環(huán)境中使用,無(wú)需額外的網(wǎng)絡(luò)配置

這種模式的優(yōu)點(diǎn)是設(shè)置簡(jiǎn)單,無(wú)需額外的網(wǎng)絡(luò)配置;缺點(diǎn)是只能在本地使用,不適合分布式環(huán)境。

實(shí)現(xiàn)代碼

@Autowired
privateChatLanguageModel chatLanguageModel;

@SneakyThrows
@Test
voidcontextLoads(){
 // 創(chuàng)建 stdio 傳輸模式
 McpTransporttransport=newStdioMcpTransport.Builder()
      .command(List.of("/Users/lengleng/Downloads/mcp-gitee-darwin-arm64/mcp-gitee","-token","GITEE-TOKEN"))
      .logEvents(true)// 可選:在日志中顯示通信內(nèi)容
      .build();

 // 創(chuàng)建 MCP 客戶(hù)端
 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder()
      .transport(transport)
      .build();

 // 創(chuàng)建工具提供者
 ToolProvidertoolProvider=McpToolProvider.builder()
      .mcpClients(List.of(mcpClient))
      .build();

 // 構(gòu)建 Gitee AI 服務(wù)
 GiteeAiServicegiteeAiService=AiServices.builder(GiteeAiService.class)
      .chatLanguageModel(chatLanguageModel)
      .toolProvider(toolProvider)
      .build();

 // 使用 AI 服務(wù)查詢(xún) Gitee 信息
 Stringresult=giteeAiService.chat("獲取 log4j/pig 開(kāi)啟的 issue 列表 ");

  log.info("gitee mcp result: {}", result);
}

方式二:MCP Server SSE 模式

SSE 模式概念

SSE(Server-Sent Events)模式是一種基于 HTTP 的單向通信機(jī)制,允許服務(wù)器向客戶(hù)端推送數(shù)據(jù)。在 MCP 中使用 SSE 模式:

? MCP 服務(wù)器以獨(dú)立進(jìn)程運(yùn)行,監(jiān)聽(tīng) HTTP 請(qǐng)求

? 客戶(hù)端通過(guò) HTTP 連接到服務(wù)器

? 服務(wù)器可以持續(xù)向客戶(hù)端推送事件和數(shù)據(jù)

? 適合在分布式環(huán)境中使用,支持多客戶(hù)端連接

SSE 模式的優(yōu)點(diǎn)是支持分布式部署,可以被多個(gè)客戶(hù)端同時(shí)訪(fǎng)問(wèn);缺點(diǎn)是配置相對(duì)復(fù)雜,需要額外的網(wǎng)絡(luò)設(shè)置。

實(shí)現(xiàn)步驟

首先,以 SSE 模式啟動(dòng) Gitee MCP 服務(wù)器:

mcp-gitee -transport sse -token GITEE-TOKEN

然后,在 Java 代碼中使用 SSE 傳輸模式:

@Autowired
privateChatLanguageModel chatLanguageModel;

@SneakyThrows
@Test
voidcontextLoads(){
 // 創(chuàng)建 SSE 傳輸模式
 McpTransportsseTransport=newHttpMcpTransport.Builder()
      .sseUrl("http://localhost:8000/sse")
      .logRequests(true)// 可選:記錄請(qǐng)求日志
      .logResponses(true)// 可選:記錄響應(yīng)日志
      .build();

 // 創(chuàng)建 MCP 客戶(hù)端
 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder()
      .transport(sseTransport)
      .build();

 // 創(chuàng)建工具提供者
 ToolProvidertoolProvider=McpToolProvider.builder()
      .mcpClients(List.of(mcpClient))
      .build();

 // 構(gòu)建 Gitee AI 服務(wù)
 GiteeAiServicegiteeAiService=AiServices.builder(GiteeAiService.class)
      .chatLanguageModel(chatLanguageModel)
      .toolProvider(toolProvider)
      .build();

 // 使用 AI 服務(wù)查詢(xún) Gitee 信息
 Stringresult=giteeAiService.chat("獲取 log4j/pig 開(kāi)啟的 issue 列表 ");

  log.info("gitee mcp result: {}", result);
}

輸出結(jié)果示例

無(wú)論使用哪種傳輸模式,成功執(zhí)行后都會(huì)得到類(lèi)似的結(jié)果:

2025-03-16T2351.211+08:00  INFO 67659 --- [      main] com.example.demo.DemoApplicationTests  : gitee mcp result: 目前 log4j/pig 倉(cāng)庫(kù)中有以下開(kāi)啟的 issue:

1. **JDK17 版本中 oauth2.0 的授權(quán)碼模式,無(wú)法通過(guò) code 獲取到 access_token**
 - 編號(hào): IBQJ94
 - 創(chuàng)建時(shí)間: 2025-03-04T1353+08:00
 - 鏈接: [https://gitee.com/log4j/pig/issues/IBQJ94](https://gitee.com/log4j/pig/issues/IBQJ94)

兩種模式的對(duì)比

特性 stdio 模式 SSE 模式
部署方式 本地子進(jìn)程 獨(dú)立服務(wù)器
適用場(chǎng)景 本地開(kāi)發(fā) 分布式環(huán)境
配置復(fù)雜度 復(fù)雜 簡(jiǎn)單
多客戶(hù)端支持 不支持 支持
網(wǎng)絡(luò)要求 無(wú) 需要網(wǎng)絡(luò)連接

總結(jié)

通過(guò) Java 與 MCP 的結(jié)合,我們可以創(chuàng)建一個(gè)功能強(qiáng)大的 Gitee 倉(cāng)庫(kù)助手,實(shí)現(xiàn)代碼管理的智能化和自動(dòng)化。這不僅提高了開(kāi)發(fā)效率,還減少了重復(fù)性工作,讓開(kāi)發(fā)者能夠?qū)W⒂诟袆?chuàng)造性的任務(wù)。

MCP 提供的 stdio 和 SSE 兩種傳輸模式滿(mǎn)足了不同場(chǎng)景的需求:

? stdio 模式適合本地開(kāi)發(fā)和測(cè)試

? SSE 模式適合分布式環(huán)境和多客戶(hù)端訪(fǎng)問(wèn)

隨著 AI 技術(shù)的不斷發(fā)展,MCP 協(xié)議的功能也將越來(lái)越豐富,為開(kāi)發(fā)者提供更多可能性。希望本文能夠幫助您了解如何使用 Java 玩轉(zhuǎn) MCP,打造屬于自己的 AI Gitee 倉(cāng)庫(kù)助手。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

    109825
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    35164

    瀏覽量

    280041
  • 人工智能
    +關(guān)注

    關(guān)注

    1807

    文章

    49029

    瀏覽量

    249599
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3690

    瀏覽量

    43838
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    205

    瀏覽量

    16221

原文標(biāo)題:Java玩轉(zhuǎn)MCP:手把手教你打造Git AI倉(cāng)庫(kù)助手

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Git常用的超級(jí)實(shí)用命令

    的一些Git工作流。 1 Git 常用的超級(jí)實(shí)用命令 1.1 與倉(cāng)庫(kù)相關(guān)的操作 克隆代碼倉(cāng)庫(kù)到本地,開(kāi)發(fā)必用 git clone 查看本地
    的頭像 發(fā)表于 10-09 17:19 ?1420次閱讀
    <b class='flag-5'>Git</b>常用的超級(jí)實(shí)用命令

    Git 常用命令大全

    pull origin --tags上傳本地tag到遠(yuǎn)程倉(cāng)庫(kù):$ git push origin --tags創(chuàng)建帶注釋的tag:$ git tag -a [name] -m 'yo
    發(fā)表于 10-11 17:23

    git之推送提交

    下文章:git創(chuàng)建倉(cāng)庫(kù),并提交代碼(第一次創(chuàng)建并提交)以及updates were rejected because the tip of your current branch is behind its
    發(fā)表于 12-17 09:20

    git簡(jiǎn)單使用(一)

    本帖最后由 iysheng 于 2017-2-19 23:09 編輯 編程,經(jīng)常會(huì)修改代碼,不管是將代碼托管到本地還是網(wǎng)上,使用git進(jìn)行版本控制無(wú)疑是比較流行的方法。今天我就記錄下如何創(chuàng)建倉(cāng)庫(kù)
    發(fā)表于 02-17 16:18

    Git學(xué)習(xí)經(jīng)驗(yàn)總結(jié)

    創(chuàng)建Git版本倉(cāng)庫(kù)創(chuàng)建一個(gè)空目錄mkdir MyGit cd MyGit pwd #顯示當(dāng)前目錄路徑將普通目錄變成Git版本庫(kù)
    發(fā)表于 07-12 08:00

    java如何創(chuàng)建對(duì)象的分析

    作為Java開(kāi)發(fā)者,我們每天創(chuàng)建很多對(duì)象,但我們通常使用依賴(lài)管理系統(tǒng),比如Spring去創(chuàng)建對(duì)象。然而這里有很多創(chuàng)建對(duì)象的方法,我們會(huì)在這篇文章中學(xué)到。
    發(fā)表于 09-27 14:36 ?0次下載

    GitHub教程 倉(cāng)庫(kù)創(chuàng)建、同步、刪除

    倉(cāng)庫(kù)的使用教程大概會(huì)涉及三種方法: 在網(wǎng)頁(yè)上進(jìn)行建立刪除 在GitHub Desktop上操作 在Git Bash上操作 在網(wǎng)頁(yè)上直接操作 點(diǎn)進(jìn)你的交友頁(yè)面,右邊紅色的框框repositories
    發(fā)表于 01-17 01:48 ?553次閱讀

    Git中如何克隆,修改,添加和刪除文件的詳細(xì)資料概述

    在 本系列的第一篇文章 開(kāi)始使用 Git 時(shí),我們創(chuàng)建了一個(gè)簡(jiǎn)單的 Git 倉(cāng)庫(kù),并用我們的計(jì)算機(jī)連接到它,向其中添加一個(gè)文件。在本文中,我們將學(xué)習(xí)一些關(guān)于
    的頭像 發(fā)表于 06-10 09:06 ?4475次閱讀
    在<b class='flag-5'>Git</b>中如何克隆,修改,添加和刪除文件的詳細(xì)資料概述

    如何在GitHub上創(chuàng)建一個(gè)全新的Git倉(cāng)庫(kù)詳細(xì)講解

    如果您從未使用過(guò) Git,甚至可能從未聽(tīng)說(shuō)過(guò)它。莫慌張,只需要一步步地跟著這篇入門(mén)教程,很快您就會(huì)在 GitHub 上擁有一個(gè)全新的 Git 倉(cāng)庫(kù)。
    的頭像 發(fā)表于 06-10 09:13 ?1.4w次閱讀
    如何在GitHub上<b class='flag-5'>創(chuàng)建</b>一個(gè)全新的<b class='flag-5'>Git</b><b class='flag-5'>倉(cāng)庫(kù)</b>詳細(xì)講解

    Git概述及知識(shí)詳解

    暫存區(qū)。進(jìn)倉(cāng)庫(kù)前暫時(shí)存放區(qū)域,未對(duì)本地倉(cāng)庫(kù)生效。對(duì)暫存區(qū)文件修改,顯藍(lán)色。第一次創(chuàng)建并add到暫存區(qū)的文件,由于遠(yuǎn)程倉(cāng)庫(kù)沒(méi)同步,顯綠色。(注:存放在 “.
    的頭像 發(fā)表于 11-08 14:16 ?907次閱讀

    Java創(chuàng)建對(duì)象有哪些方式

    1 問(wèn)題 作為Java開(kāi)發(fā)者,經(jīng)常創(chuàng)建很多對(duì)象,你是否知道Java創(chuàng)建對(duì)象有哪些方式呢?
    的頭像 發(fā)表于 02-24 10:29 ?1287次閱讀

    獲取Git項(xiàng)目倉(cāng)庫(kù)的兩種方式

    /user/my_project $ git init 該命令將創(chuàng)建一個(gè)名為 .git 的子目錄,這個(gè)子目錄含有你初始化的 Git 倉(cāng)庫(kù)
    的頭像 發(fā)表于 07-22 11:05 ?1274次閱讀

    git如何記錄每次更新到倉(cāng)庫(kù)

    可以用 git status 命令查看哪些文件處于什么狀態(tài)。如果在克隆倉(cāng)庫(kù)后立即使用此命令,會(huì)看到類(lèi)似這樣的輸出: $ git status On branch masterYour branch
    的頭像 發(fā)表于 07-22 11:11 ?790次閱讀
    <b class='flag-5'>git</b>如何記錄每次更新到<b class='flag-5'>倉(cāng)庫(kù)</b>

    Git項(xiàng)目遠(yuǎn)程倉(cāng)庫(kù)的使用

    遠(yuǎn)程倉(cāng)庫(kù)的使用 為了能在任意 Git 項(xiàng)目上協(xié)作,你需要知道如何管理自己的遠(yuǎn)程倉(cāng)庫(kù)。遠(yuǎn)程倉(cāng)庫(kù)是指托管在因特網(wǎng)或其他網(wǎng)絡(luò)中的你的項(xiàng)目的版本庫(kù)。你可以有好幾個(gè)遠(yuǎn)程
    的頭像 發(fā)表于 07-22 11:31 ?825次閱讀

    idea怎么創(chuàng)建Java項(xiàng)目

    創(chuàng)建Java項(xiàng)目是一個(gè)相對(duì)較為復(fù)雜的過(guò)程,需要考慮到各種細(xì)節(jié)和步驟。本文將詳細(xì)介紹如何創(chuàng)建一個(gè)Java項(xiàng)目。 一、準(zhǔn)備工作 在創(chuàng)建
    的頭像 發(fā)表于 12-06 14:09 ?1344次閱讀