英国税务mcp
通过 模型上下文协议(MCP).
目的
人工智能代理(Claude、Copilot、Codex)应该协调和解释税收策略,而不是计算它们。此服务器提供确定性计算层:
- LLM调用工具 → 此服务器计算→ LLM解释结果
- 所有规则都经过版本控制、SHA-256哈希运算,并引用HMRC来源
- 所有算术用途
decimal.Decimal(无浮点税务错误) - 规则一旦发布就不可变;更新创建新版本
建筑
| 层 | 模块 | 目的 |
|---|---|---|
| AST | ast/schema.py, ast/canonical.py | 规范、沙盒规则表示+SHA-256哈希 |
| 评估员 | evaluator.py | 安全、十进制精确的AST执行引擎 |
| DSL | dsl/tokenizer.py, dsl/parser.py, dsl/compiler.py | 人类可写规则语言→ AST |
| 规则注册表 | registry/model.py, registry/store.py, registry/rules/ | 版本化、散列、可引用的YAML规则存储 |
| 验证流程 | validation/pipeline.py | 6级管道,包括HMRC工作示例 |
| MCP服务器 | server.py | AI代理的无状态工具层(stdio传输) |
| NL提取器 | extractor/nl_extractor.py | LLM辅助HMRC散文→ DSL(强制性人工审查门) |
快速开始
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # 405 tests
uk-tax-mcp # starts MCP server on stdio (requires Python ≥3.10 + pip install -e ".[server]")MCP工具
| 工具 | 状态 | 目的 |
|---|---|---|
list_rules | ✅ live | 列出所有规则ID和版本 |
get_rule | ✅ live | 获取规则的DSL、AST和元数据 |
execute_rule | ✅ live | 使用输入运行规则→ 输出+可选跟踪 |
tax.get_rule_snapshot | ✅ 实时 | 纳税年度+管辖区的完整规则集 |
compile_dsl | ✅ 实时 | 编译DSL文本→ AST+SHA-256校验和 |
validate_rule | ✅ live | 在规则上运行6阶段验证管道 |
explain_rule | ✅ 实时 | 人类可读的规则解释 |
trace_execution | ✅ live | 用于审计的结构化执行跟踪 |
extract_rule | ✅ 实时 | LLM辅助HMRC散文→ 起草DSL(需要ANTHROPIC_API_KEY) |
NL提取器和人工审查门
extract_rule 向克劳德提交英国税务海关总署的立法文件,并返回DSL规则草案。 结果总是有标记的 reviewed_by: null --向注册表发布 直到一位人类工程师:
- 根据原始HMRC来源验证每个数值
- 跑
validate_rule关于已编制的草案 - 集合
reviewed_by在YAML文件中输入他们的姓名/电子邮件
涵盖的纳税年度
| 覆盖范围 | 状态 |
|---|---|
| 已发布的注册信息 | 从多个纳税年度开始 2025-26 通过 2030-31 |
| 管辖区 | rUK 和 scotland |
| 工作示例 | 全面覆盖所有已发布的注册表规则(86/86 存在示例文件) |
DSL快速参考
# Bands (compiles to BAND_APPLY)
bands taxable_income:
0 to 12570 at 0%
12570 to 50270 at 20%
50270 to 125140 at 40%
125140+ at 45%
# Taper (compiles to TAPER)
taper adjusted_net_income:
threshold 100000
ratio 1 per 2
base 12570
# Let bindings + conditional
let threshold = 100000
return if income > threshold then 40 else 20验证流程
每条规则在发布前都要经过6个阶段:
| 阶段 | 检查 |
|---|---|
| 1语法 | DSL编译时没有错误 |
| 2个语义 | 必填字段,有效出处,≥1个HMRC引用 |
| 3规范化 | 重新编译的DSL的SHA-256与存储的校验和匹配 |
| 4执行 | 规则对烟雾测试输入的评估没有错误 |
| 5个工作示例 | 输出与HMRC发布的测试用例相匹配 |
| 6人工审核 | reviewed_by 必须在发布前设置 |
构建进度
| 阶段 | 可交付成果 | 状态 |
|---|---|---|
| 1 | 回购支架、AST模式、评估器 | ✅ |
| 2 | DSL标记器→ 解析器→ 编译器 | ✅ |
| 3 | 跨多年/跨司法管辖区的规则注册 | ✅ |
| 4 | 带有自动加载工作示例的6阶段验证管道 | ✅ |
| 5 | MCP服务器工具(explain_rule, trace_execution、验证、执行) | ✅ |
| 6 | 带人工审查门的NL提取器 | ✅ |
| 7 | 苏格兰所得税管辖权支持 | ✅ |
| 8 | 集成指南 later-life-planner | ✅ |
| 9 | 复习后强化和完整的工作示例覆盖 | ✅ |
设计原则
- 没有图灵完备规则 --没有循环,没有递归,没有
eval() - 根据请求无状态 --评估者是纯粹的,没有副作用
- SHA-256规则哈希 --规范JSON用于法律再现
- 人工审查门 --在发布任何规则之前都是必需的
- HMRC引用 --每个规则条目都必须引用源URL
- MCP传输 --stdio(本地);稍后可以添加HTTP SSE
整合
看 docs/integration/later-life-planner.md 有关将此服务器连接到的完整指南 later-life-planner,包括:
- 架构概述和传输设置
- 替换
financialConstants.ts和tax.get_rule_snapshot+execute_rule - 校验和验证模式(TypeScript)
- 苏格兰纳税人处理(管辖范围,6区所得税)
- 代理驱动的解释和审计跟踪工作流
/api/mcp具有安全分配列表的代理路由
英国税务海关总署来源参考
许可证
私人-NxLap有限公司
