法律MCP服务器
此存储库包含:法令API Version 2使用(e-Gov)获取法令数据,并托管帮助检查内部文档和参照法令的完整性的MCP服务器。
概要
- 提供从官方API提供法令数据,进行文档和法令的一致性检查的MCP工具。
- 使知识工作者能够验证政策草案、合同、备忘录等是否与权威法令文本相匹配。
- 重视LawID、条编号、URL等的出处和包括检查时的推理步骤在内的透明性高的输出。
外部数据源
- 基本URL:
https://laws.e-gov.go.jp/api/2/ - 主要端点(所有架构均为 招摇 参照):
- GET /law_data/{law_id_or_num_or_revision_id} —取得法令结构和条文 - GET /keyword?keyword={keyword} —使用关键字查找法令 - GET /laws?law_title={title} —查找标题中的法令
- 响应形式:JSON(包括meta、LawName、Articles等)。遵守官方汇率限制,429/503作为伴随退避的重试对象。
MCP工具
search_laws— 入力:keyword(字符串)。输出:LawID、标题、发布日期的列表。fetch_law— 入力:lawId(字符串)、选项revisionDate。输出:规范化法令JSON。check_consistency— 入力:documentText・lawIds(必需)。输出:匹配的引用、冲突点和相似度分数。summarize_law— 入力:lawId、选项articles名单。输出:包含条文文本的简要摘要。
完整性检查工作流
- 将输入文档规范化(以语句、章节为单位进行分割,检测出“第○条”这样的引用条文)。
- 确定目标法令:指定的
lawIds,或者search_laws中选择新的扶手类型,来修改默认的扶手。 fetch_law获得所需的法令文本,以减轻API负荷LawID以单位缓存响应。- 使用字符串相似度和引用提示将文档的段与法令条文对应,在条码被明示的情况下进行记录。
- 生成调查结果:每个段的状态(
aligned・potential_mismatch・not_found),包括条文参照和双方的片段。 - 不自动更改源文档,提示修改建议(正确的条文引用、文言调整等)。
服务器行为和错误处理
- 将API错误映射到具有可执行消息的MCP友好错误(LawID缺失、上游429、错误参数等)。
- 429/503使用指数退避,如果有Retry-After提示则通知。
- 快速验证输入:空
documentText・不支持过长的查询lawId与明确的指导一起拒绝格式。 - 记录工具调用和上游URL以进行调试,避免保存超出会话的文档内容。
设定
- 环境变数:
- LAW_API_BASE(默认值: https://laws.e-gov.go.jp/api/2/) - HTTP_TIMEOUT_MS(默认值:15000) - CACHE_TTL_SECONDS(默认值:900) - TRANSPORT(stdio | sse | http,默认值: stdio) - PORT(默认值:3000。Cloud Run为 PORT=8080 ),模板名称将采用不同的格式 - API_KEY(TRANSPORT=sse 或 TRANSPORT=http 时褪色为此颜色。stdio中不使用) - ISSUER_URL(OAuth/Claude.ai连接器所需。示例: https://law-mcp-server-xxx.run.app) - ALLOWED_ORIGIN(用于HTTP/SSE传输的可选CORS许可列表)
.env啊.gitignore因此,不要提交密码。
实施说明
- 推荐堆栈:具有MCP兼容的轻量stdio JSON-RPC桥的Node.js,HTTP
undici/node-fetch、轻量内存缓存(Map/LRU)。为了架构安全性,TypeScript推荐(利用Swagger规格)。 - 定义API响应的类型Script类型,并强制执行严格的透视。
- 业务逻辑(如引用提取和匹配计分)保持了不依赖于I/O的纯粹和可测试的实现。
- 用于快速沟通确认的健康端点或MCP工具(例如:
ping)公开。
前言
- 要件: Node.js 18 以上。
- 依赖性安装:
npm install。 - 构建:
npm run build。 .env.example的.env中所述修改相应参数的值。- 使用stdio(JSON-RPC)启动服务器:
npm start(或ts-node时npm run dev)。 - 设置为
.env中所述修改相应参数的值。服务器是search_laws・fetch_law・check_consistency・summarize_law注册工具。 - 品质管理:
npm run lint(埃斯林特)/npm run format(更漂亮)
传输模式
本地默认值
TRANSPORT=stdio(默认)。没有认证的本地使用。npm start或npm run dev中所述修改相应参数的值。
Streamable HTTP / http(Cloud Run 向け・推奨)
符合MCP规格2025-06-18的可流HTTP传输。支持Claude.ai的连接器注册。
TRANSPORT=http和API_KEY选项卡页面上创建或编辑条目PORT将Cloud Run的端口(通常为8080)传递给。- 认证:
Authorization: Bearer或x-api-key:。 - 端点:
- POST /mcp —JSON-RPC请求发送(主端点) - GET /mcp —服务器源SSE流(用于服务器通知) - DELETE /mcp —会话结束 - GET /health —健康检查
- 会话管理:
Mcp-Session-Id在响应页眉中返还,在以后的请求中赋予页眉。
动作确认例:
# 1. initialize(セッション作成)
curl -s -D - -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0"}}}' \
https:///mcp
# → Mcp-Session-Id: がレスポンスヘッダーに返る
# 2. tools/list(セッションIDを使用)
curl -s -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Mcp-Session-Id: " \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
https:///mcpClaude.ai连接器注册
可通过Claude.ai的“Connector”功能直接注册(TRANSPORT=http + ISSUER_URL 设定时)。
初次部署过程
- 一次部署到Cloud Run,并将服务URL(
https://law-mcp-server-xxx.run.app),模板名称将采用不同的格式。 - 在GitHub Secrets上
ISSUER_URL(值:已确认的服务URL)。 - 重新部署(
ISSUER_URL),模板名称将采用不同的格式。
Claude.ai中的注册步骤
- Claude.ai设置→ 连接器 → 添加自定义连接器
- 输入MCP服务器URL:
https:///mcp - 单击“连接”→打开浏览器显示API键输入画面
- 部署时设置的
API_KEY允许连接
手动指定“高级”中的“审计客户机标识/安全” 如果不想使用动态客户端注册(DCR)而想使用固定凭证 事先POST /oauth/register来注册客户端 已归还client_id/client_secret在Claude.ai中输入。
SSE(旧仕样・后方互换)
TRANSPORT=sse中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。- 端点:
GET /events(SSE流)、POST /messages(JSON-RPC请求)。
Claude Desktop设定
- 本地传输
- 全局安装: npm install -g law-mcp-server。 - claude_desktop_config.json:
{
"mcpServers": {
"law-mcp-server": {
"command": "law-mcp-server"
}
}
}在动态输入提示中单击npm install && npm run build 之后由应用程序进行调用npm link 的 law-mcp-server 将命令添加到PATH中,然后在Claude Desktop中使用。
- 可流HTTP传输
- Cloud Run TRANSPORT=http 和 API_KEY 中所述修改相应参数的值。 - 作为本地的stdio-to-HTTP桥 mcp遥控器 中所述修改相应参数的值。 - 安装mcp-remote: npm install -g mcp-remote - claude_desktop_config.json:
{
"mcpServers": {
"law-mcp-server": {
"command": "mcp-remote",
"args": [
"https://law-mcp-server-.asia-northeast1.run.app/mcp",
"--header",
"Authorization: Bearer "
]
}
}
}- ` 单击功能区上的` 将其替换为Cloud Run中设置的相同键。
使用例(概念的)
- 检索·取得:“检索个人信息保护,显示最新的条文”→
search_laws之后由应用程序进行调用fetch_law中所述修改相应参数的值。 - 一致性检查:“将该草案与劳动基准法第24条、第37条进行对照,强调显示不一致之处”→
search_laws获得LawID后lawIds=[...]来修改标记元素的显示属性check_consistency中所述修改相应参数的值。
技能
此存储库包含特定于域的技能,该技能显示了law-mcp-server工具的有效使用模式。技能为特定用例如何利用服务器功能提供了全面的指导。
可用技能
数字营销法技能(skills/digital-marketing-law/)
使用law-mcp-server查看与日本数字营销活动相关的法令和合规性的全面指南。此技能适用的法令:
- 表示规制:景品表示法・特定商取引法(特商法)・消费者契约法
- 个人信息跟踪:个人情报保护法・电气通信事业法・特定电子メール法
- 平台法规:数字平台透明化方法提供商责任法
- 业种别法律:薬机法・金融商品取引法(金商法)
- 知的财产: 著作権法・商標法・不正競争防止法
- 競争法: 独占禁止法
主要功能:
- 根据正式名称、简称、条编号的检索模式
- 5个实践工作流(隐私政策制定、广告审查、邮件营销、平台交易、修改跟踪)
- JIAA/APTI活动、客户建议、合规性检查的实际用例
- 常见的Q&A(Cookie同意、Influencer Marketing、比较广告、AI生成内容、重定)
使用方法:
- 阅读技能文件:
skills/digital-marketing-law/digital-marketing-law-SKILL.md - 浏览适合任务的工作流
- 使用提供的搜索关键字和工具序列
- 遵循法规搜索和完整性检查的最佳实践
在Claude上使用技能
要使Claude能够有效地使用这些技能,请执行以下操作:
- 对于Claude Desktop:如果设置了law-mcp-server,则该存储库的技能将自动可用
- 对于Claude API:包括技能内容作为系统提示和参考文档
- 定制集成:在MCP服务器设置中指定技能目录
技能提高了Claude的能力:
- 选择适合特定法律查询的工具
- 使用适当的检索关键字(正式名称vs.简称)
- 应用域知识进行有效的法规搜索
- 结构化多阶段法规遵从性检查
- 提供上下文建议
云运行部署
- 容器映像
Dockerfile在中构建(默认值:TRANSPORT=sse、PORT=8080)。 - GitHub操作工作流:
.github/workflows/deploy.yml的main到push在中部署。 - 所需的GitHub Secrets:
GCP_PROJECT_ID・GCP_WORKLOAD_IDENTITY_PROVIDER・GCP_SERVICE_ACCOUNT・API_KEY(作为HTTP认证密钥使用)。 - 区域区域区域目标: `asia-northeast1-docker.pkg.dev/
/law-mcp-server/law-mcp-server`(PROJECT_ID为专用项目)。
- 工作流的云运行设置:
min-instances=1・concurrency=10、环境变数TRANSPORT=sse・API_KEY(PORT是Cloud Run自动设置的)。 .env由于在git中被忽略,所以密码必须保存在本地而不提交。
検证计画(実装予定)
- 引用的珀斯条文匹配计分API响应规范化单元测试。
- 成功·404.429/503为了覆盖重试非法LawID的情况,模仿法令API的集成测试。
- 集成测试流道:
npm run test(使用undici MockAgent,无需网络)。 - 手动烟雾测试:在MCP客户端(例如,Claude Desktop)上
search_laws和check_consistency执行命令。
许可证
- MIT许可证
