AI在线 AI在线

MCP或将成为AI界的HTTP​

译者 | 陈峻审校 | 重楼由Claude 人工智能(AI)模型家族背后的公司--Anthropic推出的通信协议MCP(模型上下文协议,Model Context Protocol)可谓2025年的流行协议。 目前,包括Google和OpenAI在内的几乎所有主要AI公司都接受了MCP,并使之正在成为AI模型的标准化通信方式。 下面,我将向你详细介绍什么是MCP,如何构建一个基础的MCP服务器,及其工作原理。

MCP或将成为AI界的HTTP​

译者 | 陈峻

审校 | 重楼

由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​

图片来源: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​

图片来源: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​

Claude Desktop应用的mcp资源上下文图标(插头图标)

MCP或将成为AI界的HTTP​

点击Claude Desktop应用的mcp资源上下文图标(插入图标)

一旦你将资源附加到聊天上下文中,并告诉Claude用正常人类语言检索该信息,它便可以提供如下互动:

MCP或将成为AI界的HTTP​

在Claude Desktop中将mcp资源附加到聊天的上下文中

如果你在MCP服务器中定义了tools,你将在Claude Desktop中看到一个锤子图标,并能显示可用的工具。

MCP或将成为AI界的HTTP​

在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​

通过请求权限在Claude Desktop中将mcp服务器资源和工具一起使用

MCP或将成为AI界的HTTP​

在Claude Desktop中一起使用mcp服务器资源和工具

在将资源附加到聊天上下文后,如果我再次要求它获取用户列表,Claude就会使用更新的数据进行响应了。

MCP或将成为AI界的HTTP​

在Claude Desktop中使用mcp服务器资源和工具,获取更新的用户列表

这就是我构建一个基本而简单的MCP服务器,并将其与Claude Desktop(MCP客户端)集成。

MCP 服务器列表

以下是你可以试用的MCP服务器详尽列表:

  • Git MCP
  • GitHub MCP
  • Google Maps MCP
  • Reddit MCP
  • Blender MCP
  • Da Vinci Resolve MCP
  • Google Drive MCP
  • Figma MCP
  • Prisma MCP
  • GitLab MCP
  • FileSystem MCP
  • Slack MCP
  • Brave Search MCP
  • SQLite MCP

如果你想探索更多的MCP服务器,请查看如下MCP服务器目录,其中包含了各种社区和官方的MCP服务器。

  • Glama
  • Cursor MCP Directory
  • HuggingFace MCP Server List
  • punkpeye/awesome-mcp-servers
  • modelcontextprotocol MCP server list
  • MCP.so

小结

有人将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

相关资讯

mcp-agent发布:轻量级框架助力智能体应用高效构建

mcp-agent正式发布,作为一款基于模型上下文协议(MCP)的轻量级框架,旨在为开发者提供一个简化的智能体应用构建解决方案。 该框架不仅能够与其他MCP服务无缝集成,还具备高度的可组合性和可定制性,使得开发者能够更专注于核心业务逻辑的实现,而无需过多关注复杂的系统架构。 mcp-agent的设计理念是简洁而高效,它去除了传统框架中多余的模块,提供了一个轻量级的代理模式库。
4/21/2025 12:00:58 PM
AI在线

一文读懂:模型上下文协议(MCP)

Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活的计算架构的模型上下文协议(MCP)。 随着人工智能迈向更复杂的应用场景,单一模型的局限性逐渐显现,而多模型协同与上下文感知的需求日益迫切。 从对话系统需要理解用户的历史语境,到跨模态任务要求无缝整合文本、图像等多源数据,AI 的发展正呼唤一种全新的协作范式。
3/18/2025 9:10:00 AM
架构驿站

模型上下文协议(MCP)开发实战——构建LangChain代理客户端

译者 | 朱先忠审校 | 重楼简介什么是模型上下文协议(Model Context Protocol)? 让我们深入了解MCP背后的概念。 以下是官方MCP文档对MCP的介绍:“MCP是一种开放协议,它标准化了应用程序向LLM提供上下文的方式。
4/1/2025 8:38:25 AM
朱先忠
  • 1