维护咨询 大模型部署 问题解决 技能定制 大模型训练
MCP(Model Context Protocol)是2024年诞生的AI插件标准,由Anthropic主导开发。它的目标很简单:让AI模型能连接任何外部数据源和工具,而不需要为每个数据源写专门的代码。
简单说,MCP就是AI世界的USB接口——统一的、标准化的、即插即用的。
## 为什么需要MCP
在没有MCP的时代,AI想访问外部数据,需要这样做:
AI想查数据库 → 写一个数据库连接插件
AI想读文件 → 写一个文件系统插件
AI想调用API → 写一个API适配器
每换一个数据源 → 重新开发一次
插件五花八门,没有统一标准,不同AI平台互不兼容。开发者累死,生态碎片化。
MCP出现之后:
AI想查数据库 → 插上MCP数据库服务器
AI想读文件 → 插上MCP文件系统服务器
AI想调用API → 插上MCP API服务器
换数据源?拔掉旧的,插上新的。
一次开发,处处可用。
—
## MCP的工作原理
MCP采用客户端-服务器架构,分为三部分:
MCP Host(宿主)
使用AI的应用,比如Hermes Agent、Claude Desktop。它是用户直接操作的界面。
MCP Client(客户端)
运行在Host里的客户端,跟Server保持1:1连接。它负责把AI的请求转发给Server,再把Server的响应转回给AI。
MCP Server(服务器)
提供特定能力的轻量级服务。比如 filesystem-server 提供文件操作能力,postgres-server 提供数据库操作能力。
通信使用JSON-RPC 2.0 over stdio(本地)或HTTP+SSE(远程)。
—
## MCP的核心能力
MCP Server暴露三类能力:
Tools(工具)
AI可以调用的函数。比如查询数据库、发送邮件、调用第三方API。
// 工具定义示例
{
name: "send_email",
description: "发送邮件",
inputSchema: {
type: "object",
properties: {
to: { type: "string" },
subject: { type: "string" },
body: { type: "string" }
}
}
}
Resources(资源)
AI可以读取的数据。比如数据库schema、文件内容、配置信息。
// 资源定义示例
{
uri: "postgres://schema/public/users",
name: "users表结构",
mimeType: "application/json"
}
Prompts(提示模板)
预定义的提示词,用于特定场景。
// 提示模板示例
{
name: "debug_sql",
description: "调试SQL查询",
arguments: [
{ name: "query", description: "SQL查询语句" }
]
}
—
## Hermes Agent的MCP支持
Hermes Agent内置了MCP客户端,可以连接任何MCP Server。
配置MCP Server:
在config.yaml里添加:
# config.yaml
mcp:
servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
postgres:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost/db"]
slack:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-slack"]
env:
SLACK_BOT_TOKEN: "xoxb-your-token"
SLACK_TEAM_ID: "T0123456789"
启动后AI会自动发现可用工具:
启动后AI会自动发现可用的MCP工具,直接调用。
—
## 常用MCP Server推荐
文件系统(官方)
npx -y @modelcontextprotocol/server-filesystem /path/to/directory
让AI读写指定目录的文件。
PostgreSQL(官方)
npx -y @modelcontextprotocol/server-postgres postgresql://user:pass@localhost/db
让AI查询和操作PostgreSQL数据库。
Slack(官方)
npx -y @modelcontextprotocol/server-slack
让AI读取频道消息、发送消息。
GitHub(社区)
npx -y @modelcontextprotocol/server-github
让AI操作GitHub仓库、Issues、PRs。
Brave Search(官方)
npx -y @modelcontextprotocol/server-brave-search
让AI用Brave搜索网页。
—
## 开发自己的MCP Server
如果你有特殊需求,可以开发自己的MCP Server:
# 安装MCP SDK
npm install @modelcontextprotocol/sdk
# server.ts
import { Server } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "my-custom-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "my_tool",
description: "我的自定义工具",
inputSchema: {
type: "object",
properties: {
input: { type: "string" }
}
}
}]
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "my_tool") {
const result = await doSomething(request.params.arguments.input);
return { content: [{ type: "text", text: result }] };
}
throw new Error("Unknown tool");
});
server.start();
—
## 常见问题
Q:MCP和Plugin/Action有什么区别?
A:本质是同一类东西,但MCP是标准化协议。传统Plugin每个AI平台自己定义,MCP是跨平台统一标准。一个MCP Server开发出来,所有支持MCP的AI平台都能用。
Q:MCP安全吗?
A:MCP Server有完整的权限控制。Hermes会按配置的权限运行,不会超出范围访问。通信默认是本地stdio,不暴露网络端口。
Q:可以用远程MCP Server吗?
A:可以。MCP支持HTTP+SSE模式,可以连接远程服务器。但需要注意网络安全。
Q:Hermes同时能连多少个MCP Server?
A:没有硬性限制,取决于系统资源。每个server是一个独立进程,一般同时跑10-20个没问题。
—
## 相关文章








暂无评论内容