使用说明
MCP守望台
在MCP服务器混淆代理或与更广泛的MCP生态系统冲突之前,分析其命名、路由和语义工具冲突。
npx mcp-watchtower scan --server "uvx my-server"
为什么它存在
MCP服务器易于发布,但难以比较。两个服务器可以公开对人类听起来不同但对代理来说可互换的工具,或者它们可以定义不同名称下含义相同的参数。
MCP Watchtower扫描本地服务器、远程端点或清单并报告:
- 静态问题 例如重复的工具名称、不一致的命名、提示的阴影描述和过大的工具集。
- 语义重叠 通过不断刷新的MCP语料库,您可以发现已经存在或需要更清晰边界的工具。
- 参数冲突 其中等效概念在同一服务器内命名不一致。
运作原理
MCP Watchtower将确定性静态检查与已发布索引的语义比较相结合。扫描通过回退到中的捆绑索引来保持脱机工作 src/data/.
快速示例
# Local MCP server over stdio
npx mcp-watchtower scan --server "uvx my-server"
# Remote MCP endpoint
npx mcp-watchtower scan --remote "https://api.example.com/mcp"
# Remote MCP endpoint with bearer auth
npx mcp-watchtower scan --remote "https://api.example.com/mcp" --auth-token "$MCP_TOKEN"
# Manifest / CI input
npx mcp-watchtower scan --manifest ./tools.json --name my-server
# Machine-readable output
npx mcp-watchtower scan --server "uvx my-server" --json
# Local dashboard from a saved report
npx mcp-watchtower scan --server "uvx my-server" --json > report.json
npx mcp-watchtower dashboard --input ./report.json
平原 scan 运行静态和语义分析。常见聚焦扫描:
# Static checks only
npx mcp-watchtower scan --server "uvx my-server" --syntactic
# Semantic checks only
npx mcp-watchtower scan --server "uvx my-server" --semantic
# Expanded human-readable logging
npx mcp-watchtower scan --server "uvx my-server" --verbose
# Tune semantic sensitivity
npx mcp-watchtower scan --server "uvx my-server" --threshold 0.8
使用 --platform 将静态名称冲突视为关键。
调查结果一览
| 图层 | 示例 | 是否影响退出代码? |
|---|---|---|
| 静态 | 重复名称、命名约定漂移、可疑描述、工具数量过多 | 是的,用于关键发现 |
| 语义 | ALREADY_IN_CORPUS, SEMANTIC_OVERLAP, SEMANTIC_PARAMETER_CONFLICT |
否,仅供警告/参考 |
退出码 0 意味着没有发现关键的静态发现,扫描成功完成。退出码 1 意味着至少找到了一个关键的静态发现,或者CLI遇到了运行时/使用错误(例如,无效输入或连接失败)。
程序化使用
import { SemanticAnalyzer, StaticAnalyzer } from 'mcp-watchtower'
const staticReport = new StaticAnalyzer().analyze('my-server', tools)
const semanticReport = await new SemanticAnalyzer().analyze('my-server', tools)
文档
完整的文档包括设置指南、更深入的解释和API参考:
发展
npm install
npm run build
npm test
npm run pack:check
从本地克隆运行已编译的CLI:
node dist/cli/index.js scan --server "uvx my-server"
node dist/cli/index.js dashboard --input ./report.json
有用的维护命令:
npm run crawl
npm run embed
npm run build-index
npm run publish-index
publish-index 重建语料库、嵌入和语义索引,然后将刷新的资产和清单上传到Cloudflare R2。GitHub Actions的夜间工作流程 .github/workflows/refresh-index.yml 自动运行相同的发布步骤。
维护人员发布说明
包发布使用变更集,与语义索引刷新分开。
- 为用户可见的包更改添加一个普通变更集。
- 使用
npx changeset --empty故意不发布工作。 - 通过以下方式验证发布工件
npm run build,npm test,以及npm run pack:check. - 这
release.yml工作流在合并到后将待处理的变更集发布到npmmain.
许可证
麻省理工学院