让AI模型用工具像呼吸一样自然——Smithery TypeScript SDK测评
让 AI 模型用工具像呼吸一样自然——Smithery TypeScript SDK 测评
做 AI Agent 开发的时候,最烦的不是调 prompt,是把各种 MCP 服务器接进 LLM——每次都要手写请求逻辑、处理 tool call 循环、还得操心 OpenAI 格式和 Anthropic 格式的差异。能不能有一个框架把这些全部封装好,让我只关心业务逻辑?
Smithery TypeScript SDK 就是干这个的。
一句话定位
一个 TypeScript 框架,把各种 MCP 服务器(Exa 搜索、Sequential Thinking、文件系统…)通过统一的 adapter 接入 OpenAI 或 Anthropic,开发者只需要写一个 while 循环就能让 AI 自主调用工具直到任务完成。
核心能力
多 MCP 并发连接
用 MultiClient 可以同时连接多个 MCP 服务器,然后在同一个 adapter 里让 LLM 看到所有工具。比如接上 Exa(搜索)和 Sequential Thinking(结构化推理),AI 就能边搜索边思考,而不是先搜完再想。
const client = new MultiClient()
await client.connectAll({
exa: exaTransport,
sequentialThinking: sequentialThinkingTransport,
})
OpenAI / Anthropic 双兼容
同一个 MultiClient,换个 adapter 就能切换底层 LLM。OpenAIChatAdapter 配 OpenAI,AnthropicChatAdapter 配 Claude,工具调用逻辑完全不用改。这对需要对比不同模型效果的开发者来说非常实用。
// OpenAI 版本
const openaiAdapter = new OpenAIChatAdapter(client)
// Anthropic 版本
const anthropicAdapter = new AnthropicChatAdapter(client)
自动 tool call 循环
最实用的功能——不用自己写 while 循环处理多轮工具调用。SDK 内部会自动把 LLM 的 tool_calls 发出去、取结果、再塞回上下文,直到 LLM 说”不需要再调工具了”。
let isDone = false
while (!isDone) {
const response = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages,
tools: await adapter.listTools(),
})
const toolMessages = await adapter.callTool(response)
messages.push(response.choices[0].message)
messages.push(...toolMessages)
isDone = toolMessages.length === 0
}
适用场景
- 快速原型 MCP Agent:想接个新 MCP 试试?npm install + 几十行代码搞定,不用从零写 SDK 对接。
- 多工具编排:同时需要搜索 + 推理 + 文件系统等多个能力的复杂 Agent。
- 模型对比评测:同一套工具逻辑切换 OpenAI / Anthropic,公平对比不同模型在工具调用任务上的表现。
- 团队技能沉淀:把团队积累的 MCP 工具封装成统一接口,新人也能快速上手。
使用方式
npm install @smithery/sdk @modelcontextprotocol/sdk
然后参考 GitHub 仓库的 examples 目录,有完整的 OpenAI 和 Anthropic 接入示例。
一点提醒
⚠️ SDK 目前标注为 alpha,生产环境慎用。但如果你是做 AI Agent 研发或原型开发,这个框架能省大量对接工作,值得上手试试。
GitHub 仓库里还有 WebSocket 传输支持、多 client 管理等进阶功能,文档写得也比较清晰。
GitHub:https://github.com/mcpnexus-registry/typescript-sdk
评论区
登录后可评论。