发布时间: 2025年11月4日 晚上11:56
(via @AnthropicAI)
当我写关于 Claude Skills 的文章时,我提到我在处理编码 agents 时根本不再使用 MCP------我发现 CLI 实用工具和像 Playwright Python 这样的库是实现相同目标的更有效方式。
Anthropic 的这篇新文章提出了一种让这两个世界更紧密结合的方法。
它指出了当前 MCP 存在的两个挑战。第一个之前已经被广泛讨论:所有这些工具描述在 agent 上下文中占用了很多宝贵的空间,甚至在你开始使用它们之前。
第二个更微妙但同样有趣:链接多个 MCP 工具涉及将它们的响应传递通过上下文,吸收更多宝贵的 token 并引入 LLM 犯额外错误的机会。
如果你能把 MCP 工具转换成代码函数,然后让 LLM 用可执行代码将它们连接起来会怎么样?
Anthropic 这里的例子设想了一个将 MCP 工具转换为磁盘上的 TypeScript 文件的系统,看起来像这样:
typescript
// ./servers/google-drive/getDocument.ts
interface GetDocumentInput {
documentId: string;
}
interface GetDocumentResponse {
content: string;
}
/* Read a document from Google Drive */
export async function getDocument(input: GetDocumentInput): Promise<GetDocumentResponse> {
return callMCPTool<GetDocumentResponse>('google_drive__get_document', input);
}
这完全不占用 token------它是磁盘上的一个文件。类似于 Skills,agent 可以导航文件系统按需发现这些定义。
然后它可以通过生成代码将它们连接起来:
javascript
const transcript = (await gdrive.getDocument({
documentId: 'abc123'
})).content;
await salesforce.updateRecord({
objectType: 'SalesMeeting',
recordId: '00Q5f000001abcXYZ',
data: { Notes: transcript }
});
值得注意的是,这里的例子避免了将 gdrive.getDocument() 调用的响应在传递到 salesforce.updateRecord() 调用时通过模型往返------这样更快、更可靠,节省上下文 token,并避免模型暴露于文档中任何潜在的敏感数据。
这一切在我看来都非常可靠!我认为这是利用编码 agents 的优势并解决当前通常实现的 MCP 一些主要缺点的明智方法。
有一个问题:Anthropic 详细概述了这个提议,但没有提供可执行的代码!实现留给读者作为练习:
如果你实现了这种方法,我们鼓励你与 MCP 社区分享你的发现。