亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(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 客戶端

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

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 客戶端通過(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 客戶端
 @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ù)查詢 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ù)器向客戶端推送數(shù)據(jù)。在 MCP 中使用 SSE 模式:

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

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

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

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

SSE 模式的優(yōu)點(diǎn)是支持分布式部署,可以被多個(gè)客戶端同時(shí)訪問(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 客戶端
 @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ù)查詢 Gitee 信息
 Stringresult=giteeAiService.chat("獲取 log4j/pig 開(kāi)啟的 issue 列表 ");

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

輸出結(jié)果示例

無(wú)論使用哪種傳輸模式,成功執(zhí)行后都會(huì)得到類似的結(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)單
多客戶端支持 不支持 支持
網(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 兩種傳輸模式滿足了不同場(chǎng)景的需求:

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎ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

    文章

    2995

    瀏覽量

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

    關(guān)注

    89

    文章

    37531

    瀏覽量

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

    關(guān)注

    1813

    文章

    49594

    瀏覽量

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

    關(guān)注

    3

    文章

    3930

    瀏覽量

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

    關(guān)注

    0

    文章

    205

    瀏覽量

    16696

原文標(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 ?1603次閱讀
    <b class='flag-5'>Git</b>常用的超級(jí)實(shí)用命令

    智能硬件通過(guò)小聆AI自定義MCP應(yīng)用開(kāi)發(fā)操作講解

    智能硬件通過(guò)小聆AI自定義MCP應(yīng)用開(kāi)發(fā)操作講解 前言 MCP(Modular Communication Protocol,模塊化通信協(xié)議)為智能硬件帶來(lái)多方面顯著優(yōu)勢(shì):它
    發(fā)表于 10-14 15:50

    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ì)象,但我們通常使用依賴管理系統(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 ?632次閱讀

    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 ?4638次閱讀
    在<b class='flag-5'>Git</b>中如何克隆,修改,添加和刪除文件的詳細(xì)資料概述

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

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

    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 ?1410次閱讀

    獲取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 ?1423次閱讀

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

    可以用 git status 命令查看哪些文件處于什么狀態(tài)。如果在克隆倉(cāng)庫(kù)后立即使用此命令,會(huì)看到類似這樣的輸出: $ git status On branch masterYour branch
    的頭像 發(fā)表于 07-22 11:11 ?966次閱讀
    <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 ?1413次閱讀

    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 ?1540次閱讀