成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MCP或將成為AI界的HTTP? 原創

發布于 2025-5-21 08:24
瀏覽
0收藏

本文將向你詳細介紹什么是MCP(模型上下文協議),如何構建一個基礎的MCP服務器,及其工作原理。?

由Claude 人工智能(AI)模型家族背后的公司--Anthropic推出的通信協議MCP(模型上下文協議,Model Context Protocol)可謂2025年的流行協議。目前,包括Google和OpenAI在內的幾乎所有主要AI公司都接受了MCP,并使之正在成為AI模型的標準化通信方式。

下面,我將向你詳細介紹什么是MCP,如何構建一個基礎的MCP服務器,及其工作原理。

什么是MCP?

MCP,又名AI模型上下文協議,是AI模型與外部工具和應用通信的標準化方式。和HTTP、以及TCP等其他協議類似,它是一種協議、一種通信方式、也是一套規則。

由于MCP遵循客戶端-服務器的架構,因此我們通常需要兩個構建塊,來實現MCP客戶端和MCP服務器的通信,即:

  • MCP客戶端:主要使用模型上下文協議與MCP服務器對話。你可以將其視為一種工具,可用來啟動與MCP服務器的連接,與支持MCP的AI模型進行交互。?
  • MCP服務器:主要處理來自AI模型(即MCP客戶端)的請求,并將其映射到服務器中預定義的適當任務中。也就是說,MCP服務器定義了AI模型在服務器與工具上執行哪些操作,以及它可以訪問哪些資源。你可以把它想象成一個映射器,將各種請求映射為適當的操作。具體而言,當我向支持MCP的AI工具(例如Claude Desktop)發送提示詞時,MCP客戶端會將其轉到AI模型(例如Claude),AI模型據此思考如何繼續處理請求,并探索所有可用的工具和資源,然后它將決定使用哪些工具與資源,并告訴MCP客戶端如何與外部MCP服務器交流,以獲取并執行這些工具與資源。一旦MCP客戶端從MCP服務器處獲得了響應,它會將該數據發送給AI模型,而AI模型將以人類可讀的方式重組并呈現數據。具體流程請參見下圖。

MCP或將成為AI界的HTTP?-AI.x社區

圖片來源:https://syntackle.com/blog/model-context-protocol/

為何需要MCP?

你也許會問,MCP與我們常用的API有何區別呢?其實,作為一個AI模型,如果我想連接到外部工具或應用的話,只需為其構建一個API,以便AI模型與對應的工具或應用通信即可。不過,請注意,這類API往往特定于某些工具或應用。如果我想讓AI模型使用其他的工具,就必須額外再構建一個自定義的API。顯然,到頭來,我需要構建的API數量將與AI模型使用的工具及應用的數量成比上升。而對于AI公司而言,這將增加大量的構建和管理成本。而這恰恰是Anthropic發揮作用的地方。

Anthropic創建了一個與AI模型和工具無關的通用協議。這意味著,任何支持該協議的AI模型都可以與任何支持該協議的外部工具/應用進行通信。據此,AI模型提供商只需要支持MCP,便可與任何也支持MCP的外部工具進行通信。實際上,他們所做的是將構建API的任務轉移到了開發者社區(例如各種外部工具和應用),讓MCP與應用集成的任務成為應用開發人員的工作,而不是AI模型提供商的工作。這對于雙方來說都是雙贏的,畢竟他們只需要維護一個接口,即MCP。

MCP或將成為AI界的HTTP?-AI.x社區

圖片來源:https://syntackle.com/blog/model-context-protocol/

不僅如此,第三方MCP服務器也可以為給定的應用進行構建。這鼓勵了開發者社區使用AI在現有應用的基礎上構建新的方案,而無需了解AI模型或平臺的具體內容;且反之亦然。

如何構建 MCP 服務器

MCP服務器包括三個組件:

  • 工具:用于執行各項功能性操作,實現類似于HTTP的PUT/PATCH/DELETE請求。?
  • 資源:提供MCP 客戶端可讀取的數據。實現類似于HTTP的GET請求。?
  • 預定義的提示:各種可供LLM使用的提示模板。MCP服務器通常可以由Python、Node、Java、Kotlin和C#來構建。在下文中,我將使用Node(TypeScript)來構建一個基本的MCP服務器。

安裝MCP SDK和應用

請使用npm init -y來初始化Node應用。然后,根據你的編程語言或框架,安裝適當的SDK。在本例中,我使用的是:

npm install @modelcontextprotocol/sdk

并且,通過修改package.json文件來實現:

  • 讓Node應用成為一個模塊。?
  • 使用bin腳本在bin文件夾中包含一個可執行文件。?
  • 在build腳本中設置可執行文件的權限。如有必要,請包含一個files腳本,來定義在最終構建中包含哪些文件:
{
"name": "mcp-demo",
"version": "1.0.0",
"type": "module",
"bin": {
"mcp-demo": "./dist/index.js"
},
"scripts": {
"ts": "npx tsc",
"rootFile": "chmod 755 ./dist/index.js",
"build": "npm-run-all -s ts rootFile"
},
"files": [ "dist" ],
"dependencies": {
"@modelcontextprotocol/sdk": "^1.10.1",
"npm-run-all": "^4.1.5",
"typescript": "^5.8.3"
}
}

在此,我建議在項目文件夾的根目錄處,創建一個tsconfig.json文件,具體內容如下:

{
"compilerOptions": {
"target": "ES2022",
"module": "Node16",
"moduleResolution": "Node16",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}

創建 MCP 服務器實例

接著,請創建一個src文件夾,并在該文件夾中創建一個index.ts文件。當然,你也可以自定義不同的文件夾結構,但請確保相應地更新到package.json和tsconfig.json的對應位置。

// index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({
 name: "mcp-demo",
 version: "1.0.0",
 capabilities: {
 resources: {},
 tools: {},
 prompts: {},
 }
});
const transport = new StdioServerTransport();
await server.connect(transport);
console.log("Server started and connected to transport.");

MCP服務器需要設定一種傳輸類型,才能與MCP客戶端通信。這便是使用stdio傳輸類型的原因。請注意,該傳輸類型僅在Node中可用。

配置 MCP 客戶端

在本例中,我正在使用??Claude Desktop App?作為MCP客戶端來與MCP服務器通信。當然,你也可以使用任何自己喜歡的MCP客戶端。?

首先,我需要告知Claude Desktop自己的MCP服務器,并提供一條可以找到它的路徑。為此,我需要修改Claude Desktop的配置文件。該文件存在于以下不同操作系統的路徑中:

  • MacOS和Linux:~/Library/Application\ Support/Claude/claude_desktop_config.json?
  • Windows:AppData\Claude\claude_desktop_config.json?請在終端上使用VSCode打開該文件:?
  • MacOS和Linux:code ~/Library/Application\Support/Claude/claude_desktop_config.json?
  • Windows:code $env:AppData\Claude\claude_desktop_config.json?然后,在你獲取了訪問該文件的權限后,請參照如下方式添加你的MCP服務器:
{?
"mcpServers": {?
"mcp-demo": {?
"command": "node",?
"args": [?
"/Users/murtuzaalisurti/Documents/Development/MCP Servers/demo/dist/index.js", // absolute path to your MCP server build?
]?
}?
}?
}?
  • 請保存文件并重新啟動Claude Desktop。?
  • 如果你遇到了錯誤,請轉到Claude App Settings > Developer > Logs。?
  • 如果MCP服務器在Claude Desktop中被正確配置和注冊,那么你將可以通過轉到Claude App Settings > Developer > [MCP Server Name]來驗證MCP服務器的狀態(如下圖所示應為running狀態)。

使用MCP服務器

在Claude Desktop中,連接上MCP服務器后,如果你在MCP服務器中定義了資源,你可以看到一個插頭的圖標。它允許你將這些資源中的數據附加到AI模型的上下文中。

MCP或將成為AI界的HTTP?-AI.x社區

Claude Desktop應用的mcp資源上下文圖標(插頭圖標)

MCP或將成為AI界的HTTP?-AI.x社區

點擊Claude Desktop應用的mcp資源上下文圖標(插入圖標)

一旦你將資源附加到聊天上下文中,并告訴Claude用正常人類語言檢索該信息,它便可以提供如下互動:

MCP或將成為AI界的HTTP?-AI.x社區

在Claude Desktop中將mcp資源附加到聊天的上下文中

如果你在MCP服務器中定義了tools,你將在Claude Desktop中看到一個錘子圖標,并能顯示可用的工具。

MCP或將成為AI界的HTTP?-AI.x社區

在Claude Desktop中將mcp工具附加到聊天上下文中

例如,我在自己的MCP服務器中添加了一個修改用戶年齡的工具,并將其與現有的資源結合使用,該資源能夠為Claude提供用戶列表。請注意,你需要將這些資源附加到聊天的上下文中。當然,Claude需要征得你的許可,方可修改數據。

const users = [
 { name: "Alice", age: 30 },
 { name: "Bob", age: 25 },
 { name: "Charlie", age: 35 }
]
server.tool(
 "modify-user-age",
 "Modify user age",
 {
 name: z.string(), // install zod: npm i zod
 age: z.number(),
 },
 ({ name, age }) => {
 const user = users.find(user => user.name === name);
 if (!user) {
 return {
 content: [{
 type: "text",
 text: `User ${name} not found`,
 }]
 } 
 }
 user.age = age;
 return {
 content: [{
 type: "text",
 text: `User ${name} updated to age ${age}`,
 }]
 }
 },
)

MCP或將成為AI界的HTTP?-AI.x社區

通過請求權限在Claude Desktop中將mcp服務器資源和工具一起使用

MCP或將成為AI界的HTTP?-AI.x社區

在Claude Desktop中一起使用mcp服務器資源和工具

在將資源附加到聊天上下文后,如果我再次要求它獲取用戶列表,Claude就會使用更新的數據進行響應了。

MCP或將成為AI界的HTTP?-AI.x社區

在Claude Desktop中使用mcp服務器資源和工具,獲取更新的用戶列表

這就是我構建一個基本而簡單的MCP服務器,并將其與Claude Desktop(MCP客戶端)集成。

MCP 服務器列表

以下是你可以試用的MCP服務器詳盡列表:

如果你想探索更多的MCP服務器,請查看如下MCP服務器目錄,其中包含了各種社區和官方的MCP服務器。?

小結

有人將MCP稱為AI領域的“USB-C”、也有人稱之為AI界的HTTP,顯然它比HTTP更復雜。盡管MCP并不能解決每個AI模型的通信問題,但是它肯定會使之變得更容易。隨著MCP的出現,其他協議,如A2A(代理對代理協議)也開始被使用,并使得由不同框架構建的AI代理之間的通信變得更加容易。可見,MCP只是AI通信協議的開始,我們將能看到一些更強大、更好用、更注重隱私的AI協議的涌現。

譯者介紹

陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。

原文標題:?Anthropic’s New Protocol Wants to Be the HTTP of AI??,作者:Murtuza

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 一区日韩 | 羞羞视频网站免费观看 | 成年人在线观看视频 | 97国产一区二区 | 亚洲精品一区在线 | 久久免费看 | 欧美国产中文 | 国产高清视频 | 91亚洲精选| 亚洲一区二区三区在线视频 | 在线观看中文字幕av | 欧美成人精品激情在线观看 | 久久蜜桃av一区二区天堂 | 日本成人中文字幕 | 玖玖综合在线 | 国产精品一级在线观看 | 中文字幕一级毛片视频 | 手机在线一区二区三区 | 91色视频在线观看 | 午夜精品一区二区三区在线观看 | 成人免费视频网站在线观看 | 欧美成人精品一区 | 成人精品视频在线观看 | 91久久精品国产 | 性色的免费视频 | 在线色网址| 国产91丝袜在线播放 | 欧美在线日韩 | www.久久久久久久久久久 | 日韩成人免费在线视频 | 精品精品 | 久久综合久久久 | xxxxx黄色片 欧美一区免费 | 日韩三级精品 | 日韩精品成人免费观看视频 | 在线视频亚洲 | 亚洲va国产日韩欧美精品色婷婷 | 毛片免费在线 | 91精品国产乱码久久久久久久久 | 香蕉婷婷 | 中文字幕高清av |