Modgov MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供对modgov议会API的访问,用于检索英国地方议会的议员信息、委员会详细信息、会议日程、选举结果和教区议会数据。
目录
- -
- STDIO传输(默认) - HTTP传输(流式传输) - MCP检查员
- - HTTP API终结点 -
- 议员信息 - 治理与委员会 - 活动和日历 - 地方政府结构 - 选举与民主 - 数字服务 - 理事会发现与管理
- 完整的理事会数据库 - 覆盖率统计 - 已验证的工作示例 - 特别功能 - 议会发现
快速开始
先决条件
- Node.js (18+版本)
- Docker&Docker编写 (用于生产部署)
构建与运行
- 克隆和构建:
git clone
cd modgov-mcp-server
npm install
npm run build- 使用STDIO传输运行:
node dist/index.js- 使用HTTP传输运行:
MCP_TRANSPORT=http node dist/index.js
# Server available at: http://localhost:3003/mcp- MCP检验员测试:
npx @modelcontextprotocol/inspector node dist/index.jsDocker部署
对于生产部署,请使用Docker:
# Build and run
make build && make up
# Server available at: http://localhost:3003/mcp
# Health check: http://localhost:3003/health特性
- 100%成功率:9/9端点功能齐全,具有自动服务器错误解决方法
- API全面覆盖:所有主要的ModGov端点(议员、委员会、会议、选举等)
- 多站点支持:在3个英国议会网站(利奇菲尔德、柯克利斯、利物浦)进行了测试
- 服务器错误处理:WSDL与实际服务器差异的自动解决方法
- 灵活查询:访问议会数据的多种方式(按选区、委员会、日期等)
- 速率限制:内置速率限制(每个域每秒1个请求)以防止API滥用
- 错误处理:强大的错误处理,带有有意义的错误消息
- 理事会查询:智能模糊匹配,按名称或地区查找议会
🚨 关键服务器错误解决方法
存在重大差异 在官方WSDL文档和实际的ModGov服务器实现之间。此MCP服务器自动处理以下问题:
参数要求不匹配
WSDL中标记为“可选”的许多参数是 实际需要 按服务器:
| 端点 | WSDL显示可选 | 实际必需 |
|---|---|---|
GetMeetings | sFromDate, sToDate | ✅ 必需 |
GetAllMeetingsByDate | lCommitteeId, bIsAscendingDateOrder | ✅ 必需 |
GetCalendarEvents | bGlobalCalendar, lUserId | ✅ 必需 |
GetWebCastMeetings | lCommitteeId, sFromDate, sToDate | ✅ 必需 |
GetElectionResults | lElectionId | ✅ 必需 |
GetMpOrMepsAndWards | bIsMPs | ✅ 必需 |
应用了自动解决方案
MCP服务器透明地应用这些修复程序:
- 缺少日期:默认为当前年份范围(
YYYY-01-01到YYYY-12-31) - 缺少委员会ID:默认内阁(138)
- 缺少布尔标志:提供合理的默认值(
true用于全球日历等) - 缺少用户ID:公共访问默认为0
测试结果
| 理事会 | 工作终点 | 成功率 |
|---|---|---|
| 利奇菲尔德DC | 9/9 | 100% |
| 科克里斯 | 9/9 | 100% |
| 利物浦 | 9/9 | 100% |
所有测试的站点都显示相同的服务器错误,并且都会自动处理。
🧪 测试
测试结构
tests/
├── integration/ # End-to-end integration tests
├── debugging/ # Debug and investigation scripts
├── utils/ # Utility test scripts
└── README.md # Test documentation运行测试
单元测试(在Docker中)
# Run Jest unit tests in Docker container
make test
# Or use Docker Compose directly
docker-compose run --rm modgov-mcp-server npm test集成测试(在Docker中)
# Test all 9 endpoints end-to-end in Docker
docker-compose run --rm modgov-mcp-server npm run test:integration调试测试(在Docker中)
# Investigate endpoint compatibility across sites
docker-compose run --rm modgov-mcp-server npm run test:debug
# Verify parameter handling
docker-compose run --rm modgov-mcp-server npm run test:params测试结果
- ✅ 100%成功率:9/9个端点正常工作
- ✅ 服务器错误解决方法:自动处理所有WSDL差异
- ✅ 跨站点兼容性:在3个议会网站上进行了测试
📚 文档
OpenAPI/Swagger规范
- 文件:
modgov-openapi-spec.yaml - 状态: ✅ 完整且权威
- 覆盖:所有9个受支持的端点都有真实世界的示例
- 特性:
- 明确记录服务器错误解决方法 - 请求/响应示例 - 参数验证规则 - 跨站点兼容性说明
开发人员资源
- 稳健性报告:
MCP_ROBUSTNESS_REPORT.md-测试和性能细节 - 测试文档:
tests/README.md-完整的测试套件指南 - 实现说明:服务器错误解决方法和最佳实践(见上文部分)
安装
原生Node.js(推荐用于开发)
# Clone and install
git clone
cd modgov-mcp-server
npm install
npm run build
# Run with STDIO transport (default)
node dist/index.js
# Run with HTTP transport
MCP_TRANSPORT=http node dist/index.jsDocker(推荐用于生产环境)
# Using Makefile (recommended)
make build && make up
# Or using Docker Compose directly
docker-compose up --build可用的生成命令:
make build-塑造生产形象make up-开始生产容器make test-在容器中运行测试make logs-查看容器日志make clean-删除容器和图像make shell-打开容器中的shell进行调试
MCP传输选项
Modgov MCP服务器支持STDIO和HTTP传输:
STDIO传输(默认)
非常适合开发和MCP客户端集成:
# Start with STDIO transport
node dist/index.js
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsSTDIO传输特性:
- 默认传输模式
- 交互式stdin/stdout通信
- 非常适合MCP客户端(Claude Desktop、Cursor等)
- 客户端断开连接后终止
HTTP传输(流式传输)
非常适合web服务和API集成:
# Start with HTTP transport
MCP_TRANSPORT=http node dist/index.js
# Or with custom port
MCP_TRANSPORT=http MCP_PORT=3005 node dist/index.jsHTTP传输端点:
- MCP协议:
http://localhost:3003/mcp - 健康检查:
http://localhost:3003/health
HTTP传输特性:
- 作为持久web服务器运行
- 基于HTTP的RESTful MCP协议
- 支持流式响应
- 内置健康监测
MCP检查员
使用官方MCP检查器测试您的服务器:
# For STDIO transport (default)
npx @modelcontextprotocol/inspector node dist/index.js
# For HTTP transport
npx @modelcontextprotocol/inspector http://localhost:3003/mcp检查员提供:
- ✅ 交互式工具测试
- ✅ 协议验证
- ✅ 请求/响应调试
- ✅ 模式验证
用法
Docker(生产)
使用HTTP传输进行生产
# Build and run production container
make build && make up
# Or using Docker Compose directly
docker-compose up --build modgov-mcp-server当容器启动时,服务器在端口3003上以HTTP模式自动启动。
HTTP API终结点
MCP服务器在Docker中运行,并在端口3003上公开这些端点:
MCP协议端点
POST http://localhost:3003/mcp
Content-Type: application/json
# Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_councillors",
"arguments": {
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL"
}
}
}健康检查端点
GET http://localhost:3003/health
# Response
{
"status": "healthy",
"timestamp": "2025-01-11T10:20:30.000Z",
"server": "modgov-mcp-server",
"version": "1.0.0",
"transport": "streamable-http"
}Docker日志
MCP服务器包括在Docker中运行时所有工具调用的全面日志记录:
# View real-time logs
docker logs modgov-mcp-server --follow
# View recent logs
docker logs modgov-mcp-server --tail 20日志输出示例:
🛠️ Tool called: get_councillors_by_ward
📍 Parameters: site_url=https://democracy.lichfielddc.gov.uk/mgWebService.asmx
✅ Tool completed: get_councillors_by_ward (1280ms)
🛠️ Tool called: get_committees
📍 Parameters: site_url=https://democracy.lichfielddc.gov.uk/mgWebService.asmx
✅ Tool completed: get_committees (320ms)每个工具调用日志:
- 🔧 工具启动 带有表情符号和工具名称
- 📍 参数 传递给工具
- ✅ 完成 执行时间(毫秒)
MCP服务器运行在 http://localhost:3003/mcp 并支持用于测试所有注册工具的完整MCP协议。
港口冲突解决方案: 如果遇到端口冲突:
# Stop all containers
make down
# Or manually kill processes on ports 3003, 6274, 6277
lsof -ti:3003,6274,6277 | xargs kill -9 2>/dev/null || true停止服务器:
# Stop the Docker container
make down
# Or use Docker Compose directly
docker-compose down故障排除:
- 检查容器日志:
make logs - 验证容器是否正在运行:
docker ps - 测试健康终点:
curl http://localhost:3003/health
可用工具
MCP服务器公开 18工具 查询modgov议会API并查找议会:
✅ 议员信息(无需解决方案)
get_councillors_by_ward-按选区组织所有议员,并附上照片和政治派别get_councillors_by_ward_id-获取议员的特定选区IDget_councillors_by_postcode-获取特定邮政编码的议员get_councillor_details-获取全面的议员资料,包括手术时间和联系方式
✅ 治理和委员会(应用自动解决方案)
get_committees-召集所有委员会(内阁、议会、规划等)get_meetings-获取具有自动日期范围默认值的会议⚙️get_meeting-按ID获取特定会议的详细信息get_all_meetings_by_date-获取具有委员会默认值的特定日期的会议⚙️
✅ 事件和日历(应用自动解决方案)
get_calendar_events-通过自动参数处理获取日历事件⚙️
✅ 地方政府结构(无需解决方案)
get_parish_councils-获取教区议会及其信息
✅ 选举与民主(应用自动解决方案)
get_election_results-使用所需的选举ID获取选举结果⚙️
✅ 数字服务(应用自动解决方案)
get_webcast_meetings-获取带有日期和委员会默认值的网络直播会议⚙️get_mp_or_meps_and_wards-通过布尔标志处理获取MP/MEP信息⚙️get_mp_or_mep_and_wards_by_postcode-获取特定邮政编码的MP/MEP信息⚙️
✅ 理事会发现与管理
find_council-使用模糊匹配按名称查找议会search_councils-搜索具有信任阈值的议会get_council_by_region-获取特定地区的所有议会get_server_diagnostics-获取服务器诊断信息
⚙️ *应用了自动服务器错误解决方法* | ✅ *所有工具均已测试并正常工作*
工具使用示例
所有工具都需要 site_url 指向理事会modgov API端点的参数。
议员信息
按选区获取所有议员:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL"
}为特定选区寻找议员:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL",
"ward_id": 1
}通过邮政编码获取议员信息:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL",
"postcode": "WS14 9AB"
}治理与委员会
召集所有委员会:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL"
}为特定委员会安排会议:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL",
"committee_id": 1
}按ID获取特定会议:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL",
"meeting_id": 123
}地方政府结构
联系教区议会:
{
"site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL"
}
## Response Format
The tool returns JSON data with the following structure:
{ "site_url": "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL", "total_wards": 25, "total_councillors": 47, "wards": [ { "ward_name": "Alrewas and Fradley", "councillor_count": "3", "councillors": [ { "id": "570", "name": "Councillor Sonia Claverley", "party": "The Conservative Party", "group": "Conservative Group", "district": "Lichfield District Council", "representing": "Lichfield District Council", "photos": { "small": "https://democracy.lichfielddc.gov.uk/UserData/0/7/5/Info00000570/smallpic.jpg", "large": "https://democracy.lichfielddc.gov.uk/UserData/0/7/5/Info00000570/bigpic.jpg" }, "additional_info": "...", "key_posts": "..." } ] } ] }
## 速率限制
服务器实现每个域每秒1个请求的速率限制,以防止滥用并遵守API限制。
## 错误处理
服务器提供全面的错误处理:
- **网络错误**:连接超时、DNS解析失败
- **API错误**:响应无效,XML格式错误
- **速率限制**:使用指数回退自动重试
- **验证错误**:参数无效,缺少必填字段
## 发展
### 开发环境
所有开发都在Docker容器中进行:
Start development environment with live code mounting
make dev
This mounts your source code and provides hot reloading
### 运行测试
#### 单元测试(在Docker中)
Run Jest unit tests in development container
make test
Or run tests in watch mode for development
docker-compose --profile dev exec modgov-mcp-dev npm run test:watch
#### 集成测试(在Docker中)
使用真实的API调用测试完整的MCP服务器功能:
Start development environment (Terminal 1)
make dev
Run integration tests (Terminal 2)
docker-compose --profile dev exec modgov-mcp-dev npm run test:mcp
集成测试包括:
- 健康终点验证
- MCP协议合规性
- 工具发现和执行
- 理事会数据检索和验证
看 [TEST_README.md](TEST_README.md) 获取详细的测试文档。
### 建筑
构建过程在Docker容器中自动发生:
Manual build in container
docker-compose --profile dev exec modgov-mcp-dev npm run build
### 停止开发环境
Stop development containers
make down
这将停止所有开发容器并清理资源。
## Docker配置
### 生产容器
生产容器针对部署进行了优化:
docker build -t modgov-mcp-server . docker run -p 3003:3003 modgov-mcp-server
**特征:**
- 多阶段构建,实现最小图像尺寸
- 非root用户安全
- 健康检查
- 仅生产依赖性
- 始终使用HTTP传输在端口3003上运行
### 测试Docker设置
验证你的Docker容器是否正常工作:
Build and test
make build make up
Check health endpoint
curl http://localhost:3003/health
**预期的健康反应:**
{ "status": "healthy", "timestamp": "2025-01-11T10:20:30.000Z", "server": "modgov-mcp-server", "version": "1.0.0", "transport": "streamable-http" }
### MCP服务器行为
**重要提示:** MCP服务器在Docker容器内以HTTP模式连续运行。这与stdio模式不同,在stdio模式下,服务器在每次请求后都会退出。
- 服务器保持运行并侦听端口3003
- 每个MCP请求都通过HTTP处理
- 容器将显示为 `running` (未退出)
- 使用 `make logs` 监视服务器输出
## 建筑
服务器由三个主要组件组成:
1. **ModgovClient**:处理对modgov API的HTTP请求、XML解析和速率限制
1. **摩登派青年**:MCP服务器实现,包括工具注册和请求处理
1. **类型定义**:API响应和数据结构的TypeScript接口
## 支持的议会网站
服务器使用 **任何支持modgov的议会网站**。我们的数据库包括 **44个经过验证的委员会** 在英国所有地区。
### **完整的理事会数据库**
|议会|地区|类型|URL|
|---------|--------|------|-----|
| **巴斯和东北萨默塞特议会** |西南部|统一管理局|https://democracy.bathnes.gov.uk/ |
| **布伦特伍德自治市议会** |英格兰东部|自治市议会|https://brentwood.moderngov.co.uk/ |
| **布莱顿霍夫市议会** |东南部|市议会|https://democracy.brighton-hove.gov.uk/ |
| **布里斯托尔市议会** |西南部|市议会|https://democracy.bristol.gov.uk/ |
| **白金汉郡议会** |英格兰东部|统一权威|https://buckinghamshire.moderngov.co.uk/ |
| **剑桥市议会** |英格兰东部|市议会|https://democracy.cambridge.gov.uk/ |
| **卡迪夫议会** |威尔士|统一管理局|https://cardiff.moderngov.co.uk/ |
| **奇切斯特区议会** |东南|区议会|https://chichester.moderngov.co.uk/ |
| **林肯市议会** |东米德兰兹|市议会|https://lincoln.moderngov.co.uk/ |
| **伍尔弗汉普顿市议会** |西米德兰兹郡|大都会区|https://wolverhampton.moderngov.co.uk/ |
| **约克市议会** |约克郡和亨伯市议会https://democracy.york.gov.uk/ |
| **考文垂市议会** |西米德兰兹郡|市议会|https://edemocracy.coventry.gov.uk/ |
| **东汉普郡区议会** |东南|区议会|https://easthants.moderngov.co.uk/ |
| **大伦敦管理局(GLA)** |伦敦|联合管理局|https://gla.moderngov.co.uk/ |
| **黑斯廷斯自治市议会** |东南|自治市议会|https://hastings.moderngov.co.uk/ |
| **利兹市议会** |约克郡和亨伯市议会https://democracy.leeds.gov.uk/ |
| **莱斯特郡议会** |东米德兰兹郡议会https://democracy.leics.gov.uk/ |
| **利奇菲尔德区议会** |西米德兰兹郡|区议会|https://lichfield.moderngov.co.uk/ |
| **利物浦市议会** |西北部|市议会|https://councillors.liverpool.gov.uk/ |
| **巴纳区** |伦敦|伦敦自治市|https://barnet.moderngov.co.uk/ |
| **英国伦敦布伦特区** |伦敦|伦敦自治市|https://democracy.brent.gov.uk/ |
| **自治市** |伦敦|伦敦自治市|https://camden.moderngov.co.uk/ |
| **伦敦克罗伊登区** |伦敦|伦敦自治市|https://croydon.moderngov.co.uk/ |
| **伦敦哈林盖区** |伦敦|伦敦自治市|https://www.minutes.haringey.gov.uk/ |
| **伦敦哈罗区** |伦敦|伦敦自治市|https://moderngov.harrow.gov.uk/ |
| **伦敦哈弗林区** |伦敦|伦敦自治市|https://democracy.havering.gov.uk/ |
| **伦敦Hounslow区** |伦敦|伦敦自治市|https://democraticservices.hounslow.gov.uk/ |
| **伊斯林顿伦敦自治市** |伦敦|伦敦自治市|https://islington.moderngov.co.uk/ |
| **伦敦南华克区** |伦敦|伦敦自治市|https://moderngov.southwark.gov.uk/ |
| **伦敦萨顿区** |伦敦|伦敦自治市|https://moderngov.sutton.gov.uk/ |
| **陶尔哈姆莱茨区** |伦敦|伦敦自治市|https://democracy.towerhamlets.gov.uk/ |
| **梅德韦委员会** |东南部|统一管理局|https://democracy.medway.gov.uk/ |
| **纽卡斯尔市议会** |东北|市议会|https://democracy.newcastle.gov.uk/ |
| **朴茨茅斯市议会** |东南部|市议会|https://democracy.portsmouth.gov.uk/ |
| **泰晤士河畔金斯顿皇家自治市** |伦敦|皇家自治市|https://kingston.moderngov.co.uk/ |
| **谢菲尔德市议会** |约克郡和亨伯市议会https://democracy.sheffield.gov.uk/ |
| **南剑桥郡区议会** |英格兰东部|区议会|https://scambs.moderngov.co.uk/ |
| **三江区议会** |英格兰东部|区议会|https://moderngov.threerivers.gov.uk/ |
| **白马谷区议会** |东南|区议会|https://democratic.whitehorsedc.gov.uk/ |
| **沃里克郡议会** |西米德兰兹郡议会https://warwickshire.moderngov.co.uk/ |
| **沃特福德区议会** |英格兰东部|自治市议会|https://watford.moderngov.co.uk/ |
| **英格兰西部联合管理局** |西南部|联合管理局|https://westofengland-ca.moderngov.co.uk/ |
| **威勒尔委员会** |西北|大都会区|https://wirral.moderngov.co.uk/ |
| **伍斯特郡议会** |西米德兰兹郡议会https://worcestershire.moderngov.co.uk/ |
### **覆盖率统计**
- **理事会总数**: 44
- **覆盖区域**:11(英国所有地区)
- **议会类型**:10种不同的权限类型
- **测试站点**:3(利奇菲尔德、柯克利斯、利物浦-100%成功率)
### **已验证的工作示例**
|理事会|URL|委员会ID|备注|
|---------|-----|---------------|-------|
| **利奇菲尔德区议会** | `https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL` |内阁:138,议会:136,规划:135 |主要试验场|
| **柯克利斯议会** | `http://democracy.kirklees.gov.uk/mgWebService.asmx?WSDL` |相同模式|相同行为|
| **利物浦市议会** | `https://democracy.liverpool.gov.uk/mgWebService.asmx?WSDL` |相同模式|相同行为|
| **伦敦萨顿区** | `https://moderngov.sutton.gov.uk/mgWebService.asmx` |完整的端点文档|全面的API测试|
### **特别功能**
- **伦敦萨顿区**:包括详细的端点文档,包括参数规范、响应格式和工作示例
- **议会发现**:内置模糊匹配功能,可按名称查找议会(`find_council`)
- **区域搜索**:查找特定地区的所有议会(`get_council_by_region`)
- **信心评分**:使用可配置的置信阈值进行搜索(`search_councils`)
### **议会发现**
使用内置的议会查找工具:
Find a specific council
curl -X POST http://localhost:3003/mcp \ -H "Content-Type: application/json" \ -d '{"method": "tools/call", "params": {"name": "find_council", "arguments": {"council_name": "Leeds"}}}'
Search councils by region
curl -X POST http://localhost:3003/mcp \ -H "Content-Type: application/json" \ -d '{"method": "tools/call", "params": {"name": "get_council_by_region", "arguments": {"region": "West Midlands"}}}'
## API发现
要发现特定议会网站的可用操作,您可以检查WSDL:
curl "https://democracy.lichfielddc.gov.uk/mgWebService.asmx?WSDL" | grep -i "council"
## 例子
看 [`examples/`](./examples/) 完整配置示例的目录:
- **光标**: `examples/cursor-mcp.json`
- **克劳德桌面版**: `examples/claude-desktop-config.json`
- **VS Code**: `examples/vscode-mcp.json`
- **Docker生产**: `examples/docker-compose.production.yml`
- **Nginx配置**: `examples/nginx.conf`
- **测试客户端**: `examples/test-mcp-client.js`
- **邮差收藏**: `examples/postman-collection.json`
- **环境配置**: `examples/env-example.txt`
### 快速测试
使用提供的脚本测试您的设置:
./examples/test-setup.sh
### 配置说明
MCP服务器支持原生Node.js执行和Docker部署。选择与部署方法匹配的配置。
### MCP客户端配置
选择与您的传输偏好相匹配的配置:
**✅ HTTP传输(建议用于生产环境):**
{ "mcpServers": { "modgov-council": { "url": "http://localhost:3003/mcp", "headers": { "Content-Type": "application/json", "Accept": "application/json, text/event-stream" } } } }
**✅ STDIO运输(建议开发):**
{ "mcpServers": { "modgov-council": { "command": "node", "args": ["dist/index.js"], "cwd": "/path/to/modgov-mcp-server" } } }
**服务器要求:**
**对于HTTP传输:**
- 启动服务器: `MCP_TRANSPORT=http node dist/index.js`
- 或者使用Docker: `make build && make up`
- 服务器位于: `http://localhost:3003/mcp`
- 健康检查: `curl http://localhost:3003/health`
**对于STDIO传输:**
- 构建项目: `npm run build`
- 客户端将生成: `node dist/index.js`
- 不需要持久服务器
## 🎯 **最佳实践**
1. **始终使用MCP服务器** -它自动处理所有服务器错误
1. **不要只依赖WSDL** -测试实际服务器行为
1. **优雅地处理500个错误** -可能表示服务器错误,而不是客户端错误
1. **使用合理的默认值** -MCP自动提供
1. **跨多个站点进行测试** -行为是一致的,但要验证
1. **使用议会发现工具** -轻松按名称或地区查找议会
## 🔧 **错误处理示例**
// The MCP server handles these automatically, but for direct API usage: try { const result = await modgovClient.getMeetings(siteUrl, 138); } catch (error) { if (error.message.includes('Missing parameter')) { // This indicates a server bug, not client error console.log('Server implementation bug detected - use MCP server instead'); } }
## 贡献
1. 遵循TDD原则——先编写测试
1. 在提交之前,确保所有测试都通过
1. 添加具有全面测试覆盖率的新功能
1. 针对任何API更改更新文档
## 许可证
麻省理工学院