标准mcp
您的编码标准,可由AI查询。
每个团队都会编写一份编码标准文档。没有人阅读它。人工智能代理肯定不会——他们无法将20000个代币治理文档与实际工作一起放入上下文窗口。
标准mcp 翻转这个。你的标准不再是维基中的文档,而是成为 实时数据存储 代理在任务时进行查询。启动数据库迁移的代理调用一个工具,并在大约700个令牌内,在0.1ms内,准确地获取适用的28条规则。
关于无障碍、国际化和基础设施的95%规则?未加载。不要浪费代币。不制造噪音。
npx standards-mcp init # 28 universal starter rules
npx standards-mcp serve # MCP server, works with any AI tool适用于 克劳德代码, 光标, 帆板运动, 副驾驶 --任何能说话的东西 主控程序.
______________________________________________________________________
问题:代币经济学
AI代理具有有限的上下文窗口。在规则上花费的每个令牌都是在实际工作上没有花费的令牌。以下是现有方法的成本:
| 方法 | 标准如何到达代理 | 令牌成本 | 代理获得什么 |
|---|---|---|---|
| Wiki/Confluence | 代理无法访问它 | 0(无用) | 无 |
| 粘贴到系统提示中 | 每节课都有完整的文档 | ~20000 | 所有内容,无论是否相关 |
| CLAUDE.md/.cursorules | 子集烘焙到配置中 | ~2000-5000 | 无论你手动策划什么 |
| ESLint/Roslyn | 单独运行,代理看到输出 | ~500/违规 | 只有已经损坏的部分 |
| 标准mcp | 代理查询它需要什么 | 一项任务约700,每条规则约15 | 这正是这项任务的规则 |
见解: 不要加载文档,查询索引。 启动数据库迁移的代理不需要您的可访问性规则、i18n规则或基础架构规则。它需要DB、SEC和ERR。这是28条规则,每条约15个令牌,而不是200条规则,每条约100个令牌。
如何比较
每个代码质量工具都有可寻址的规则。以下是它们的工作原理以及它们在人工智能代理方面的不足之处:
| 系统 | 规则ID | 是否可读? | 是否可由代理查询? | 渐进式细节? | 修复指导? | 令牌感知? |
|---|---|---|---|---|---|---|
| 埃斯林特 | no-unused-vars | 是 | 否--作为linter运行,代理在事后看到违规行为 | 否--一个级别的细节 | --fix 对于某些规则 | 否 |
| 罗瑟琳 | CA1001 | 否--必须查找 | 否--编译成。NET分析器 | 是--消息→ docs → 代码修复 | 代码修复提供者 | 否 |
| 声纳立方 | squid:S1481 | 否 | 否--服务器端扫描仪 | 是--摘要→ 细节→ 补救 | 补救指导 | 否 |
| 皮林 | C0301 | 否 | 否--CLI linter | 否 | 否 | 不 |
| CWE/OWASP | CWE-89 | 否 | 否--参考数据库 | 是--摘要→ 描述→ 示例 | 仅供参考 | 否 |
| 标准mcp | SEC.INJECT.SQL | 是 --自我描述 | 是 --MCP工具调用 | 是 --3层(15→375→300个代币) | 是 --带验证的类型化修复提供程序 | 是 --专为它而设计 |
主要区别:
现有的工具是过梁。 它们在已经存在的代码上运行,并在事后报告违规行为。代理编写代码,linter发现问题,代理修复问题。最少两次通过。
标准mcp是飞行前检查。 代理加载规则 *之前* 编写代码。这些规则在开发过程中位于工作内存中,而不是在单独的扫描过程中发现的。代理第一次写入正确的代码,因为它在写入时知道这些规则。
现有的工具是以人为本的。 ESLint的文档是网页。Roslyn的CodeFixProvider是一个C#类。SonarQube的补救措施是仪表板上的一段。这些都不是为AI代理在任务时以编程方式使用而设计的。
标准mcp是代理第一。 每个响应都是JSON。代币预算是衡量的。渐进式披露意味着代理在任务开始时为每条规则加载15个令牌,为它需要详细说明的一条规则加载375个令牌,并为修复加载300个令牌,而不是为所有事情加载20000个令牌。
三代币指数
每个规则都有一个自我描述的地址: DOMAIN.CONCERN.RULE
SEC.INJECT.SQL → Security > Injection > SQL
DB.MONEY.INT → Database > Money > Integer storage
ERR.CATCH.EMPTY → Errors > Catch > No empty blocks比较: CA1001 告诉。 CWE-89 告诉。 SEC.INJECT.SQL 告诉您域、关注点和规则-在3个令牌中,无需查找。这很重要,因为:
- 代理商引用了它们:
"Store discount as integer cents (DB.MONEY.INT)" - Git历史变得可搜索:
git log --grep="DB.MONEY.INT"查找所有涉及资金存储的提交 - 无需查找: 符号是文件
异常被跟踪,而不是隐藏
当代理无法遵循规则时,它会注册一个跟踪异常:
{
"id": "EXC-2026-0001",
"symbol": "FILE.SIZE.HARD",
"justification": "Generated ORM schema cannot be split",
"file": "src/generated/schema.ts",
"ticket": "PROJ-442"
}例外情况住在 .standards-exceptions.json --版本受控,可在PR中审查,可审计。不 // TODO: fix this later --有理由的跟踪偏差。
型号不可知,供应商不可知
这是一个MCP服务器。Claude、GPT、Gemini、Llama——如果它能调用MCP工具,它就可以查询你的标准。转换模型,遵守规则。
______________________________________________________________________
快速启动
npx standards-mcp init这创造了 standards.json 有28条规则几乎得到了普遍认可——没有SELECT\*,没有空catch块,源代码中没有秘密,只有参数化查询。编辑它以匹配您的团队。
添加到您的MCP客户端:
克劳德代码 (.mcp.json):
{
"mcpServers": {
"standards": {
"type": "stdio",
"command": "npx",
"args": ["-y", "standards-mcp", "serve"]
}
}
}光标 (MCP设置):
{
"mcpServers": {
"standards": {
"command": "npx",
"args": ["-y", "standards-mcp", "serve"]
}
}
}完成。您的代理现在有6个工具。
______________________________________________________________________
6工具
| 工具 | 目的 | 代币 |
|---|---|---|
standards_for_task | 任务类型(数据库、前端等)的规则 | ~700 |
standards_lookup | 将符号解析为完整规则——支持渐进式披露 | ~15-375/规则 |
standards_domain | 域的所有规则 | ~200/域 |
standards_search | 自由文本搜索,可按标签筛选 | 各不相同 |
standards_all_symbols | 完整符号表 | ~1300 |
standards_exception | 注册一个跟踪的异常 | ~100 |
代理人应该先打电话
standards_for_task({ task_type: "database" })返回与数据库工作相关的所有规则——仅一行,约700个标记。代理在上下文中处理这些内容,并通过符号引用违规行为。
当代理人需要更多细节时
standards_lookup({ symbols: ["DB.MONEY.INT"], detail_level: "full" })返回基本原理、故障模式、好/坏示例、修复指导和抑制场景。一条规则约375个令牌。
当代理需要修复违规时
standards_lookup({ symbols: ["DB.MONEY.INT"], detail_level: "fix" })返回逐步修复说明、验证检查(验证修复是否有效的grep模式)、爆炸半径和冲突警告。一条规则约300个令牌。
______________________________________________________________________
渐进式披露
该系统有三层信息。代理只在需要时加载他们需要的东西。
Tier 1: One-liner "No floats for money" ~15 tokens
loaded at task start via standards_for_task
Tier 2: Detailed docs Why, how, examples, when to suppress ~375 tokens
loaded on-demand via standards_lookup(detail_level="full")
Tier 3: Fix provider Step-by-step fix, validation, scope ~300 tokens
loaded on-demand via standards_lookup(detail_level="fix")典型任务:总计约2100个令牌 (任务负载+1个边缘案例查找+2个修复查找)。在20万上下文窗口的1.1%以下。
修复类型
每个规则的修复提供者都根据它需要多少判断来分类:
| 类型 | 决定论 | 代理人行为 |
|---|---|---|
mechanical | 确定性,自动应用安全 | 无需询问即可应用 |
local | 确定性,多行 | 应用,提交时注意 |
structural | 需要判断 | 提出、解释权衡 |
architectural | 需要人工审核 | 标记,不自动修复 |
验证
每个修复程序都包括机器可验证的验证:
{
"validation": {
"grep_absent": ["DECIMAL.*(?:price|cost|total|amount)"],
"grep_present": ["_cents\\s", "INTEGER.*(?:price|cost|total)"],
"assertion": "No DECIMAL/FLOAT columns for monetary values"
}
}代理可以在应用修复程序后运行grep模式以验证其是否有效——机械修复不需要人工审查。
标签
为跨领域查询标记了规则:
standards_search({ query: ".*", tags: ["security"] })返回所有标记为“security”的规则,无论域如何。入门设置中有24个标签:财务、安全、owasp、可读性、可测试性等。
______________________________________________________________________
标准格式
{
"version": "2.1.0",
"domains": {
"SEC": {
"name": "Security",
"description": "Injection prevention, secrets, auth",
"rules": {
"SEC.INJECT.SQL": {
"severity": "error",
"applicability": "enforced",
"rule": "Parameterised queries only — no string concatenation",
"detail": {
"rationale": "SQL injection is consistently #1-#3 in OWASP Top 10...",
"failure_modes": ["Full database dump via UNION injection", "Auth bypass via ' OR 1=1"],
"fix_guidance": ["Replace interpolation with parameterised placeholders..."],
"examples": [{ "label": "JS", "bad": "query(`...${id}`)", "good": "query('...$1', [id])" }],
"tags": ["security", "owasp", "injection"],
"fix": {
"type": "mechanical",
"steps": [{ "action": "Replace template literal", "from": "query(`...${id}`)", "to": "query('...$1', [id])" }],
"validation": { "grep_absent": ["query.*`.*\\$\\{"], "assertion": "No interpolated SQL" }
}
}
}
}
}
},
"task_routing": {
"database": ["FILE", "NAME", "SEC", "DB", "TEST", "VCS"],
"frontend": ["FILE", "NAME", "ERR", "TEST", "VCS"]
}
}这 detail 对象是 可选的 每一条规则。没有它的规则运作良好——代理人只得到一句话。在对团队最重要的规则中逐步添加细节。
严重性: error (必须修复)或 warning (应该修复)。
适用性: enforced (活动), aspirational (可见但不遮挡), not_applicable (对任务/域查询隐藏)。
任务路由:将任务类型映射到相关域。添加您自己的任务类型——它们只是映射到域数组的字符串。
______________________________________________________________________
定制
添加规则
"DB.QUERY.TENANT": {
"severity": "error",
"applicability": "enforced",
"rule": "Multi-tenant queries must include tenant filter"
}添加域
"A11Y": {
"name": "Accessibility",
"description": "WCAG 2.2 AA compliance",
"rules": {
"A11Y.HTML.SEMANTIC": {
"severity": "error",
"applicability": "enforced",
"rule": "Use correct semantic HTML elements"
}
}
}然后添加 "A11Y" 到中的相关任务类型 task_routing.
验证
npx standards-mcp validatestandards.json v1.0.0
28 rules across 8 domains
FILE File Organisation 3 rules
SEC Security 5 rules
DB Database 4 rules
...
6 task types: database, api_endpoint, frontend, backend, refactor, bugfix
Applicability: 28 enforced, 0 aspirational, 0 not_applicable
Valid.______________________________________________________________________
告诉你的代理人使用它
添加到您的项目说明中(CLAUDE.md、.cursorules等):
Before editing any file, call standards_for_task with the appropriate task type.
Cite relevant symbols in your approach.______________________________________________________________________
建筑
standards.json ──→ standards-mcp server ──→ Any MCP client
(your rules) (6 query tools) (Claude, Cursor, etc.)
│
.standards-exceptions.json
(tracked exceptions)没有数据库。无构建步骤。除此之外没有配置文件 standards.json一个JSON文件输入,六个工具输出。
______________________________________________________________________
命令行界面
npx standards-mcp init [--force] # Scaffold standards.json
npx standards-mcp serve [--standards
] # Start MCP server
npx standards-mcp validate [
] # Validate and report配置发现: --standards flag → $STANDARDS_MCP_PATH env → ./standards.json → ./.standards/standards.json
______________________________________________________________________
程序化使用
const { StandardsStore } = require('standards-mcp/src/store');
const store = new StandardsStore('./standards.json');
store.forTask('database'); // rules for database work
store.lookup(['SEC.INJECT.SQL']); // resolve a symbol
store.search('password'); // free-text search
store.allSymbols(); // { count: 28, symbols: [{s, v, a}] }______________________________________________________________________
许可证
麻省理工学院
