MCP 是 Model Context Protocol,一套让 AI 应用连接外部数据和工具的开放协议。它不是模型,不负责训练,也不会自动建立知识库。

最简结构如下:

1
2
3
4
5
用户
→ AI 应用 Host
→ MCP Client
→ MCP Server
→ GitHub、数据库、文件、业务 API

根据 MCP 核心架构,Host 是承载模型和用户体验的应用;Client 在 Host 内维护与某个 Server 的连接;Server 向 Client 提供上下文和能力。

三个角色分别做什么

角色 职责 例子
Host 管理用户、模型、上下文、权限和多个连接 编程 Agent、桌面 AI 应用
Client 建立协议连接、协商能力、发送请求 Host 内的一对一连接组件
Server 暴露工具、资源或提示模板,执行真实业务逻辑 GitHub Server、知识库 Server

真正执行 SQL、读取文件或调用第三方 API 的代码运行在 MCP Server 一侧。Server 可以在本机,也可以部署在远程服务器上。

Tool、Resource 与 Prompt

Tool

Tool 用于执行操作或计算,例如:

1
2
3
4
search_knowledge_base
get_issue
query_database
create_ticket

工具名称和参数由 Server 开发者定义,不是 MCP 全局固定。每个工具应提供名称、说明和输入 Schema,Client 发现后才能让模型正确调用。

Resource

Resource 用 URI 表示可读取内容,例如:

1
2
kb://documents/refund-policy
repo://main/README.md

Resource 更适合读取有稳定身份的内容,Tool 更适合带参数的查询、计算和动作。一个最小知识库 Server 只提供搜索 Tool 也可以,不要求三类能力全部实现。

Prompt

Prompt 是 Server 提供的可复用任务模板。它可以帮助用户或客户端形成一致的提问方式,但不会替代 Tool 的真实执行能力。

哪些方法固定,哪些名称自定义

协议会规定发现和调用机制,例如:

1
2
3
4
5
6
tools/list
tools/call
resources/list
resources/read
prompts/list
prompts/get

而业务工具由 Server 自己命名:

1
2
3
search_knowledge_base
read_policy
create_pull_request

可以把 tools/call 理解为统一的拨号方式,把 search_knowledge_base 理解为某个服务定义的分机。不能看到示例中的方法名,就误以为所有 MCP Server 都必须提供它。

MCP Tools 规范还要求支持工具的 Server 声明相应能力,并响应工具列表和调用请求。

MCP SDK 自动完成什么

使用官方或兼容 SDK 时,开发者通常注册业务工具:

1
2
3
4
5
6
7
8
9
10
server.registerTool(
"search_knowledge_base",
{
description: "搜索公司知识库",
inputSchema: {
query: "string"
}
},
async ({ query }) => searchIndex(query)
);

这是帮助理解的伪代码,具体注册 API 取决于所选 SDK。

SDK 通常负责:

  • 解析协议消息和连接生命周期。
  • 响应能力发现与 tools/list。
  • 根据名称路由 tools/call。
  • 校验参数并把结果编码成协议格式。
  • 处理所选传输方式。

SDK 不会自动完成:

  • 文档解析、切片和 Embedding。
  • 数据库查询与第三方 API 调用。
  • 用户、租户与对象级权限。
  • 业务幂等、审计、限流和回滚。

换句话说,SDK 负责“怎样按 MCP 通信”,开发者负责“工具真正做什么”。SDK 的语言支持和成熟度会变化,选型时应以 MCP 官方 SDK 列表为准,不把某个时间点的等级长期写死。

本地与远程部署

本地 Server

1
2
3
AI 应用
→ 启动本地 MCP Server 进程
→ Server 读取授权目录或调用本机工具

适合本地文件、开发工具和个人工作流。即使是本地进程,也应限制可读目录和可执行命令。

远程 Server

1
2
3
4
AI 应用
→ HTTPS 与认证
→ 远程 MCP Server
→ 企业系统

适合团队共享服务。它需要身份认证、授权、会话管理、网络安全、审计和可用性设计。

安全边界

MCP 统一了连接方式,但不会替你判断一个 Server 是否可信。接入前至少确认:

  1. 发布者和代码来源是否可信。
  2. Server 会读取、上传或修改哪些数据。
  3. Token 和 OAuth 权限是否最小化。
  4. 写操作是否需要用户确认。
  5. 工具返回内容是否可能包含 Prompt Injection。
  6. 是否记录敏感参数和返回值。
  7. 超时、重试和重复调用是否会造成副作用。

Tool 的描述和注解也不能被当成绝对可信的安全证明。高风险动作仍应由 Host 或业务后端执行强制权限检查。

一句话记忆

1
2
MCP 规定 AI 应用怎样发现和调用外部能力;
MCP Server 决定提供哪些能力,并负责真正执行它们。

站内搜索

没有找到内容!