接能力 — agent 的手往外伸
1. 这条分支是什么(围绕共性的哪条维度)
总纲的共性是“agent 与外部世界的机器对机器契约”。这条分支取其中最基础的一面:
agent 怎么够到外部能力(工具、文件、数据库、API、整个网站),以及怎么在运行时发现“有哪些能力可接”。
第一性原理:模型本身只会生成文字。要让它做事,得有一份契约规定“可调用的动作长什么样、参数是什么、返回什么”;要让它自主做事,还得有一份契约规定“去哪里、怎么知道有哪些动作存在”。前者是调用契约,后者是发现契约。这条分支的库就分成这两摊。
2. 分支内有哪几种做法(流派)
接能力
├── 调用面:把外部能力做成 agent 可调的接口
│ ├── 通用工具协议 ........ MCP(host↔server,JSON-RPC) + 官方 SDK
│ ├── 站点即端点 .......... NLWeb(网站开 /ask、/mcp,吃 Schema.org)
│ └── 页面即工具 .......... WebMCP(浏览器页面把 DOM 动作暴露成工具)
└── 发现面:去哪里找到这些能力
├── 集中注册中心 ........ MCP Registry(server.json,官方)
├── 分布式目录 .......... AGNTCY Directory(OASF 记录,内容寻址)
└── 站点自报清单 ........ llms.txt(站点放一份 LLM 可读的内容索引)
两个流派的根本区别:调用面回答“能力的契约形状”,发现面回答“能力的目录”。MCP 同时定义调用契约(tools/resources/prompts)和一个轻量发现入口(server/discover),所以它跨两摊;Registry/AGNTCY 则是 MCP/A2A 之上的目录层,不重新定义调用,只索引“哪里有 server/agent”。
3. 对比矩阵(库 × 维度)
| 库 | 把什么暴露给 agent | 传输/形态 | 发现机制 | 成熟度 | 代码锚点 |
|---|---|---|---|---|---|
| mcp-spec | 工具/资源/提示词(tools/resources/prompts),外加 sampling/elicitation 反向调用 | JSON-RPC,stdio 子进程 + Streamable HTTP | server/discover + capability negotiation;按 dated revision 协商版本 | 已发布 2025-11-25 稳定;2026-07-28 为 RC(无状态化) | 见 mcp-spec 子库 doc;schema/2025-11-25/、schema/draft/schema.ts:37 |
| mcp-typescript-sdk | (实现层)用 SDK 注册 tools/resources/prompts | 同 MCP;封装 transport + middleware | 跟随协议修订;SDK 包版本与协议版本分开走 | 高速迭代,官方事实标准 | packages/core、packages/server(server-legacy/ 是旧版勿仿) |
| nlweb | 整个网站 → 自然语言 /ask + /mcp 端点 | REST + MCP 绑定;吃 Schema.org 结构化数据排名 | 站点自身即端点,无独立注册中心 | 规范与参考实现同仓同步,无单独 spec 文件 | nlweb/AskAgent/、AgentFinder/、DataFinder/(顶层 Python 参考实现);nlweb/docs/life-of-a-chat-query.md(code/ 下仅 wordpress/ 集成) |
| webmcp | 浏览器页面把按钮/操作暴露成 page-scoped 工具 | 浏览器内 JS API(navigator.modelContext 的 registerTool),另有声明式提案 | 页面加载即注册,作用域限本页 | W3C 孵化,pre-standard,命令式与声明式 API 仍分叉 | webmcp/index.bs:315(registerTool IDL 定义)、:337(method steps);declarative-api-explainer.md |
| mcp-registry | (不暴露能力)发布 MCP server 的元数据 | Go 服务 + REST API | server.json 元数据 + 命名空间归属 + 搜索/版本 | 官方,preview 期 API 有变动 | mcp-registry/docs/reference/(server.json/API)、internal/(Go) |
| agntcy | (不暴露能力)分布式发布/发现 agent 与 server 记录 | protobuf 服务 + DHT;内容寻址 CID | OASF 记录 + 可验证身份;索引 A2A Agent Card 与 MCP 描述 | LF IoA,pre-standard,跨多仓(dir/oasf/slim/identity) | agntcy/api/core/v1/record.pb.go:221(type Record);proto agntcy/proto/agntcy/dir/core/v1/record.proto:58 |
| llms-txt | 站点给 LLM 一份可读内容清单(.md 孪生页) | 静态 /llms.txt(H1 + 摘要 blockquote + 链接分节) | 约定式:agent 去站点根目录取文件 | 约定(非标准机构),仓库锁定即真相 | llms-txt/nbs/index.qmd:42(H1 必需);llms_txt/(参考解析器) |
4. 模式与权衡
- MCP 是地基,其余是它的特化或邻居。 NLWeb 把“站点”塞进 MCP 调用模型;WebMCP 把“浏览器页面”塞进同一思路;Registry/AGNTCY 在 MCP 之上加发现层。先吃透 MCP,这条分支其余库都是“同一思路换载体”。
- 集中 vs 分布式发现。 MCP Registry 是单一官方注册中心(简单、有命名空间治理,但中心化、且只存元数据无信任保证);AGNTCY 是内容寻址 + DHT 的分布式目录(跨组织、带可验证身份,但更重、pre-standard)。选型按“你要不要跨信任域发现”。
- 约定 vs 协议。 llms.txt / AGENTS.md 这类是约定——没有握手、没有版本协商,agent 去固定路径取文件即可,极轻但无强制力;MCP/A2A 是协议——有协商、有线格式,重但可靠。
- 别混 llms.txt 与 AGENTS.md。 前者是“给 LLM 看的内容”,后者是“给 agent 看的指令”(在 ⑤ 分支)。
5. 趋势
- MCP
2026-07-28RC 正把协议无状态化(每请求自带身份)、引入一等 Extensions 框架——发现/调用都更易在无状态 HTTP 上扩展。锚定 dated revision,勿引draft/当现状。 - 发现层在“注册中心 vs 分布式目录”间并存:Registry 落地快,AGNTCY 押注跨组织 IoA。两者都索引而非取代 MCP/A2A。
6. 代表作 + 深入
- 首读: mcp-spec 子库 doc —— 已成稿,讲透 JSON-RPC 消息形态、三件套、MRTR、传输与鉴权。
- 调用实现样式:
mcp-typescript-sdk(packages/+examples/)。 (TODO: 待 mcp-typescript-sdk 子库 doc) - 站点/浏览器载体:
nlweb、webmcp、llms-txt。 (TODO: 待各子库 doc) - 发现层:
mcp-registry、agntcy。 (TODO: 待各子库 doc)