MCP协议详解:让AI连接一切的标准协议(2026最新)

维护咨询 大模型部署 问题解决 技能定制 大模型训练

站长交流微信: aixbwz

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个没问题。

## 相关文章

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

七天热门