MCP注册表--最小企业MCP服务器发现
问题
如今,MCP客户端手动发现MCP服务器:
配置文件中的硬编码端点
Wiki页面/Slack消息
部落知识
这在企业中很快就会崩溃:
端点更改
服务器激增
无法查看可用工具
无标准发现机制
MCP目前没有本机发现层。
这个项目做什么
该项目提供了一个最小的、自托管的MCP注册表,可以实现:
MCP服务器自行注册
MCP客户端按功能发现服务器
没有硬编码端点
无云依赖
无用户界面
无身份验证(设计用于MVP)
它旨在作为一个轻量级的控制平面在企业网络中运行。
非目标(故意)
此MVP明确不包括:
身份验证/RBAC
心跳或TTL
超越记忆的坚持
跨注册中心的联合
公共市场
这些是未来的层,而不是MVP要求。
核心概念 MCP服务器入口
每个MCP服务器都在以下地址注册:
服务器id
端点
工具
范围
发现
客户端通过以下方式查询注册表:
所需工具
范围
注册表返回匹配的MCP服务器终结点。
API概述
注册MCP服务器
POST/注册
{ “server_id”:“finance.mcp.local”, “终结点”:http://127.0.0.1:9001", “tools”:\[“invoice_lookup”\], “范围”:“财务” }
发现MCP服务器
发布/发现 { “required_tools”:\[“invoice_lookup”\], “范围”:“财务” }
答复: { “服务器”:\[ { “server_id”:“finance.mcp.local”, “终结点”:http://127.0.0.1:9001", “tools”:\[“invoice_lookup”\], “范围”:“财务” } \] }
为什么存在
该项目正式确定了企业已经非正式地做的事情:
维护MCP服务器的心理或记录列表
手动共享端点
希望配置保持同步
注册表将其转化为:
唯一的真相来源
机器可读的发现API
未来信任、策略和生命周期功能的基础
状态
✅ 工作MVP
🧪 内存注册表
🔧 专为扩展而设计
📗 集成指南
MCP服务器集成
服务器应该什么时候注册?
MCP服务器应注册:
启动时
部署后
配置更改后
最小集成示例
使用mcp_pprotocol::McpServerEntry;
let entry=McpServerEntry{ server_id:“finance.mcp.local”.into(), 端点:“http://127.0.0.1:9001“.into(), 工具:vec!\[“invoice_lookup”.into()\], 范围:“金融”.into(), };
reqwest::客户端::new() .post(“http://registry.internal:8000/register") .json(&条目) .send() 等待?;
就是这样。 MCP服务器不需要知道:
存在哪些客户
谁会消费它
发现如何在内部工作
MCP客户端集成
发现流程
客户端启动
客户端查询注册表
注册表返回匹配的MCP服务器端点
客户端正常连接到MCP服务器
最小客户端示例
使用mcp_pprotocol::{发现请求,发现响应};
let req=发现请求{ 所需工具:vec!\[“invoice_lookup”.into()\], 范围:“金融”.into(), };
let resp:DiscoverResponse=reqwest::Client::new() .post(“http://registry.internal:8000/discover") .JSON(PAG ng;req) .send() 等待? .json() 等待?; 客户端从不硬编码MCP服务器端点。
