mcpField
M
McpStamp Check

McpStamp Check

远程服务
mcpstamp.com开发工具04 天前更新

关于 McpStamp Check

McpStamp Check 用于评估远程 MCP 服务对 Claude、ChatGPT、Gemini 和 MCP Registry 的就绪情况。它提供评分、等级、各平台状态和修复建议,并支持通过 GitHub Action 在 CI 中检查。

主要功能

  1. 01为服务就绪度打 0 至 100 分
  2. 02显示字母等级和各平台状态
  3. 03列出失败项及修复建议
  4. 04解释单项检查及其来源
  5. 05通过 GitHub Action 设置 CI 门槛

适用场景

  1. 01发布前检查 MCP 端点
  2. 02发现协议或元数据就绪问题
  3. 03核验面向特定应用目录的就绪状态
  4. 04就绪条件未满足时让 CI 失败

MCP 相关

它本身是通过 Streamable HTTP 提供的远程 MCP 服务。其工具可评估服务 URL 并解释检查项,返回平台就绪状态、问题和修复建议等结果。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.zovo.one/stamp/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

McpStamp Check

为任意远程 MCP 服务评估其是否已准备好接入 Claude Directory、ChatGPT Apps、Gemini Connected Apps 和 MCP Registry:提供 0–100 分的评分、A–F 等级、各平台的就绪状态,以及每项未通过检查对应的一行修复建议。

试用:https://www.mcpstamp.com/check/

Readiness Index:https://www.mcpstamp.com/readiness/ 根据此引擎的评分,对官方 MCP Registry 中列出的远程服务进行排名,并列出每个服务在各平台的就绪状态。

徽章

检查后,将徽章嵌入 README(<id> 位于检查结果中):

[![McpStamp](https://www.mcpstamp.com/badge/<id>.svg)](https://www.mcpstamp.com/check/?id=<id>)

徽章会显示 McpStamp | 87 B,并根据等级着色;未检查时显示灰色的 unchecked。

MCP 服务

McpStamp Check 本身也是一个远程 MCP 服务(Streamable HTTP,协议版本 2025-11-25,无需登录):

https://mcp.zovo.one/stamp/mcp
工具功能
check_mcp_server(url, fresh?)评分、等级、各平台的就绪状态、每项未通过检查及其修复建议、报告 URL 和徽章 Markdown
explain_check(check_id)检查项的含义、会阻止哪些平台,以及平台或规范来源

将其添加到客户端:

# Claude Code
claude mcp add --transport http mcpstamp https://mcp.zovo.one/stamp/mcp
// Cursor: ~/.cursor/mcp.json
{ "mcpServers": { "mcpstamp": { "url": "https://mcp.zovo.one/stamp/mcp" } } }

// VS Code: .vscode/mcp.json
{ "servers": { "mcpstamp": { "type": "http", "url": "https://mcp.zovo.one/stamp/mcp" } } }

然后询问:“Check https://example.com/mcp with McpStamp”。实时检查共用 API 限额(每个客户端每小时 20 次)。该服务已列入 MCP Registry,名称为 io.github.theluckystrike/mcpstamp-check。

GitHub Action

根据就绪状态设置 CI 门禁。此 Action 会调用公共 API、生成作业摘要(评分、平台、修复建议),并在评分低于 min-score 或 fail-on-store 中的平台未就绪时,使步骤失败。

name: McpStamp Check
on:
  workflow_dispatch:
  push:
    branches: [main]
jobs:
  mcpstamp:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: theluckystrike/mcpstamp-check@v1
        id: stamp
        with:
          url: https://example.com/mcp
          min-score: 80
          fail-on-store: claude,chatgpt
      - run: echo "Score ${{ steps.stamp.outputs.score }} (${{ steps.stamp.outputs.grade }}): ${{ steps.stamp.outputs.report-url }}"
输入项默认值含义
url(必填)MCP 端点的 https URL
min-score0评分低于此值时失败
fail-on-store空必须就绪的平台列表,以逗号分隔,可选 claude、chatgpt、gemini、registry(例如,若某平台的阻塞性检查无法运行,如工具需要登录,则该平台视为未就绪)
freshtruefalse 表示接受 10 分钟内的结果。达到速率限制时,Action 会使用缓存结果
api-basehttps://mcp.zovo.one/stampAPI 基础 URL

输出:score、grade、report-url、badge-url、ready-stores。

该 Action 是一个复合 Action,使用运行器的 Node.js(18 或更高版本)运行 action/run.mjs,无需依赖项,也无需构建步骤。检查已部署的 URL:请在部署步骤后运行它。

API

基础 URL:https://mcp.zovo.one/stamp(也通过 https://www.mcpstamp.com/api/ 代理)。

请求响应
GET /api/check?url=<https MCP URL>[&fresh=1]结果 JSON(缓存 10 分钟)
GET /api/result/<id>最近一次保存的结果;若无结果则返回 404
GET /api/checks下方的检查项表格
GET /badge?url=<url> 或 GET /badge/<id>.svgSVG 徽章
POST /mcpMCP Streamable HTTP 端点(见上文)

错误:400 {error:"bad_url"|"blocked_host"}、429 {error:"rate_limited", retry_after}、502 {error:"unreachable"|"blocked_by_firewall", detail}(blocked_by_firewall:服务器的 WAF 或机器人防护返回了 403 HTML 页面或 Cloudflare 验证,因此未进行评分)。 限额:每个 IP 每小时最多 20 次实时检查;每次检查最多向被检查的服务器发送 10 个 HTTP 请求,最长耗时 25 秒;每个请求超时为 8 秒,响应正文上限为 1 MB;仅支持 https,端口为 443/8443,不允许 IP 字面量或私有名称;每个被获取的 URL(初始 URL、最多 3 次重定向的每一跳、每个发现 URL)都会重新验证,且其 DNS 解析结果(DNS-over-HTTPS)必须为公网地址。结果保留 30 天;请求 7 天以前结果的徽章时,会在后台触发一次重新检查。URL 中的凭据(/t/ 后的部分、长度为 24 个或更多字符的随机字符串路径段、机密查询参数值)会显示并存储为 REDACTED。

代理

受信任的代理(mcpstamp.com Pages Functions)可以发送 x-mcpstamp-proxy-key: <PROXY_KEY secret> 和 x-mcpstamp-client-ip: <visitor IP>,这样速率限制会按访客而非代理进行。

评分

每项检查的结果为 pass(1)、warn(0.5)、fail(0)或 skip(不计入)。评分 = 适用检查的加权通过率。等级:A >= 90,B >= 80,C >= 65,D >= 50,否则为 F。每个 store 都会获得一个 status:ready(没有阻断性检查失败,且没有检查被跳过)、unverified(没有检查失败,但某项阻断性检查无法运行,例如工具需要登录才能访问)或 not_ready(某项阻断性检查失败)。只有状态为 ready 时,ready 才为 true。如果工具需要登录才能访问且无法检查,评分上限为 85。跳过的检查会带有 skip_reason:not_applicable、needs_sign_in、not_probed(请求或时间预算不足)、not_reached(握手未完成)或 blocked;每个 store 都会列出 unverified_reasons。当某个 store 对某项检查采取更宽松的判定时,该检查可带有 store_status(例如,legacy SSE 对 Claude 和 Registry 来说是警告)。registry store 表示“符合 MCP Registry 要求的远程服务”(公开的 https,且支持 Streamable HTTP 或 SSE),而非表示服务已发布到 Registry。

下表根据 src/check.mjs 中的 CHECKS 导出内容生成(node scripts/scoring-table.mjs --write;过期时测试会失败)。“阻断”列出了检查失败时无法就绪的 store。GET /api/checks 会返回相同数据,以及每项检查计入哪些 store。对于无需登录的服务,会跳过身份验证检查。

检查分组测试内容权重阻断(失败 = 未就绪)
httpstransport是否通过 HTTPS 提供服务10claude, chatgpt, gemini, registry
initializetransport是否通过 Streamable HTTP 执行 initialize15claude, chatgpt, gemini, registry
protocol_versiontransport是否协商出受支持的协议版本6gemini
content_typetransportJSON 或 SSE 响应的 Content-Type3-
jsonrpc_errorstransport未知方法是否返回 JSON-RPC 错误4-
get_streamtransportGET 是否返回 SSE 或 4053-
latencytransportinitialize 延迟5-
server_infometadataserverInfo 名称和版本6-
instructionsmetadata服务说明4-
capabilities_toolsmetadata是否声明 tools 能力3-
auth_methodauthstore 支持的登录方式(OAuth 或无)6chatgpt, gemini
auth_challengeauth401 是否携带 WWW-Authenticate resource_metadata6-
auth_prmauth受保护资源元数据(RFC 9728)8claude, chatgpt
auth_resourceauth资源元数据中的 "resource" 是否等于服务 URL4claude
auth_as_metadataauth授权服务器元数据(RFC 8414 / OIDC)8claude, chatgpt, gemini
auth_gemini_discoveryauthGemini 首先尝试的元数据 URL 是否以必需字段返回 2004gemini
auth_chatgpt_metadataauthissuer 是否等于 authorization_servers 条目;token_endpoint_auth_methods_supported(ChatGPT)4chatgpt
auth_pkceauth是否声明支持 PKCE S2566claude, chatgpt, gemini
auth_registrationauth客户端注册(DCR 或 Client ID Metadata Documents)6-
auth_refreshauth是否声明支持 refresh_token 授权类型3-
tools_listtoolstools/list 是否返回工具10claude, chatgpt, gemini
tool_schematoolsinputSchema 是否为对象架构6claude, chatgpt, gemini
tool_namestools工具名称是否有效且可移植5-
tool_annotationstools每个工具是否都带有 readOnlyHint 或 destructiveHint10claude, chatgpt
tool_open_worldtools是否明确声明 readOnlyHint、destructiveHint 和 openWorldHint(ChatGPT)5chatgpt
tool_titlestools每个工具是否都有易读的标题5claude, chatgpt
tool_descriptionstools工具说明6-
总权重(所有检查)161

每条规则都可追溯至 SOURCES.md 中相应 store 或规范的文本。

使用引擎

src/check.mjs 是一个不依赖任何依赖项的纯 ES 模块。它可在 Node 20+ 和 Cloudflare Workers 中运行:

import { checkServer, CHECKS } from './src/check.mjs';
const result = await checkServer('https://example.com/mcp', { fetch, timeoutMs: 8000 });
console.log(result.score, result.grade, result.stores.claude);

每个获取的 URL 都会通过主机防护检查(语法和 DNS)。默认情况下,DNS 查询通过 DNS-over-HTTPS(1.1.1.1)进行;如果无法读取 DNS,检查就会拒绝请求。在 Node 中,传入系统解析器,这样局域网和 /etc/hosts 中的名称就会根据 fetch 使用的相同解析结果进行判断:

import { nodeResolve } from './src/resolve-node.mjs';
await checkServer(url, { fetch, resolve: nodeResolve });

CLI:node scripts/check-cli.mjs https://example.com/mcp [--json]

开发

npm test             # node --test, mock fetch, no network (engine, Worker, MCP endpoint, action)
npx wrangler deploy  # Worker "mcpstamp-check"

联系邮箱:[email protected]

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。