亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

一文看懂:MCP(大模型上下文協(xié)議)

liguoquan
2025年6月27日 17:50 本文熱度 660
:一文看懂:MCP(大模型上下文協(xié)議)


?

MCP逐漸被接受,是因?yàn)镸CP是開(kāi)放標(biāo)準(zhǔn)。在AI項(xiàng)目開(kāi)發(fā)中可以發(fā)現(xiàn),集成AI模型復(fù)雜,現(xiàn)有框架如LangChain Tools、LlamaIndex和Vercel AI SDK存在問(wèn)題。LangChain和LlamaIndex代碼抽象高,商業(yè)化過(guò)重;Vercel AI SDK與Nextjs綁定過(guò)深。

MCP的優(yōu)勢(shì):一是開(kāi)放標(biāo)準(zhǔn)利于服務(wù)商開(kāi)發(fā)API,二是避免重復(fù)造輪子,可利用現(xiàn)有MCP服務(wù)增強(qiáng)Agent。

本文部分轉(zhuǎn)自 guangzhengli.com/blog/z

一、什么是MCP(Model Context Protocol)

定義

MCP(Model Context Protocol,模型上下文協(xié)議) ,2024年11月底,由 Anthropic 推出的一種開(kāi)放標(biāo)準(zhǔn),旨在統(tǒng)一大模型與外部數(shù)據(jù)源和工具之間的通信協(xié)議。MCP 的主要目的在于解決當(dāng)前 AI 模型因數(shù)據(jù)孤島限制而無(wú)法充分發(fā)揮潛力的難題,MCP 使得 AI 應(yīng)用能夠安全地訪問(wèn)和操作本地及遠(yuǎn)程數(shù)據(jù),為 AI 應(yīng)用提供了連接萬(wàn)物的接口。

Function Calling是AI模型調(diào)用函數(shù)的機(jī)制,MCP是一個(gè)標(biāo)準(zhǔn)協(xié)議,使大模型與API無(wú)縫交互,而AI Agent是一個(gè)自主運(yùn)行的智能系統(tǒng),利用Function Calling和MCP來(lái)分析和執(zhí)行任務(wù),實(shí)現(xiàn)特定目標(biāo)。

MCP 的價(jià)值

舉個(gè)栗子,在過(guò)去,為了讓大模型等 AI 應(yīng)用使用數(shù)據(jù),要么復(fù)制粘貼,要么上傳知識(shí)庫(kù),非常局限。

即使是最強(qiáng)大模型也會(huì)受到數(shù)據(jù)隔離的限制,形成信息孤島,要做出更強(qiáng)的大模型,每個(gè)新數(shù)據(jù)源都需要自己重新定制實(shí)現(xiàn),使真正互聯(lián)的系統(tǒng)難以擴(kuò)展,存在很多的局限性。

現(xiàn)在,MCP 可以直接在 AI 與數(shù)據(jù)(包括本地?cái)?shù)據(jù)和互聯(lián)網(wǎng)數(shù)據(jù))之間架起一座橋梁,通過(guò) MCP 服務(wù)器和 MCP 客戶(hù)端,大家只要都遵循這套協(xié)議,就能實(shí)現(xiàn)“萬(wàn)物互聯(lián)”。

有了MCP,可以和數(shù)據(jù)和文件系統(tǒng)、開(kāi)發(fā)工具、Web 和瀏覽器自動(dòng)化、生產(chǎn)力和通信、各種社區(qū)生態(tài)能力全部集成,實(shí)現(xiàn)強(qiáng)大的協(xié)作工作能力,它的價(jià)值遠(yuǎn)不可估量。




MCP 與 Function Calling 的區(qū)別

  • MCP(Model Context Protocol),模型上下文協(xié)議

  • Function Calling,函數(shù)調(diào)用

這兩種技術(shù)都旨在增強(qiáng) AI 模型與外部數(shù)據(jù)的交互能力,但 MCP 不止可以增強(qiáng) AI 模型,還可以是其他的應(yīng)用系統(tǒng)。



數(shù)據(jù)安全性

這樣一個(gè)理想的“萬(wàn)物互聯(lián)”生態(tài)系統(tǒng)看著很讓人著迷。

但是大家是不是擔(dān)心通過(guò) MCP Server 暴露出來(lái)的數(shù)據(jù)會(huì)泄露或被非法訪問(wèn),這個(gè)頭疼的問(wèn)題 MCP 也考慮到了。

MCP 通過(guò)標(biāo)準(zhǔn)化的數(shù)據(jù)訪問(wèn)接口,大大減少了直接接觸敏感數(shù)據(jù)的環(huán)節(jié),降低了數(shù)據(jù)泄露的風(fēng)險(xiǎn)。

還有,MCP 內(nèi)置了安全機(jī)制,確保只有經(jīng)過(guò)驗(yàn)證的請(qǐng)求才能訪問(wèn)特定資源,相當(dāng)于在數(shù)據(jù)安全又加上了一道防線。同時(shí),MCP協(xié)議還支持多種加密算法,以確保數(shù)據(jù)在傳輸過(guò)程中的安全性。

例如,MCP 服務(wù)器自己控制資源,不需要將 API 密鑰等敏感信息提供給 LLM 提供商。這樣一來(lái),即使 LLM 提供商受到攻擊,攻擊者也無(wú)法獲取到這些敏感信息。

不過(guò),MCP 這套協(xié)議/標(biāo)準(zhǔn),需要大家一起來(lái)共建,這個(gè)生態(tài)才會(huì)繁榮,現(xiàn)在,只是測(cè)試階段,一切才剛剛開(kāi)始,當(dāng)然,還會(huì)涌現(xiàn)出更多的問(wèn)題。

工作原理

MCP 協(xié)議采用了一種獨(dú)特的架構(gòu)設(shè)計(jì),它將 LLM 與資源之間的通信劃分為三個(gè)主要部分:客戶(hù)端、服務(wù)器和資源。

客戶(hù)端負(fù)責(zé)發(fā)送請(qǐng)求給 MCP 服務(wù)器,服務(wù)器則將這些請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的資源。這種分層的設(shè)計(jì)使得 MCP 協(xié)議能夠更好地控制訪問(wèn)權(quán)限,確保只有經(jīng)過(guò)授權(quán)的用戶(hù)才能訪問(wèn)特定的資源。

以下是 MCP 的基本工作流程:

  • 初始化連接:客戶(hù)端向服務(wù)器發(fā)送連接請(qǐng)求,建立通信通道。

  • 發(fā)送請(qǐng)求:客戶(hù)端根據(jù)需求構(gòu)建請(qǐng)求消息,并發(fā)送給服務(wù)器。

  • 處理請(qǐng)求:服務(wù)器接收到請(qǐng)求后,解析請(qǐng)求內(nèi)容,執(zhí)行相應(yīng)的操作(如查詢(xún)數(shù)據(jù)庫(kù)、讀取文件等)。

  • 返回結(jié)果:服務(wù)器將處理結(jié)果封裝成響應(yīng)消息,發(fā)送回客戶(hù)端。

  • 斷開(kāi)連接:任務(wù)完成后,客戶(hù)端可以主動(dòng)關(guān)閉連接或等待服務(wù)器超時(shí)關(guān)閉。



MCP 核心架構(gòu)

MCP 遵循客戶(hù)端-服務(wù)器架構(gòu)(client-server),其中包含以下幾個(gè)核心概念:

  • MCP 主機(jī)(MCP Hosts):發(fā)起請(qǐng)求的 LLM 應(yīng)用程序(例如 Claude Desktop、IDE 或 AI 工具)。

  • MCP 客戶(hù)端(MCP Clients):在主機(jī)程序內(nèi)部,與 MCP server 保持 1:1 的連接。

  • MCP 服務(wù)器(MCP Servers):為 MCP client 提供上下文、工具和 prompt 信息。

  • 本地資源(Local Resources):本地計(jì)算機(jī)中可供 MCP server 安全訪問(wèn)的資源(例如文件、數(shù)據(jù)庫(kù))。

  • 遠(yuǎn)程資源(Remote Resources):MCP server 可以連接到的遠(yuǎn)程資源(例如通過(guò) API)。



MCP Client

MCP client 充當(dāng) LLM 和 MCP server 之間的橋梁,MCP client 的工作流程如下:

  • MCP client 首先從 MCP server 獲取可用的工具列表。

  • 將用戶(hù)的查詢(xún)連同工具描述通過(guò) function calling 一起發(fā)送給 LLM。

  • LLM 決定是否需要使用工具以及使用哪些工具。

  • 如果需要使用工具,MCP client 會(huì)通過(guò) MCP server 執(zhí)行相應(yīng)的工具調(diào)用。

  • 工具調(diào)用的結(jié)果會(huì)被發(fā)送回 LLM。

  • LLM 基于所有信息生成自然語(yǔ)言響應(yīng)。

  • 最后將響應(yīng)展示給用戶(hù)。

Claude Desktop 和Cursor都支持了MCP Server接入能力,它們就是作為 MCP client來(lái)連接某個(gè)MCP Server感知和實(shí)現(xiàn)調(diào)用。


MCP Server

MCP server 是 MCP 架構(gòu)中的關(guān)鍵組件,它可以提供 3 種主要類(lèi)型的功能:

  • 資源(Resources):類(lèi)似文件的數(shù)據(jù),可以被客戶(hù)端讀取,如 API 響應(yīng)或文件內(nèi)容。

  • 工具(Tools):可以被 LLM 調(diào)用的函數(shù)(需要用戶(hù)批準(zhǔn))。

  • 提示(Prompts):預(yù)先編寫(xiě)的模板,幫助用戶(hù)完成特定任務(wù)。

這些功能使 MCP server 能夠?yàn)?AI 應(yīng)用提供豐富的上下文信息和操作能力,從而增強(qiáng) LLM 的實(shí)用性和靈活性。

你可以在 MCP Servers Repository 和 Awesome MCP Servers 這兩個(gè) repo 中找到許多由社區(qū)實(shí)現(xiàn)的 MCP server。使用 TypeScript 編寫(xiě)的 MCP server 可以通過(guò) npx 命令來(lái)運(yùn)行,使用 Python 編寫(xiě)的 MCP server 可以通過(guò) uvx 命令來(lái)運(yùn)行。


通信機(jī)制

MCP 協(xié)議支持兩種主要的通信機(jī)制:基于標(biāo)準(zhǔn)輸入輸出的本地通信和基于SSEServer-Sent Events)的遠(yuǎn)程通信。

這兩種機(jī)制都使用 JSON-RPC 2.0 格式進(jìn)行消息傳輸,確保了通信的標(biāo)準(zhǔn)化和可擴(kuò)展性。

  • 本地通信通過(guò) stdio 傳輸數(shù)據(jù),適用于在同一臺(tái)機(jī)器上運(yùn)行的客戶(hù)端和服務(wù)器之間的通信。

  • 遠(yuǎn)程通信利用 SSE 與 HTTP 結(jié)合,實(shí)現(xiàn)跨網(wǎng)絡(luò)的實(shí)時(shí)數(shù)據(jù)傳輸,適用于需要訪問(wèn)遠(yuǎn)程資源或分布式部署的場(chǎng)景。

二、MCP的功能與應(yīng)用:

如何使用 MCP

如果你還沒(méi)有嘗試過(guò)如何使用 MCP 的話,我們可以考慮用 Cursor(本人只嘗試過(guò) Cursor),Claude Desktop 或者 Cline 來(lái)體驗(yàn)一下。

當(dāng)然,我們并不需要自己開(kāi)發(fā) MCP Servers,MCP 的好處就是通用、標(biāo)準(zhǔn),所以開(kāi)發(fā)者并不需要重復(fù)造輪子(但是學(xué)習(xí)可以重復(fù)造輪子)。

首先推薦的是官方組織的一些 Server:官方的 MCP Server 列表。

目前社區(qū)的 MCP Server 還是比較混亂,有很多缺少教程和文檔,很多的代碼功能也有問(wèn)題,我們可以自行嘗試一下 Cursor Directory 的一些例子,具體的配置和實(shí)戰(zhàn)筆者就不細(xì)講了,大家可以參考官方文檔。

MCP的功能

MCP通過(guò)引入多樣化的MCP Server能力,顯著增強(qiáng)了AI工具的功能,例如我們常用的Cursor和Claude。以下是一些官方參考服務(wù)器,展示了MCP的核心功能和SDK的應(yīng)用:

數(shù)據(jù)與文件系統(tǒng):

文件系統(tǒng):提供安全文件操作,帶可配置的訪問(wèn)控制。

PostgreSQL:提供只讀數(shù)據(jù)庫(kù)訪問(wèn),具備架構(gòu)檢查功能。

SQLite:支持?jǐn)?shù)據(jù)庫(kù)交互和商業(yè)智能功能。

Google Drive:實(shí)現(xiàn)Google Drive的文件訪問(wèn)和搜索功能。

開(kāi)發(fā)工具:

Git:工具用于讀取、搜索和操作Git倉(cāng)庫(kù)。

GitHub:集成倉(cāng)庫(kù)管理、文件操作和GitHub API。

GitLab:支持項(xiàng)目管理的GitLab API集成。

Sentry:從Sentry.io獲取并分析問(wèn)題。

網(wǎng)絡(luò)與瀏覽器自動(dòng)化:

Brave Search:利用Brave的搜索API進(jìn)行網(wǎng)絡(luò)和本地搜索。

Fetch:為L(zhǎng)LM優(yōu)化的網(wǎng)絡(luò)內(nèi)容獲取和轉(zhuǎn)換。

Puppeteer:提供瀏覽器自動(dòng)化和網(wǎng)頁(yè)抓取功能。

生產(chǎn)力和通信:

Slack:支持頻道管理和消息功能。

Google Maps:提供位置服務(wù)、路線和地點(diǎn)詳情。

Memory:基于知識(shí)圖譜的持久記憶系統(tǒng)。

AI與專(zhuān)業(yè)工具:

EverArt:使用多種模型進(jìn)行AI圖像生成。

Sequential Thinking:通過(guò)思維序列進(jìn)行動(dòng)態(tài)問(wèn)題解決。

AWS KB Retrieval:使用Bedrock Agent Runtime從AWS知識(shí)庫(kù)檢索。

官方集成工具:

這些MCP服務(wù)器由公司維護(hù),用于其平臺(tái):

Axiom:使用自然語(yǔ)言查詢(xún)和分析日志、跟蹤和事件數(shù)據(jù)。

Browserbase:云端自動(dòng)化瀏覽器交互。

Cloudflare:在Cloudflare開(kāi)發(fā)者平臺(tái)上部署和管理資源。

E2B:在安全的云沙箱中執(zhí)行代碼。

Neon:與Neon無(wú)服務(wù)器Postgres平臺(tái)交互。

Obsidian Markdown Notes:讀取和搜索Obsidian知識(shí)庫(kù)中的Markdown筆記。

Qdrant:使用Qdrant向量搜索引擎實(shí)現(xiàn)語(yǔ)義記憶。

Raygun:訪問(wèn)崩潰報(bào)告和監(jiān)控?cái)?shù)據(jù)。

Search1API:統(tǒng)一的API用于搜索、爬蟲(chóng)和網(wǎng)站地圖。

Tinybird:與Tinybird無(wú)服務(wù)器ClickHouse平臺(tái)交互。

集成工具:

Docker:管理容器、鏡像、卷和網(wǎng)絡(luò)。

Kubernetes:管理pod、部署和服務(wù)。

Linear:項(xiàng)目管理和問(wèn)題跟蹤。

Snowflake:與Snowflake數(shù)據(jù)庫(kù)交互。

Spotify:控制Spotify播放和管理播放列表。

Todoist:任務(wù)管理集成。


三、怎么使用和開(kāi)發(fā)MCP Server

使用

目前支持的部分工具列表(更多見(jiàn)這里):


客戶(hù)端資源提示工具采樣根目錄備注
Claude 桌面應(yīng)用?????所有MCP 功能
Zed?????提示以斜杠命令形式出現(xiàn)
Sourcegraph Cody?????通過(guò)OpenCTX 支持資源
Firebase Genkit??????支持資源列表和查找
Continue?????支持所有MCP功能
GenAIScript?????支持工具
Cursor?????支持工具


Claude Desktop 使用示例

以 Claude Desktop 為例,配置 MCP 客戶(hù)端的步驟如下:

  1. 安裝 Claude Desktop: 確保已在 macOS 或 Windows 系統(tǒng)上安裝最新版本的 Claude Desktop。

  2. 配置 MCP 服務(wù)器: 在 Claude Desktop 的配置文件中,配置入口Claude Desktop—>菜單—>Settings—>Developer—>Edit Config:


添加所需的 MCP 服務(wù)器信息,例如:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
    }
  }
}

這里的@modelcontextprotocol/server-filesystem、mcp-server-git是對(duì)應(yīng)的一些MCP Server,可以是開(kāi)源找來(lái)的,也可以是你自己開(kāi)發(fā)的。

配置完后,在主界面對(duì)話題右下角就有個(gè)錘子出現(xiàn)了,有幾個(gè)錘子就是配置幾個(gè),然后對(duì)話中如果涉及使用該工具的,claude就會(huì)自動(dòng)調(diào)用




Cursor中 使用示例

Cursor工具中集成mcp server功能對(duì)開(kāi)發(fā)增加效率非常明顯,配置入口在:文件—>首選項(xiàng)—>Cursor Settings—>Features—>MCP Server—>Add new MCP Server



配置完后,你需要畫(huà)圖的地方給它提要求就行了,它會(huì)自動(dòng)感知,按上下文生成prompt并調(diào)用工具生成圖片:



生成的圖片質(zhì)量還不錯(cuò),符合開(kāi)發(fā)需要的圖片



MCP 如何工作

那我們來(lái)介紹一下 MCP 的工作原理。首先我們看一下官方的 MCP 架構(gòu)圖



總共分為了下面五個(gè)部分:

  • MCP Hosts: Hosts 是指 LLM 啟動(dòng)連接的應(yīng)用程序,像 Cursor, Claude Desktop、Cline 這樣的應(yīng)用程序。

  • MCP Clients: 客戶(hù)端是用來(lái)在 Hosts 應(yīng)用程序內(nèi)維護(hù)與 Server 之間 1:1 連接。

  • MCP Servers: 通過(guò)標(biāo)準(zhǔn)化的協(xié)議,為 Client 端提供上下文、工具和提示。

  • Local Data Sources: 本地的文件、數(shù)據(jù)庫(kù)和 API。

  • Remote Services: 外部的文件、數(shù)據(jù)庫(kù)和 API。

整個(gè) MCP 協(xié)議核心的在于 Server,因?yàn)?Host 和 Client 相信熟悉計(jì)算機(jī)網(wǎng)絡(luò)的都不會(huì)陌生,非常好理解,但是 Server 如何理解呢?

看看 Cursor 的 AI Agent 發(fā)展過(guò)程,我們會(huì)發(fā)現(xiàn)整個(gè) AI 自動(dòng)化的過(guò)程發(fā)展會(huì)是從 Chat 到 Composer 再進(jìn)化到完整的 AI Agent。

AI Chat 只是提供建議,如何將 AI 的 response 轉(zhuǎn)化為行為和最終的結(jié)果,全部依靠人類(lèi),例如手動(dòng)復(fù)制粘貼,或者進(jìn)行某些修改。

AI Composer 是可以自動(dòng)修改代碼,但是需要人類(lèi)參與和確認(rèn),并且無(wú)法做到除了修改代碼之外的其它操作。

AI Agent 是一個(gè)完全的自動(dòng)化程序,未來(lái)完全可以做到自動(dòng)讀取 Figma 的圖片,自動(dòng)生產(chǎn)代碼,自動(dòng)讀取日志,自動(dòng)調(diào)試代碼,自動(dòng) push 代碼到 GitHub。

而 MCP Server 就是為了實(shí)現(xiàn) AI Agent 的自動(dòng)化而存在的,它是一個(gè)中間層,告訴 AI Agent 目前存在哪些服務(wù),哪些 API,哪些數(shù)據(jù)源,AI Agent 可以根據(jù) Server 提供的信息來(lái)決定是否調(diào)用某個(gè)服務(wù),然后通過(guò) Function Calling 來(lái)執(zhí)行函數(shù)。

MCP Server 的工作原理

我們先來(lái)看一個(gè)簡(jiǎn)單的例子,假設(shè)我們想讓 AI Agent 完成自動(dòng)搜索 GitHub Repository,接著搜索 Issue,然后再判斷是否是一個(gè)已知的 bug,最后決定是否需要提交一個(gè)新的 Issue 的功能。

那么我們就需要?jiǎng)?chuàng)建一個(gè) Github MCP Server,這個(gè) Server 需要提供查找 Repository、搜索 Issues 和創(chuàng)建 Issue 三種能力。

我們直接來(lái)看看代碼:

const server = new Server(
  {
    name: "github-mcp-server",
    version: VERSION,
  },
  {
    capabilities: {
      tools: {},
    },
  }
);
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [
      {
        name: "search_repositories",
        description: "Search for GitHub repositories",
        inputSchema: zodToJsonSchema(repository.SearchRepositoriesSchema),
      },
      {
        name: "create_issue",
        description: "Create a new issue in a GitHub repository",
        inputSchema: zodToJsonSchema(issues.CreateIssueSchema),
      },
      {
        name: "search_issues",
        description: "Search for issues and pull requests across GitHub repositories",
        inputSchema: zodToJsonSchema(search.SearchIssuesSchema),
      }
    ],
  };
});
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  try {
    if (!request.params.arguments) {
      throw new Error("Arguments are required");
    }
    switch (request.params.name) {
      case "search_repositories": {
        const args = repository.SearchRepositoriesSchema.parse(request.params.arguments);
        const results = await repository.searchRepositories(
          args.query,
          args.page,
          args.perPage
        );
        return {
          content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
        };
      }
      case "create_issue": {
        const args = issues.CreateIssueSchema.parse(request.params.arguments);
        const { owner, repo, ...options } = args;
        const issue = await issues.createIssue(owner, repo, options);
        return {
          content: [{ type: "text", text: JSON.stringify(issue, null, 2) }],
        };
      }
      case "search_issues": {
        const args = search.SearchIssuesSchema.parse(request.params.arguments);
        const results = await search.searchIssues(args);
        return {
          content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
        };
      }
      default:
        throw new Error(`Unknown tool: ${request.params.name}`);
    }
  } catch (error) {}
});
async function runServer() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error("GitHub MCP Server running on stdio");
}
runServer().catch((error) => {
  console.error("Fatal error in main():", error);
  process.exit(1);
});

上面的代碼中,我們通過(guò) server.setRequestHandler 來(lái)告訴 Client 端我們提供了哪些能力,通過(guò) description 字段來(lái)描述這個(gè)能力的作用,通過(guò) inputSchema 來(lái)描述完成這個(gè)能力需要的輸入?yún)?shù)。

我們?cè)賮?lái)看看具體的實(shí)現(xiàn)代碼:

export const SearchOptions = z.object({
  q: z.string(),
  order: z.enum(["asc", "desc"]).optional(),
  page: z.number().min(1).optional(),
  per_page: z.number().min(1).max(100).optional(),
});
export const SearchIssuesOptions = SearchOptions.extend({
  sort: z.enum([
    "comments",
    ...
  ]).optional(),
});
export async function searchUsers(params: z.infer<typeof SearchUsersSchema>) {
  return githubRequest(buildUrl("https://api.github.com/search/users", params));
}
export const SearchRepositoriesSchema = z.object({
  query: z.string().describe("Search query (see GitHub search syntax)"),
  page: z.number().optional().describe("Page number for pagination (default: 1)"),
  perPage: z.number().optional().describe("Number of results per page (default: 30, max: 100)"),
});
export async function searchRepositories(
  query: string,
  page: number = 1,
  perPage: number = 30
) {
  const url = new URL("https://api.github.com/search/repositories");
  url.searchParams.append("q", query);
  url.searchParams.append("page", page.toString());
  url.searchParams.append("per_page", perPage.toString());
  const response = await githubRequest(url.toString());
  return GitHubSearchResponseSchema.parse(response);
}

可以很清晰的看到,我們最終實(shí)現(xiàn)是通過(guò)了 https://api.github.com 的 API 來(lái)實(shí)現(xiàn)和 Github 交互的,我們通過(guò) githubRequest 函數(shù)來(lái)調(diào)用 GitHub 的 API,最后返回結(jié)果。

在調(diào)用 Github 官方的 API 之前,MCP 的主要工作是描述 Server 提供了哪些能力(給 LLM 提供),需要哪些參數(shù)(參數(shù)具體的功能是什么),最后返回的結(jié)果是什么。

所以 MCP Server 并不是一個(gè)新穎的、高深的東西,它只是一個(gè)具有共識(shí)的協(xié)議。

如果我們想要實(shí)現(xiàn)一個(gè)更強(qiáng)大的 AI Agent,例如我們想讓 AI Agent 自動(dòng)的根據(jù)本地錯(cuò)誤日志,自動(dòng)搜索相關(guān)的 GitHub Repository,然后搜索 Issue,最后將結(jié)果發(fā)送到 Slack。

那么我們可能需要?jiǎng)?chuàng)建三個(gè)不同的 MCP Server,一個(gè)是 Local Log Server,用來(lái)查詢(xún)本地日志;一個(gè)是 GitHub Server,用來(lái)搜索 Issue;還有一個(gè)是 Slack Server,用來(lái)發(fā)送消息。

AI Agent 在用戶(hù)輸入 我需要查詢(xún)本地錯(cuò)誤日志,將相關(guān)的 Issue 發(fā)送到 Slack 指令后,自行判斷需要調(diào)用哪些 MCP Server,并決定調(diào)用順序,最終根據(jù)不同 MCP Server 的返回結(jié)果來(lái)決定是否需要調(diào)用下一個(gè) Server,以此來(lái)完成整個(gè)任務(wù)。

參考資源

下面是個(gè)人推薦的一些 MCP 的資源,大家可以參考一下。

MCP 官方資源

社區(qū)的 MCP Server 的列表


該文章在 2025/6/27 17:50:40 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved