内容
# 华盛顿法律 MCP 服务器
一款提供华盛顿州修订版华盛顿法典(RCW)和华盛顿州行政法典(WAC)离线访问功能的 MCP(模型上下文协议)服务器,供 AI 代理使用。
## 功能特点
- **完全离线**: 所有法律文本均存储在本地 SQLite 数据库中
- **快速访问**: 快速检索任意 RCW 或 WAC 章节
- **全文搜索**: 使用 SQLite FTS5 在所有华盛顿州法律中进行搜索
- **全面覆盖**: 访问所有 RCW 目录、章节和条款
- **MCP 兼容**: 与任何 MCP 兼容的 AI 客户端(Claude 等)配合使用
## 系统架构
该项目由两个主要组件组成:
1. **数据收集阶段**(一次性设置):用于下载所有 RCW/WAC 文本的爬虫
2. **MCP 服务器**(运行时):从本地数据库提供法律文本,无需外部调用
## 安装
```bash
# 克隆仓库
git clone <仓库网址>
cd law_rule_mcp
# 安装依赖
npm install
# 初始化数据库
npm run init:db
# 爬取 RCW 数据(此过程需要几个小时)
npm run scrape:rcw
# 编译 TypeScript 代码
npm run build
```
## 使用
### 运行 MCP 服务器
```bash
npm start
```
### 使用 MCP 检测器进行测试
```bash
npm test
```
### 与 Claude Desktop 配置
在您的 Claude Desktop 配置文件(`~/Library/Application Support/Claude/claude_desktop_config.json`)中添加:
```json
{
"mcpServers": {
"washington-law": {
"command": "node",
"args": ["/path/to/law_rule_mcp/dist/index.js"]
}
}
}
```
## 可用的 MCP 工具
### `get_rcw`
检索特定 RCW 章节的全文。
- **参数**:
- `citation`(字符串):RCW 引用(例如,“46.61.502”)
### `get_wac`
检索特定 WAC 章节的全文。
- **参数**:
- `citation`(字符串):WAC 引用(例如,“296-24-12005”)
### `search_laws`
按关键词或短语搜索华盛顿州法律。
- **参数**:
- `query`(字符串):搜索词
- `limit`(数字,可选):最大结果数(默认:20)
### `list_rcw_titles`
列出所有 RCW 目录及其章节数量。
### `list_rcw_chapters`
列出特定 RCW 目录下的所有章节。
- **参数**:
- `titleNum`(字符串):目录编号(例如,“46”)
### `list_rcw_sections`
列出特定 RCW 章节下的所有条款。
- **参数**:
- `chapterNum`(字符串):章节编号(例如,“46.61”)
### `get_statistics`
获取数据库统计信息,包括章节数量和最后更新时间。
## 项目结构
```
law_rule_mcp/
├── src/
│ ├── index.ts # MCP 服务器入口点
│ ├── database/
│ │ ├── init.ts # 数据库初始化
│ │ └── database.ts # 数据库访问层
│ ├── scraper/
│ │ └── rcw-scraper.ts # RCW 网络爬虫
│ └── types.ts # TypeScript 类型定义
├── data/
│ └── washington-laws.db # SQLite 数据库(爬取后创建)
├── package.json
├── tsconfig.json
└── README.md
```
## 数据库架构
SQLite 数据库包含:
- **rcw** 表:所有 RCW 章节的全文和元数据
- **wac** 表:所有 WAC 章节的全文和元数据
- **rcw_fts** / **wac_fts**:全文搜索索引
- **metadata** 表:数据库版本和更新时间戳
- **scraper_progress** 表:跟踪爬取进度
## 更新数据库
要使用最新更改更新法律数据库:
```bash
# 重新运行爬虫以获取更新的法律
npm run scrape:rcw
```
爬虫将更新现有章节并添加新章节。
## 开发
```bash
# 开发模式
npm run dev
# 编译 TypeScript
npm run build
# 使用 MCP 检测器测试
npm test
```
## 注意事项
- 由于速率限制(尊重爬取),初始爬取需要几个小时
- 数据库大小在压缩后约为 200-500 MB
- 服务器在数据爬取完成后完全离线运行
- 在 MCP 服务器运行期间,所有数据库查询均为只读
## 许可证
MIT