内容
法规查询系统
 -->
> **"我想开一家咖啡店,可以享受税收减免吗?"**
> → Claude 调用 `search_law` → `get_article`,返回 **《税收优惠限制法》第6条(创业中小企业税收减免)** 原文和生效日期(2026.01.01)作为依据。并通过 `verify_citation` 验证引用是否真实。
如果这个项目对你有帮助,请给一个 ⭐,这将是对我很大的鼓励。
## 🚀 立即使用 — 无需安装
远程服务器已部署,无需本地安装即可直接连接:`https://startup-law-mcp.fly.dev/mcp`
(Fly.io 应用名称可能会在部署时根据全局唯一性检查后更改 - 实际URL请参考存储库公告)。
| 客户端 | 注册方法 |
|---|---|
| / cl | 设置器 → 自定义 → 输入上述URL |
| Claude Code |aude mcp add --transport http startup-law https://startup-law-mcp.fly.dev/mcp` |
远程版仅开放个工具**(不包括管理工具),数据更新通过自动重新部署处理。闲置时机器会进入休眠状态,因此第一个请求可能会启动而延迟几 之后的请求会很快。 如果需要在本地运行所有14个工具(包括管理工具),请按照下面的“快速入门”进行。
**创业法规 + K-Startup 支持计划一体化MCP** - 将创业相关的核心法律法规按,并与K-Startup的支持计划查询结合,在Claude Desktop等M中直接提供可引用的依据。
## 解决的问题
- **通用法律法规搜索的局限性**:现有的法律法规MCP通常是针对国家中心的所有法律法规(数千个)进行搜索,很难满足创业领域的问题查询,容易出现无关结果。 本项目仅针对与创业相关的19个法律法规(及其实施令、实施规则)进行精选,提高准确性。
- **LLM的条款幻觉**:LLM经常生成不存在的条款引用或编造标题,通过索引对比来解决这个问题(`verify_citation` **条款间的引用追踪**: "本条款在其他地方被引用" 和 "本条款引用了其他法律法规" 的问题在 法律↔实施令↔其他法律法规 的范围内以图展现(`find_references`)。
- **数据新鲜度**:法律法规经常修订,通过一次同步脚本直接反映信息中心的现行版本。
- **支持计划探索**: "当前有哪些可以申请的创业支持计划?" 仅凭法律法规无法回答。 从K-Startup的查询服务中获取计划公告和介绍,并计算出申请状态(open/closing_soon/upcoming/closed)和截止日期(`search_program`, `list_open_programs。
## 索引范围
精选19 + 下属实施令、实施规则,共 **50个文档 · 8,191个条款** (截至2026-07-11,`data/sources.json` 实测值)。 法律名称和现行性在每次同步时都会通过开放API重新确认。
| 分类 | 法律 | 文档数(法律+实施令/规则) | 条款数 | 当前生效日期 |
|---|---|---:|---:|---|
| 创业·风险投资核心 | 中小企业创业支持法 | 3 | 157 | 2026.07.01 |
| 创业·风险投资核心 | 风险企业育成特别法 | 3 | 429 | 2026.07.01 |
| 创业·风险投资核心投资促进法 | 3 | 219 | 2026.07.01 |
| ... | ... | ... | ... |
精选 `data/laws.json` 中维护。
### 支持计划(K-Startup)
从公共数据门户的“K-Startup 查询服务”获取快照 - **309个计划公告** (仅筛选当前正在募集或即将截止的,截至2026-07-12)+ **511个计划介绍** (所有制度目录)。 存储在 `data/programs/*.json` 中,公告包含募集期间、申请对象、状态、截止日期, 介绍包含、支持内容。
## 快速入门
### 1. 要求
- Python 10+ (仅使用标准库 + `mcp` 包)
- 国家法律法规信息中心 OC密钥 - 在 [open.law.go.kr](https://open.law.go.kr) 上免费获取 (邮箱ID前缀为OC值)
- (可选)公共数据认证密钥 - 如果需要使用支持计划查询功能,请在 [data.go.kr](https://www.data.go.kr) 上-Startup 查询服务”并获取认证密钥码)。 **此密钥与法律法规OC密钥完全不同**,环境变量名称为 `DATA_GO_KR_KEY`。
```bash
pip install -r requirements.txt
```
### 2. 法律同步 + 索引构建
```bash
# Windows (PowerShell)
$env:LAW_OC = "获取的OC密钥"
python law_sync.py sync
python law_search.py build
# macOS/Linux
export LAW_OC=获取的OC密钥
python law_sync.py sync
python law_search.py build
```
`law_sync.py sync` 通过开放API查询 `data/laws.json` 中的精选列表,更新 `data/laws/*.md`(每个法律的Markdown文件)和 `data/sources.json`(清单)。
`law_search.py build` 将Markdown文件按条款解析,生成 `data/index.json`(用于搜索,不提交)。
### 3. 支持计划同步(可选)
```bash
# Windows (PowerShell)
$env:DATA_GO_KR "获取的认证密钥"
python program_sync.py sync
# macOS/Linux
export DATA_GO_KR_KEY=获取的认证密钥
python program_sync.py sync
```
更新 `data/programs/announcements.json`(当前公告)和 `data/programs/intros.json`(所有计划介绍)。 存储库中已提交初始同步快照,因此仅在需要最新公告时运行(或在MCP客户端调用 `sync_programs` 工具)。
4. 连接到Claude Desktop
在 `%APPDATA%\Claude\claude_desktop_config.json`(Windows)或 `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)中注册:
```json
{
"mcpServers": {
"startup-law": {
command": "python",
"args": ["C:/绝对/路径/startup-law-mcp/server.py"]
}
}
}
```
重启Claude Desktop后,将识别14个工具。
## 使用示例
Claude Desktop中自然语言提问,服务器自动调用搜索→查询工具。
- "创业企业税收减免条件是什么" → `search_law` + `get_article` → 《税收优惠限制法》第6条(创业中小企业税收减免)作为依据回复
- "风险企业认定条件是什么" → 《风险企业育成特别法》第25条(风险企业认定)等相关条款
- "员工首次招聘时劳动合同应该怎么写" → 《劳动基准法》第17条(劳动条件的明示)
- "验证以下引用的真实:..." → `verify_citation` 分类为 ok / not_found / content_mismatch(标题幻觉)/ unknown_source
- "哪些条款引用了企业创业支持法》第2条" → `find_references` 显示法律、实施令、其他法律的引用图谱
- "有哪些可以申请的创业支持计划" → `search_program` 返回计划介绍和当前公告(创业者支持包、创业企业支持等)
- "创业者支持包资格要求的法律依据是什么" → `search_program` 查询支持对象、申请期间 + `search_law` 查询创业者、中小企业主定义的条款作为综合回复
- "法律法规中委托给实施令的条款有哪些" → `delegation_map` 显示法律条款委托给总统令的情况,哪些条款已在下中具体化,哪些条款尚未具体化(`sync_check`)
## 14个工具
> 输入框中 `?` 开头的参数可选**,其余为必填。`limit` 仅在1-50范围内整数有效。`law_type` 使用索引中的实际法律类型值,可以通过 `list_laws` 查询。
法律法规(5个):
| 工具 | 输入 | 返回 |
|---|---|---|
| `search_law` | `query, law_type?, source?, limit?, fuzzy?` | 条款级别搜索结果(snippet + 引用 + 评分) |
| `get_article` | `source, article` | 条款全文(包括生效日期) |
| `list_laws` | `law_type?` | 已索引的法律法规列表 + 生效日期 + 条款数 |
| `verify_citation` | `text 文本中"○○法条"引用验证 |
|_references` | `source, limit?, include_mermaid? 目标条款的正向、引用图谱 |
支持计划个,v1.1):
| 工具 | 输入 | 返回---|---|---|
| `search_program` | `query, status?, include_closed?, limit?` | 公告+搜索结果 |
| `get_program` | `name` | 计划名称部分匹配的详细信息(计划介绍、公告所有字段,最大5个) |
| `list_open_programs` | `limit?` | 正在募集、即将截止、即将募集的公告日期升序 |
| `sync_programs` | (无) |-Startup重新收集公告、计划介绍 → 快照替换 |
其他(1个,v1.2):
| 工具 | 输入 | 返回 |
|---|---|---|
| `data_status` | (无) | 法律、支持计划数据状态 - 条款/公告/介绍数量、收集时间、过期警告、同步错误、停滞的法律法规 |
创业特化(3个,v1.3):
| 工具 | 输入 | 返回 |
|---|---|---|
| `delegation_map` | `source, article?` | 法律→实施令、实施规则委托地图 - 总统令委托条款在下属法律法规中的具体化,及未具体化的条款 |
| `startup_stage_guide` | `stage?` | 创业6阶段指南 - 每个阶段的核心条款(真实性验证后`missing`标记)、检查清单、当前正在募集的支持计划 |
| `check_effective_date` | `source, article?` | 法律、条款的生效状态 - 生效/即将生效(D-day)/过期措施判定 |
咨询特化(1个,v2.1):
| 工具 | 输入 | 返回 |
|---|---|---|
| `match_programs` | `age?, region?, pre_startup?, years?, keyword?, limit?` | 基于个人资料的支持计划资格筛查 - 拒绝理由mismatch`)明确的公告除外,按截止日期返回,条件基础和解释不可用项(`unknown`)和需要审查项(`needs_review`)标记 |
## Claude Code 技能 — startup-consult (单独存储库)
使用此服务器作为咨询形式的Claude Code技能在单独的存储库中管理:**https://github.com/Choihello/startup-consult** - 从对话中提取个人资料,使用`match_programs`进行筛查,整理咨询卡,并以法律依据解释模糊的资格条件,而不是明确表示。 安装方法请参考README。
## 数据结构
/
├── laws.json # 精选列表(法律名称、分类)- 同步输入
├── sources.json # 同步清单(法律名称、法律类型、发布/生效日期、主管部、错误)- 提交对象
├── laws/ # 法律的Markdown文件 "{法律类型}_{法律名称}.md" - 提交对象
│ └── 法律_中小企业创业支持法.md
├── index.json # 搜索用条款数组(build产物,不提交)
├── programs/ # K-Startup支持计划快照 - 提交对象
│ ├── announcements.json # 当前计划公告(fetched_at, count, items[])
│ └── intros.json # 所有计划介绍(fetched_at, count, items[])
├── stages.json # 创业6阶段精选(id/order/name/summary/key_articles/
│ # checklist/program_hints)- 提交对象。条款引用在查询时通过索引实时验证(`tests/test_stages_data.py` 测试确保),不存在的条款以missing标记
└── _cache/ # probe结果原始JSON(不提交)
```
`server.py`(stdio,本地14个工具)和 `server_http.py`(streamable-http,远程部署13个工具,不含`sync_programs`)共享相同的 `register_tools()`,并直接读取 `data/`。
法律法规Markdown遵循固定格式(解析器依赖此格式):
```markdown
# {法律名称} ({法律类型} 第{发布号}号, 生效 {生效日期})
- 法律类型: {法律类型}
- 发布日期: ...
- 生效日期: ...
- 主管部: ...
## {章标题}
### 第{N}条({条款标题})
< 生效 {条款生效日期} >
{条款正文 — 条、款、目 平铺}
## 附则 <第{发布号}号, {发布日期}>
{附则正文}
```
## 现行性维护
法律法规经常修订,因此需要定期重新同步。
```bash
python law_sync.py sync # 全部精选列表重新同步
python law_sync.py sync --only 创业 # 仅名称包含“创业”的法律法规
python law_search.py build # Markdown → 索引重建(同步后始终执行)
```
添加新法律法规时,在 `data/laws.json` 中添加条目,然后执行` → `build`。
## 技术备忘录
- **最小化依赖**:搜索、索引、同步全流程仅使用标准库(正则表达式、JSON、urllib)。MCP服务器部分仅依赖 `mcp` 包。未采用嵌入式/语义搜索 -项比准确性和透明度更重要。
- **搜索算法韩语分词器 + TF·IDF 评分,可选音节bi-gram模糊匹配(“税收减免要求”作为“税收减免要求”匹配,部分匹配类型)。附则块通常是长文档,容易因简单出现次数而获得比实际条款更高的分数。对附则分数 × 0.2 的权重调整,使核心条款优先显示 - 但如果已知准确的法律名称和条款编号,直接使用 `get_article` 更准确。
- **引用验证**:`verify_citation` 在"N条"模式前80个字符内查找最近的法律名称并归括号内的标题是实际条款标题的部分(缩写)或音节bi-gram Jaccard ≥ 0.4 视为同义词,否则标记为 `content_mismatch`(标题幻觉可能)。
- **引用图谱**:`find_references` 解析"「法律名称」第N条"形式的外部引用和法律名称省略的内部引用(同法)。准确匹配优先于子字符串匹配,以防止"○○法"归因于"○○法实施令"。
- **错误隔离**:同步过程中单个法律查询失败仅记录在 `errors` 中,不会中止整个同步。
- **支持计划状态计算**:计划API不直接提供状态字段,因此通过 `apply_start` / `apply_end` 和当前日期比较,计算出 upcoming/open/closing_soon(距截止日期7天内)/closed/unknown(日期解析失败)。计划介绍是永久信息,无状态和截止日期。
## 路线图
- **v1.0** - 精选19个法律法规索引,基本5个工具 + CLI,本地stdio
- **v1.1** - 集成K-Startup支持计划:`search_program` / `get_program` / `list_open_programs` / `sync_programs` 4个工具(共9个),初始同步310个公告 + 511个计划介绍
- **v1.2稳定补丁** - 同步保护逻辑(0件·急剧下降70%·模式验证·原子替换),URL边界归一化,清单索引 + stale标记,输入验证(`invalid_input`,`limit` 1~50),`verify_citation` 增加 `ambiguous_source`,`data_status` 工具(第10个),CI(pytest,Windows/Linux)
- **v1.3 创业特化** - 新增3个工具(共13个):`delegation_map`(法律→实施令·实施规则委托条款自动连接 + 维护检查),`startup_stage_guide`(创业6阶段核心条款·检查清单·支持计划精选,`data/stages.json` + 条款真实性门控测试保证),`check_effective_date`(条款生效日期·过渡规定检查)
- **v1.4 自动同步** - GitHub Actions 每周同步(法律法规+支持计划)变更检测自动PR
- **v2.0 远程 - `server_http.py`(streamable-http,12个+ Docker + Fly.io部署(`fly.toml`,``工作流)→ 无需安装,通过一个URL连接,`main`合并时远程服务器自动重新部署
- **v2.1 咨询筛查(当前)** - `match_pro 工具(基于个人资料的资格筛查,共14个13个)+ 咨询技能 [startup-consult](https://github.com/Choihello/startup-consult) 单独存储库公开(咨询卡格式,资格解释提供依据·不明确)
## 许可
- **代码**:MIT。
- **法律法规数据**:从国家法律法规信息中心开放API收集的公共领域作品,根据《著作权法》第24条之2(公共领域作品的自由利用)使用。
- **支持计划数据**:由创业振兴院(K-Startup)在公共数据门户(data.go.kr)上提供的“K-Startup 查询服务”公共领域作品。
- **免责声明**:存储库中的法律法规条款和支持计划信息仅供参考,具有法律效力的官方条款必须在 [国家法律法规信息中心](https://www.law.go.kr) 上查询,支持计划申请前必须在 [K-Startup](https://www.k-startup.go.kr) 上查询原始公告。 本服务器不提供法律咨询,支持计划信息的应用资格和截止日期以快照时为准,实际申请前必须再次确认。