关于 Passport
mcp-passport 是用于检查 MCP 服务是否符合 MCP Registry 发布要求的命令行验证器。它依据注册表架构检查 server.json,并与相关软件包清单比对字段,还可输出 SARIF 供 CI 使用。
主要功能
- 01依据注册表架构验证 server.json
- 02跨软件包清单检查字段
- 03提供问题及文档链接
- 04支持 SARIF 输出和 CI 门禁
- 05以 Rust 二进制文件分发
适用场景
- 01发布前检查服务清单
- 02发现版本或 mcpName 不匹配
- 03用 SARIF 标注拉取请求问题
MCP 相关
这是面向 MCP 服务发布者的开发工具,而非 MCP 服务或客户端。它在使用 mcp-publisher 发布前验证注册表元数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
属于 StudioMeyer MCP Stack 的一部分 — 在马略卡岛打造 🌴 · 如果你在用,欢迎点 ⭐
mcp-passport
用于 MCP 注册表的发布就绪状态验证器。
将服务发布到注册表,意味着必须确保 server.json 完全正确——反向 DNS 名称、packages 块、transport,以及 package.json 中与之匹配的 mcpName。
任何一项出错,mcp-publisher 都会拒绝上传(或者更糟,导致列表出现不易察觉的问题)。
mcp-passport 是一个静态二进制文件,可在本地检查所有这些内容——依据注册表架构进行验证,并且检查 server.json 与 package.json / Cargo.toml / pyproject.toml 之间的一致性——确保首次上传就能成功。
$ mcp-passport ./my-server
mcp-passport: ./my-server/server.json — 3 finding(s) (2 error, 1 warning, 0 info)
ERROR (2)
server.json /name — `name` "My_Weather" is not a valid reverse-DNS namespace/slug
fix: Use `{namespace}/{slug}`, lowercase, e.g. `io.github.you/my-server`.
see: https://github.com/modelcontextprotocol/registry/.../generic-server-json.md
package.json /mcpName — package.json has no `mcpName` — the registry uses it to verify npm ownership
fix: Add "mcpName": "io.github.you/weather".
see: https://github.com/modelcontextprotocol/registry/.../quickstart.mdx
WARNING (1)
server.json /packages/0/version — package #0 (npm) has no `version` …
# exit code 1 → the job fails
全部检查通过时:
$ mcp-passport
mcp-passport: ./server.json is publish-ready. [OK]
安装
cargo install mcp-passport
或者从源代码构建:
git clone https://github.com/studiomeyer-io/mcp-passport
cd mcp-passport && cargo build --release # binary at ./target/release/mcp-passport
使用
mcp-passport # validate ./server.json
mcp-passport path/to/server.json # a specific file
mcp-passport ./my-server # find + validate server.json in a directory
mcp-passport --fail-on warning # gate CI on warnings too
mcp-passport --format sarif # GitHub code scanning
当存在级别达到或高于 --fail-on(默认值为 error)的问题时,退出代码为 1;否则为 0。
检查内容
server.json 结构(依据2025-12-11 架构):
- 必需的
name(反向 DNS 格式的namespace/slug)、description、version(semver) packages/remotes至少存在一项- 每个包都必须包含:
registryType(npm/pypi/nuget/cargo/oci/mcpb)、identifier、transport.type(stdio/streamable-http/sse);对于有版本的注册表,还必须包含version;对于mcpb,还必须包含fileSha256 - 常见的 snake_case
registry_type错误(注册表会静默忽略它) - 必须包含
$schema,且使用当前修订版;必须包含repository
跨文件一致性(仅当同级清单文件存在时检查):
- npm →
package.json中的mcpName必须与server.json中的name匹配(注册表通过此项验证所有权),且版本一致 - cargo →
Cargo.toml中的[package].version必须匹配 - pypi →
pyproject.toml中的[project].version必须匹配
每条问题都会链接到对应的注册表文档。mcp-passport 是快速的本地预检工具——最终依据是 mcp-publisher validate 和注册表本身。
CI
# .github/workflows/mcp-registry.yml
name: MCP registry
on: [pull_request]
jobs:
passport:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: studiomeyer-io/[email protected]
with:
path: .
fail-on: error
也支持 SARIF——运行 mcp-passport --format sarif > passport.sarif,然后使用
github/codeql-action/upload-sarif 上传,即可在 PR 中标注问题。
StudioMeyer MCP 工具集的一部分
一组专注、达到生产级别的工具,用于构建、发布和运维 MCP 服务:
- mcp-armor — 运行时防护侧车
- mcp-gauntlet — 部署前模糊测试与负载测试
- mcp-covenant — 契约与破坏性变更检测器
- mcp-herald — 2026-07-28 规范迁移检查工具
- mcp-passport (就是这个) — 发布门禁:你的
server.json是否已满足注册表要求?
许可证
MIT © StudioMeyer
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。