MCPSDK vs 官方 MCP SDK
发布: (2026年2月6日 GMT+8 11:16)
5 分钟阅读
原文: Dev.to
Source: Dev.to
为什么在官方 Model Context Protocol SDK 之上使用 MCPSDK?
官方 MCP SDK 是一个用于深度定制的低层协议实现,而 MCPSDK 是一个高层抽象,旨在帮助 AI 应用快速集成 MCP 工具生态系统。
一句话概括
Official MCP SDK → 构建服务器/客户端。
MCPSDK → 在 AI 应用中使用 MCP 工具。
Feature Comparison
| 维度 | 官方 MCP SDK | MCPSDK |
|---|---|---|
| 定位 | 协议实现库 | 开发者体验层 |
| 最佳使用场景 | 构建 MCP 服务器/客户端 | 在 AI 应用中使用 MCP 工具 |
| 设置复杂度 | 高(手动传输配置) | 低(托管 + API 密钥) |
| AI SDK 集成 | 需要手动桥接 | 开箱即用(AI SDK / OpenAI) |
| 部署方式 | 需要进程管理 | 云托管,无本地进程 |
| 设计理念 | 协议实现 | 以开发者为中心的 API |
| 维护方式 | 手动(更新和 SDK 同步) | 由 MCPSDK 自动管理 |
官方 MCP SDK
官方 SDK 提供了 Model Context Protocol 的完整实现。如果您需要以下情况,它是理想选择:
- 从头构建自己的 MCP 服务器。
- 对传输层(stdio、SSE、WebSocket)进行深度控制。
- 了解底层协议细节。
优势
- 完全控制 – 直接访问每个协议特性和扩展。
- 无中间人 – 客户端与服务器之间直接连接。
- 官方支持 – 由协议创建者(Anthropic)维护。
权衡
您必须自行管理进程生命周期、传输配置以及手动工具调用的序列化。
// official-sdk-example.js
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
// 1. 手动配置传输
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
});
// 2. 初始化客户端
const client = new Client(
{ name: "my-client", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
await client.connect(transport);
// 3. 列出工具
const { tools } = await client.listTools();
// 4. 手动调用工具
const result = await client.callTool({
name: "read_file",
arguments: { path: "file.txt" },
});
// 5. 需要手动桥接逻辑以用于 Vercel AI SDK 或其他平台
MCPSDK
MCPSDK 假设您的目标是 使用 MCP 工具于 AI 应用,而不是自行实现协议本身。它提供:
- 托管运行时 – MCP 服务器运行在云端;无需管理本地进程。
- 即插即用集成 – 直接生成兼容 Vercel AI SDK、OpenAI SDK 等的工具。
- API 密钥管理 – 统一处理第三方工具密钥(例如 Tavily、Resend)。
快速集成示例
// mcpsdk-example.js
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { MCPSDKApiClient } from "toolsdk/api";
// 1. Initialize MCPSDK (API Key only)
const toolSDK = new MCPSDKApiClient({
apiKey: "your-toolsdk-api-key",
});
// 2. Load a tool package (MCPSDK hosts the MCP server)
const searchPackage = await toolSDK.package("@mcpsdk.dev/tavily-mcp", {
TAVILY_API_KEY: "xxx",
});
// 3. Get an AI SDK‑compatible tool (zero bridging code)
const searchTool = await searchPackage.getAISDKTool("tavily-search");
// 4. Use directly in an AI call
const result = await generateText({
model: openai("gpt-4o"),
tools: { searchTool },
prompt: "What is the latest news about AI?",
});
何时选择哪个 SDK
选择 Official MCP SDK 的情况:
- 正在构建 MCP 服务器或协议层工具。
- 需要对传输层进行绝对控制(自定义扩展等)。
- 已经拥有健全的进程管理基础设施。
- 想避免第三方服务依赖。
选择 MCPSDK 的情况:
- 正在构建 AI 代理、聊天机器人或工作流。
- 使用 Vercel AI SDK、OpenAI SDK 或 Anthropic SDK。
- 想快速集成现有 MCP 工具(搜索、邮件、数据库等)。
- 希望避免进程管理和部署的复杂性。
- 需要在 Edge Runtime 或无服务器环境中运行。
类比
- Official MCP SDK – 如同从零件组装汽车(你得到发动机、底盘和轮子,但必须自行组装)。
- MCPSDK – 如同通过应用租用车队(汽车已准备好、维护完毕,你只需驾驶)。
多工具统一两行集成
import { MCPSDKApiClient } from "toolsdk/api";
const toolSDK = new MCPSDKApiClient({ apiKey: "your-api-key" });
const [searchTool, emailTool] = await Promise.all([
toolSDK
.package("@mcpsdk.dev/tavily-mcp", { TAVILY_API_KEY: "xxx" })
.getAISDKTool("tavily-search"),
toolSDK
.package("@mcpsdk.dev/mcp-send-email", { RESEND_API_KEY: "xxx" })
.getAISDKTool("send-email"),
]);
在 GitHub 上查看完整示例 →