女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過Java和MCP創建Git AI倉庫助手

OSC開源社區 ? 來源:JAVA架構日記 ? 2025-03-19 10:12 ? 次閱讀

來源:JAVA架構日記,作者:冷冷

背景

隨著人工智能技術的快速發展,開發者工具也在不斷進化。Gitee 作為國內領先的代碼托管平臺,現已推出 MCP (Model Control Protocol) 功能,讓開發者能夠通過 AI 助手更高效地管理代碼倉庫。

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

Gitee開源MCP Server:讓AI直接操作代碼倉庫的“外掛”

雖然 Gitee 官方目前僅提供 Go 語言和各種圖形化配置的實現,但這并不妨礙 Java 開發者大展身手!

本文將以 LangChain4j 為技術基座,為老 Javaer 們呈現一套 MCP 集成方案。通過深度結合 Java 生態優勢,我們將從零構建企業級 AI 倉庫助手,揭秘如何用 Java 玩轉 MCP 協議,讓 Spring Boot 應用輕松獲得 Gitee 智能管理能力。

MCP 是什么?

MCP (Model Control Protocol) 是一種允許 AI 模型與外部工具和服務進行交互的協議。通過 MCP,AI 助手可以執行各種操作,如創建倉庫、提交代碼、管理 Issue 和 Pull Request 等,使開發流程更加智能化和自動化。

MCP 的核心優勢在于:

? 為 AI 模型提供了與外部系統交互的標準接口

? 支持多種傳輸模式,適應不同的使用場景

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

準備工作

下載 Gitee MCP

首先,從Gitee MCP 發布頁下載對應操作系統的 MCP Gitee Server。

筆者使用 Mac,下載解壓后需要分配執行權限:

chmod+x mcp-gitee

構建 MCP Java 客戶端

以 PIG AI 為例,根 Maven 項目中添加以下依賴:

PIG AI | 助力企業快速構建Java AI應用平臺


 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(標準輸入輸出)模式是 MCP 的一種基本傳輸方式,它通過標準輸入輸出流與 MCP 服務器進行通信。在這種模式下:

? MCP 客戶端通過子進程啟動 MCP 服務器

? 通過標準輸入(stdin)向服務器發送請求

? 通過標準輸出(stdout)接收服務器的響應

? 適合在本地開發環境中使用,無需額外的網絡配置

這種模式的優點是設置簡單,無需額外的網絡配置;缺點是只能在本地使用,不適合分布式環境。

實現代碼

@Autowired
privateChatLanguageModel chatLanguageModel;

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

 // 創建 MCP 客戶端
 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder()
      .transport(transport)
      .build();

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

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

 // 使用 AI 服務查詢 Gitee 信息
 Stringresult=giteeAiService.chat("獲取 log4j/pig 開啟的 issue 列表 ");

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

方式二:MCP Server SSE 模式

SSE 模式概念

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

? MCP 服務器以獨立進程運行,監聽 HTTP 請求

? 客戶端通過 HTTP 連接到服務器

? 服務器可以持續向客戶端推送事件和數據

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

SSE 模式的優點是支持分布式部署,可以被多個客戶端同時訪問;缺點是配置相對復雜,需要額外的網絡設置。

實現步驟

首先,以 SSE 模式啟動 Gitee MCP 服務器:

mcp-gitee -transport sse -token GITEE-TOKEN

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

@Autowired
privateChatLanguageModel chatLanguageModel;

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

 // 創建 MCP 客戶端
 @CleanupMcpClientmcpClient=newDefaultMcpClient.Builder()
      .transport(sseTransport)
      .build();

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

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

 // 使用 AI 服務查詢 Gitee 信息
 Stringresult=giteeAiService.chat("獲取 log4j/pig 開啟的 issue 列表 ");

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

輸出結果示例

無論使用哪種傳輸模式,成功執行后都會得到類似的結果:

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

1. **JDK17 版本中 oauth2.0 的授權碼模式,無法通過 code 獲取到 access_token**
 - 編號: IBQJ94
 - 創建時間: 2025-03-04T1353+08:00
 - 鏈接: [https://gitee.com/log4j/pig/issues/IBQJ94](https://gitee.com/log4j/pig/issues/IBQJ94)

兩種模式的對比

特性 stdio 模式 SSE 模式
部署方式 本地子進程 獨立服務器
適用場景 本地開發 分布式環境
配置復雜度 復雜 簡單
多客戶端支持 不支持 支持
網絡要求 需要網絡連接

總結

通過 Java 與 MCP 的結合,我們可以創建一個功能強大的 Gitee 倉庫助手,實現代碼管理的智能化和自動化。這不僅提高了開發效率,還減少了重復性工作,讓開發者能夠專注于更有創造性的任務。

MCP 提供的 stdio 和 SSE 兩種傳輸模式滿足了不同場景的需求:

? stdio 模式適合本地開發和測試

? SSE 模式適合分布式環境和多客戶端訪問

隨著 AI 技術的不斷發展,MCP 協議的功能也將越來越豐富,為開發者提供更多可能性。希望本文能夠幫助您了解如何使用 Java 玩轉 MCP,打造屬于自己的 AI Gitee 倉庫助手。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2984

    瀏覽量

    106877
  • AI
    AI
    +關注

    關注

    87

    文章

    34256

    瀏覽量

    275399
  • 人工智能
    +關注

    關注

    1804

    文章

    48717

    瀏覽量

    246525
  • 開源
    +關注

    關注

    3

    文章

    3611

    瀏覽量

    43485
  • Git
    Git
    +關注

    關注

    0

    文章

    203

    瀏覽量

    16114

原文標題:Java玩轉MCP:手把手教你打造Git AI倉庫助手

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Git常用的超級實用命令

    的一些Git工作流。 1 Git 常用的超級實用命令 1.1 與倉庫相關的操作 克隆代碼倉庫到本地,開發必用 git clone 查看本地
    的頭像 發表于 10-09 17:19 ?1364次閱讀
    <b class='flag-5'>Git</b>常用的超級實用命令

    Git 常用命令大全

    pull origin --tags上傳本地tag到遠程倉庫:$ git push origin --tags創建帶注釋的tag:$ git tag -a [name] -m 'yo
    發表于 10-11 17:23

    git之推送提交

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

    git簡單使用(一)

    本帖最后由 iysheng 于 2017-2-19 23:09 編輯 編程,經常會修改代碼,不管是將代碼托管到本地還是網上,使用git進行版本控制無疑是比較流行的方法。今天我就記錄下如何創建倉庫
    發表于 02-17 16:18

    Linux 下建立 Git 與 GitHub的連接并clone至本地

    SSH 建立本地 Git 與 GitHub 的連接了。創建GitHub倉庫創建一個名為 baidu 的倉庫↑ SSH 地址為
    發表于 07-09 08:13

    Git學習經驗總結

    創建Git版本倉庫創建一個空目錄mkdir MyGit cd MyGit pwd #顯示當前目錄路徑將普通目錄變成Git版本庫
    發表于 07-12 08:00

    java如何創建對象的分析

    作為Java開發者,我們每天創建很多對象,但我們通常使用依賴管理系統,比如Spring去創建對象。然而這里有很多創建對象的方法,我們會在這篇文章中學到。
    發表于 09-27 14:36 ?0次下載

    GitHub教程 倉庫創建、同步、刪除

    倉庫的使用教程大概會涉及三種方法: 在網頁上進行建立刪除 在GitHub Desktop上操作 在Git Bash上操作 在網頁上直接操作 點進你的交友頁面,右邊紅色的框框repositories
    發表于 01-17 01:48 ?511次閱讀

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

    在 本系列的第一篇文章 開始使用 Git 時,我們創建了一個簡單的 Git 倉庫,并用我們的計算機連接到它,向其中添加一個文件。在本文中,我們將學習一些關于
    的頭像 發表于 06-10 09:06 ?4393次閱讀
    在<b class='flag-5'>Git</b>中如何克隆,修改,添加和刪除文件的詳細資料概述

    如何在GitHub上創建一個全新的Git倉庫詳細講解

    如果您從未使用過 Git,甚至可能從未聽說過它。莫慌張,只需要一步步地跟著這篇入門教程,很快您就會在 GitHub 上擁有一個全新的 Git 倉庫
    的頭像 發表于 06-10 09:13 ?1.4w次閱讀
    如何在GitHub上<b class='flag-5'>創建</b>一個全新的<b class='flag-5'>Git</b><b class='flag-5'>倉庫</b>詳細講解

    Java創建對象有哪些方式

    1 問題 作為Java開發者,經常創建很多對象,你是否知道Java創建對象有哪些方式呢?
    的頭像 發表于 02-24 10:29 ?1238次閱讀

    獲取Git項目倉庫的兩種方式

    /user/my_project $ git init 該命令將創建一個名為 .git 的子目錄,這個子目錄含有你初始化的 Git 倉庫
    的頭像 發表于 07-22 11:05 ?1203次閱讀

    git如何記錄每次更新到倉庫

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

    Git項目遠程倉庫的使用

    遠程倉庫的使用 為了能在任意 Git 項目上協作,你需要知道如何管理自己的遠程倉庫。遠程倉庫是指托管在因特網或其他網絡中的你的項目的版本庫。你可以有好幾個遠程
    的頭像 發表于 07-22 11:31 ?768次閱讀

    idea怎么創建Java項目

    創建Java項目是一個相對較為復雜的過程,需要考慮到各種細節和步驟。本文將詳細介紹如何創建一個Java項目。 一、準備工作 在創建
    的頭像 發表于 12-06 14:09 ?1244次閱讀