mcp dns注册表
MCP的基于DNS的发现:使用组织范围的注册表 _mcp TXT记录
 
______________________________________________________________________
这是什么
此存储库提供了一个完整的、可部署的参考架构,用于解决中的代理发现问题 模型上下文协议(MCP) 生态系统。
核心建议很简单:组织在 _mcp.yourdomain.com 它将任何合规的AI代理指向其MCP注册表。该注册表本身就是一个完全兼容的MCP服务器——代理使用相同的方法发现它 tools/list 和 tools/call 他们用于其他所有事情的电话。没有发现SDK。没有新的协议。没有新的基础设施。
_mcp.example.com. IN TXT "v=mcp1;
registry=https://mcp.example.com/registry;
public=true;
auth=https://auth.example.com/token;
version=2026-02"一天内部署。每月不到5美元。无需维护服务器。
______________________________________________________________________
它解决的问题
MCP定义了AI代理如何连接到工具。它没有定义代理如何发现存在哪些工具。如今,答案是手动配置——开发人员在构建时对服务器地址进行硬编码。这无法扩展。
没有发现层: n agents × m servers = n×m configuration decisions\ 使用此注册表: n agents + m servers = n+m
______________________________________________________________________
关键设计决策
1.注册表本身就是MCP服务器\ 代理不需要特殊的发现客户端。他们打电话 tools/list 在注册表上——就像其他MCP服务器一样——接收可用服务器的清单。发现不需要新的客户端行为。
2.DNS作为引导层\ 一个 _mcp TXT记录是代理人唯一需要知道的事情。仅从一个域名,它就可以发现一个组织的整个MCP生态系统。这遵循了既定的先例: _dmarc, _acme-challengeWebFinger。
3.公共和私人在一个登记处\ 随着 public=true 在DNS记录中,任何知道您的域的代理都可以发现您的公共MCP服务器——不需要中央注册表提交。通过身份验证,同一注册表可以安全地显示私有内部服务器。两者都使用相同的基础设施。
4.治理优先写入路径\ 注册表项通过Git拉取请求进行管理。每一个变化都会被归因、审查和恢复。读取路径完全无服务器;治理存在于写入路径中。
______________________________________________________________________
架构(AWS参考实施)
Agent
│
├─ 1. DNS lookup: _mcp.example.com
│ └─ Returns registry URL + auth endpoint
│
├─ 2. GET token from auth endpoint
│
├─ 3. POST tools/list → CloudFront → Lambda@Edge
│ └─ Validates JWT, queries DynamoDB, returns tool manifest
│
└─ 4. POST tools/call (discover_servers)
└─ Returns filtered server list based on auth status| 组件 | 服务 | 目的 |
|---|---|---|
| 全球CDN | 亚马逊CloudFront | 边缘分发 |
| 请求处理 | Lambda@Edge | JSON-RPC解析、JWT验证、路由 |
| 注册表数据 | DynamoDB全局表 | 服务器条目,多区域读取 |
| 二进制资产 | 亚马逊S3+签名URL | 文档、清单 |
该架构是供应商中立的。计划使用Cloudflare Workers+KV或Azure Front Door+Cosmos DB的等效实现——请参阅 alternative-implementations/ 和 infrastructure/.
______________________________________________________________________
仓库结构
mcp-dns-registry/
├── CLIENT.md # curl examples for querying the live registry
├── CONTRIBUTING.md # Contribution guidelines
├── DNS.md # DNS record format and operator setup guide
├── LICENSE # MIT licence
├── README.md # This file
├── SPEC.md # The _mcp DNS convention specification
├── health.json # Registry health check response
├── alternative-implementations/ # Community implementations (Cloudflare, Azure, GCP)
├── infrastructure/ # Infrastructure-as-code
│ ├── aws/ # CloudFormation template
│ ├── azure/ # Azure deployment (community contributions welcome)
│ ├── gcp/ # GCP deployment (community contributions welcome)
│ └── terraform/ # Terraform for AWS, Azure, and GCP
├── mcp-function/ # Lambda@Edge function source
│ ├── index.js # Handler — JSON-RPC routing, JWT validation, DynamoDB
│ ├── package.json
│ └── package-lock.json
└── paper/ # Architecture paper
├── mcp-registry-architecture.md
├── mcp-registry-architecture.docx
├── mcp-registry-architecture.pdf
└── versions/ # Archived prior versions______________________________________________________________________
快速开始
1.发布您的DNS记录
# Route 53 example — see DNS.md for all providers
_mcp.yourdomain.com. 300 IN TXT "v=mcp1;registry=https://mcp.yourdomain.com/registry;public=true;auth=https://auth.yourdomain.com/token;version=2026-02"2.部署注册表
# Deploy using the CloudFormation template
aws cloudformation deploy \
--template-file infrastructure/aws/cloudformation.yaml \
--stack-name mcp-registry \
--parameter-overrides \
DomainName=mcp.yourdomain.com \
CertificateArn=arn:aws:acm:us-east-1:YOUR_ACCOUNT:certificate/YOUR_CERT \
--capabilities CAPABILITY_NAMED_IAM然后从以下位置部署Lambda函数源 mcp-function/:
cd mcp-function
zip -r ../registry-function.zip .
aws lambda update-function-code \
--function-name mcp-registry \
--zip-file fileb://../registry-function.zip3.添加您的第一台服务器
aws dynamodb put-item \
--table-name mcp-registry \
--item '{
"server_id": { "S": "my-first-server" },
"name": { "S": "My First MCP Server" },
"url": { "S": "https://mcp.yourdomain.com/my-first-server" },
"public": { "BOOL": true },
"capabilities": { "SS": ["data", "search"] },
"deprecated": { "BOOL": false }
}' \
--region us-east-14.测试一下
看 客户.md 关于实时参考实现的完整curl示例。
curl -X POST https://mcp.mariothomas.com/registry \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"discover_servers","arguments":{}}}'______________________________________________________________________
实时参考实施
工作实施可在以下网址获得 mcp.mariothomas.com:
- DNS记录:
_mcp.mariothomas.com - 注册表:
https://mcp.mariothomas.com/registry - 文章服务器:
https://mcp.mariothomas.com/articles(公众) - 位置服务器:
https://mcp.mariothomas.com/locations(公众) - 文档服务器:
https://mcp.mariothomas.com/documents(私有--需要身份验证)
看 客户.md 对于完整的卷曲示例。
______________________________________________________________________
与其他工作的关系
| 提案 | 它的作用 | 关系 |
|---|---|---|
| MCP官方登记处 | MCP服务器的全球公共目录 | 互补——两者都使用。全球搜索官方登记处;这是基于域的引导 |
| 1959年9月 | 每台服务器DNS验证原语 | 可堆叠--使用SEP#1959验证通过此注册表发现的各个服务器 |
| 南达 | 联邦目录协议 | 不同层——NANDA可以通过以下方式引导 _mcp 记录 |
______________________________________________________________________
纸张
当前的架构论文(v1.4)可在 paper/ 以及at mariothomas.com。以前的版本存档于 .
______________________________________________________________________
更新日志
| 版本 | 日期 | 状态 | 更改摘要 |
|---|---|---|---|
| 1.0 | 2026年2月25日 | 已发布 | 首次发布。 |
| 1.1 | 2026年2月27日 | 已发布 | 增加了第2.3节——本提案无法解决的问题——澄清 _mcp DNS记录仅用于发现,身份验证、授权和工具功能枚举明确超出了DNS层的范围。 |
| 1.2 | 2026年2月28日 | 已发布 | 扩展了第7.4节,以解决注册表级内容过滤作为快速注入攻击的缓解措施。增加了第10.6节——代理对等体发现:一个自然扩展。添加了致谢部分。 |
| 1.3 | 2026年3月2日 | 已发布 | 扩展了第8.1节,将基于路径和基于子域的注册表URL模式作为同样兼容的实现方法进行记录,并对每种模式进行权衡。相应地更新了SPEC.md。 |
| 1.4 | 2026年3月2日 | 已发布 | 更新了第8.1节,以反映mcp.mariothomas.com的参考实现使用基于路径的路由。更新了第8.4节和第8.5节,以使用正确的文件名 index.js 和处理程序 index.handler.用现在时态重写第12节,以反映实时部署,确认GitHub存储库URL,并注意参考实现中使用的基于路径的路由模式。 |
| 1.4.1 | 2026年3月3日 | 已发布 | 添加了版权声明。没有内容更改。 |
| 1.5 | 2026年3月19日 | 已发布 | 扩展了第2.3节,将显式的255字节DNS TXT记录约束作为指针而非容器设计决策的硬技术基础。在5.4节DynamoDB模式中添加了版本字段,用于注册表项的语义版本控制,并附有将其与protocol_version区分开来的字段描述。增加了第5.7节——读取路径:审计跟踪——明确指出CloudFront和Lambda@Edge日志提供了每个代理访问的可查询记录。添加了第7.5节——大型注册表中的上下文窗口约束——指出这是一个已知的限制,并建议积极使用capability_filter、简洁的服务器条目和大规模分页。致谢已更新,以反映Cole Johnston的反馈。 |
______________________________________________________________________
贡献
欢迎投稿,特别是替代云实现、其他语言的客户端库以及对DNS约定本身的反馈。
看 贡献.md 作为指导方针。
______________________________________________________________________
作者
马里奥·托马斯\ AWS应用人工智能和新兴技术战略主管\ 特许董事兼董事学会会员\ mariothomas.com · mario@mariothomas.com
______________________________________________________________________
许可证
麻省理工学院——见 许可证.
