
mcpprobe
tech.mcpprobe由 mcpprobe.tech 发布官方发布者v1.0.0更新于 Nov 3, 2026
只读 MCP 安全数据:查看目录、公开扫描状态以及你自己的扫描报告。
AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。
原文描述
Read-only MCP security data: check catalogue, public scan status and your own scan reports.
概览
mcpprobe 的托管 MCP 服务(mcpprobe.tech),由 mcpprobe.tech 发布;需要 OAuth 登录;Streamable HTTP。
暂无 AI 概览:以下信息来自注册中心条目和服务本身。
- 发布者
- mcpprobe.tech
- 端点
- mcpprobe.tech
- 最近检查
安装
在 SourceWeft 中
- 打开 控制台中的 mcpprobe,将其添加到工作区。
- 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/tech.mcpprobe%2Fscanner/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。
{
"mcpServers": {
"mcpprobe": {
"type": "http",
"url": "https://mcpprobe.tech/mcp"
}
}
}README
mcpprobe
Security scanner for Model Context Protocol servers. It checks authentication, OAuth metadata, transport conformance, tool-description poisoning, rug pulls, secrets in metadata, verbose errors and basic resource limits, maps every finding to the OWASP MCP, Agentic and LLM Top 10 lists, and writes JSON, SARIF 2.1.0 and a readable terminal summary.
It runs locally, sends no telemetry, and never calls a tool in its default mode.
Only scan servers you own or are explicitly authorised to test. See Ownership rule.
60-second quickstart
or install it:
A local stdio server you run yourself:
Passing a bearer token you own (for checks behind your auth):
The summary lists each finding with severity, check ID, confidence, OWASP mapping,
an evidence excerpt and a plain-English fix, followed by a coverage table showing
which checks ran, which were skipped and why. mcpprobe checks lists every check;
CHECKS.md documents them in full.
What it checks
24 passive checks (plus 8 gated active stubs and 5 attestation-only governance items);
mcpprobe checks lists them.
Protocol revisions: the scanner tries server/discover (2026-07-28) first, then
initialize with 2025-11-25 and 2025-06-18, then the deprecated 2024-11-05 HTTP+SSE
transport, and records which one answered. Checks for rules that only exist in
2026-07-28 are reported not applicable, with the negotiated revision as the reason,
on servers that speak an earlier one.
Directory readiness
Every JSON report carries a readiness list that maps the scan onto the listing
requirements of the Anthropic, OpenAI and HubSpot MCP directories (OAuth 2.0, complete
and accurate tool annotations, no hidden instructions, no unresolved critical/high
findings, low exfiltration and poisoning risk, HTTPS). Each item is met, not_met or
not_assessable, cites its source and names the checks it rests on; it is derived only
from checks that actually ran, and anything a scan cannot decide (such as proof of
endpoint ownership) is not_assessable with the reason. See
docs/report-schema.md.
Rate limits on the target
An HTTP 429 is honoured: the request is repeated after Retry-After (1 s if absent),
within a total waiting budget for the whole scan (--rate-limit-wait, 30 s by default).
When the budget is used up, the checks whose requests were throttled are reported
not applicable instead of drawing conclusions from throttled responses. DOS-01's burst
is the exception: a 429 there is the evidence it looks for.
Passive vs active
Passive (default) sends only what a normal MCP client sends (negotiation, the
*/list methods, well-known metadata documents) plus a handful of benign malformed
requests (bad Origin, bogus version header, forged session ID, self-minted
wrong-audience JWT, truncated JSON, one oversized and one deeply nested request). It
never calls a tool.
Active (--active) is for checks that call tools with non-destructive canaries.
In 0.1.0 these are stubs, but the gate is real and enforced in code. Active mode is
refused unless you pass all of:
--authorised-by "<who approved this, e.g. name/role/ticket>"--scope "<what is in scope>"--verify dns-txt(HTTP targets) or--verify local(stdio servers you run yourself)
For dns-txt, generate a token and publish it:
Every active run writes an authorisation record (scan.authorisation.json next to the
report): who authorised it, the scope, the verification proof, rate cap and excluded
tools. Use --exclude-tool NAME for tools that must never be called.
Ownership rule
Scan only MCP servers you own, operate, or have explicit written permission to test. This applies to passive mode too: even benign requests are unauthorised access if the system is not yours. mcpprobe identifies itself on every request and honours opt-outs (below), but those are courtesy mechanisms, not permission.
Scanner identification, opt-out and rate limits
- User-Agent:
mcpprobe/<version> (+https://mcpprobe.tech/scanning-policy). - Opt-out, checked before any MCP request and impossible to override:
- DNS TXT
mcpprobe-opt-out=allat_mcpprobe.<host>(or a parent domain), checked before any packet reaches the host; - an HTTP
200at/.well-known/mcpprobe-opt-out.
- DNS TXT
- Rate: 5 requests/second by default (
--rate), hard ceiling 10.
Exit codes
SARIF and GitHub code scanning
As a GitHub Action (Docker container action, no Python setup needed):
Inputs, outputs, exit codes and a manual-dispatch example are in docs/github-action.md.
Or from any CI with the CLI:
Results use error for critical/high, warning for medium and note for low/info,
with GitHub's security-severity on each rule and the OWASP IDs as tags. Because a
scanned endpoint is not a file, results point at the target URL unless you pass
--sarif-location.
Rug-pull detection
The first run stores canonical SHA-256 hashes of every tool, prompt, resource and the
server instructions. Later runs report anything added, removed or changed (a changed
description after approval is the classic rug pull) and update the file; use
--no-write-baseline to compare without updating.
Reports and evidence
--json FILE: the full report, including every request/response pair (timestamp, method, status, every header, bodies up to 64 KiB). Credential headers and recognised secret patterns are redacted. Each finding carries aproofexcerpt built from parsed data, a runnableverifyline and, when confidence is not high, aconfidence_reason. Checks whose preconditions are absent are reportednot_applicablewith a reason and never count as passed. The schema is documented in docs/report-schema.md.--sarif FILE: SARIF 2.1.0.-v: descriptions and scan notes in the terminal;-q: no terminal output.
Server-supplied text is shown with control characters made visible and is never interpreted as terminal markup.
Optional classifier for META-01
Off by default. A local prompt-injection classifier gives META-01 a second opinion; it
adds a medium-severity indicator when it flags a description. Only .safetensors
weights are loaded, model code is never executed, and nothing is downloaded unless you
pass --judge-download. Model licences differ; read docs/judges.md
first. Detection numbers for the heuristics are in docs/benchmark.md.
Python API and LLM-judge hook
Development
Security issues: see SECURITY.md. Licence: Apache-2.0 from 0.2.0 (see NOTICE); 0.1.0 was released under MIT.
来源:README.md,提交 be5aca7
工具
0版本历史
1- v1.0.0最新Nov 1, 2026
评分
已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分