mcp服务器卡启动
参考SEP-2127 MCP服务器卡的Go实现。
Go库实现 SEP-2127 MCP服务器卡纯stdlib HTTP处理程序;不依赖MCP SDK。
服务器卡是一个JSON文档,在 /.well-known/mcp-server-card 它描述了连接前的MCP服务器:身份、传输、协议版本和连接指导。这使得无需完全初始化握手即可进行预连接发现。
注意$schema网址: 规范参考https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json。从v0.3.0开始,此URL返回404——模式托管正在等待SEP合并。库发出规范要求的URL;在托管之前,将模式视为信息性的。
用法
import "github.com/olgasafonova/mcp-servercard-go/servercard"
cardHandler, err := servercard.Attach(servercard.Options{
Name: "io.github.olgasafonova/gleif-mcp-server",
Version: "1.4.0",
Description: "Access the GLEIF LEI database for company verification.",
Title: "GLEIF MCP Server",
WebsiteURL: "https://github.com/olgasafonova/gleif-mcp-server",
Remotes: []servercard.Remote{{
Type: "streamable-http",
URL: "/mcp",
}},
Provider: &servercard.Provider{
Name: "Olga Safonova",
URL: "https://github.com/olgasafonova",
},
})
if err != nil {
log.Fatal(err)
}
// Mount alongside your MCP handler.
mux := http.NewServeMux()
mux.Handle("/mcp", mcpHandler)
mux.Handle(servercard.WellKnownPath, cardHandler)它做什么
- 构建符合SEP-2127模式的服务器卡JSON文档
- 服务于
/.well-known/mcp-server-card具有正确的CORS和缓存标头
v0.3.0的新增功能
- 打破: 移除
RegisterResource(),ResourceURI,以及mcp://server-card.jsonMCP资源端点与SEP-2127(PR#24432026年3月)对齐:发现仅通过预连接.well-known. - 打破:
Attach()不再需要a*mcp.Server参数--签名现在是Attach(opts) (http.Handler, error). - 打破: 移除
Capabilities,Requires,以及Authentication根据SEP-2127范围缩减的字段(能力和身份验证属于initialize,而不是静态发现)。 - 图书馆不再依赖
github.com/modelcontextprotocol/go-sdk纯stdlib。
v0.2.0的新增功能
Auth.Schemes规范化:空或nil切片一致序列化WellKnownPathFor(card)对于多服务器设置:返回/.well-known/mcp-server-card/{name}因此,同一主机上的多个服务器各自获得不同的发现路径
API
| 功能 | 目的 |
|---|---|
Attach(opts) | 单行设置:构建卡并返回HTTP处理程序 |
Build(opts) | 构建a *ServerCard 从选项中构造 |
Handler(card) | 返回一个 http.Handler 提供JSON格式的卡 |
WellKnownPathFor(card) | 退货 /.well-known/mcp-server-card/{name} 用于多服务器子路径 |
集成在
- miro-mcp服务器 (91个工具,5个提示)
- Wiki mcp服务器 (40+工具)
参考文献
许可证
麻省理工学院
