使用说明
BMLT MCP服务器
一个模型上下文协议(MCP)服务器,为匿名麻醉品会议数据提供对BMLT(基本会议列表工具)API的全面访问。具有智能地理编码、速率限制和缓存功能,可实现最佳性能。
🚀 概述
该MCP服务器将所有BMLT Semantic API端点公开为工具,允许Claude等人工智能助手从任何BMLT根服务器查询会议数据、格式、服务主体、更改等。非常适合以恢复为重点的应用程序和人工智能助手。
✨ 特性
- 🎯 API全面覆盖:所有9个BMLT语义API端点
- 🌍 智能地理编码:使用OpenStreetMap自动转换地址到坐标
- ⚡ 速率限制:具有自动速率限制的API使用尊重(1 req/sec用于地理编码)
- 🏠 智能缓存:24小时内存缓存用于地理编码结果(最多100个条目)
- 🔄 重试逻辑:速率限制和网络错误的指数回退
- 📊 多种格式:JSON、JSONP、CSV和TSML格式
- 🔒 类型安全:具有全面类型的完整TypeScript实现
- 🛡️ 错误处理:强大的错误处理,带有有意义的错误消息
- ✅ 验证:参数验证和端点兼容性检查
- ⚙️ 灵活的配置:环境变量配置
可用工具
1. bmlt_search_meetings
搜索具有广泛过滤选项的会议。
参数:
format:响应格式(json,jsonp,tsml)meeting_ids:要包含/排除的特定会议IDweekdays:一周中的天数(1=星期日,2=星期一,…,7=星期六)venue_types:场地类型(1=面对面,2=虚拟,3=混合)formats:设置ID的格式以包含/排除services:要包含/排除的服务体IDrecursive:包括儿童服务机构SearchString:要搜索的文本StringSearchIsAnAddress:将搜索字符串视为地址lat_val,long_val:地理坐标geo_width,geo_width_km:搜索半径StartsAfterH,StartsAfterM:时间过滤page_size,page_num:分页advanced_published:已发布状态筛选(默认值=仅发布,0=所有会议,-1=仅未发布)- 还有更多。..
特殊功能:
- 智能地址地理编码:使用时
StringSearchIsAnAddress=1,使用OpenStreetMap的Nominim服务将地址自动地理编码为坐标,避免了BMLT服务器地理编码问题 - 费率限制请求:地理编码请求之间自动间隔1.1秒,以遵守API限制
- 智能缓存:地理编码结果将缓存24小时以提高性能
- 后备处理:如果地理编码失败,则自动回退到文本搜索
2. bmlt_get_formats
检索可用的会议格式。
参数:
format:响应格式(json,jsonp)lang_enum:语言代码show_all:显示所有格式或仅显示已使用的格式format_ids:要筛选的特定格式IDkey_strings:设置筛选关键字字符串的格式
3. bmlt_get_service_bodies
获取服务机构列表。
参数:
format:响应格式(json,jsonp)services:要包含/排除的服务体IDrecursive:包括儿童服务机构parents:包括上级服务机构
4. bmlt_get_changes
检索日期范围内的会议更改。
参数:
format:响应格式(json,jsonp)start_date:开始日期(YYYY-MM-DD)end_date:结束日期(YYYY-MM-DD)meeting_id:特定会议IDservice_body_id:服务主体ID
5. bmlt_get_field_keys
获取可用字段键的列表。
参数:
format:响应格式(json,jsonp)
6. bmlt_get_field_values
获取给定字段键的特定字段值。
参数:
format:响应格式(json,jsonp)meeting_key:获取值的字段键(必填)specific_formats:逗号分隔格式IDall_formats:包括所有格式
7. bmlt_get_naws_dump
以NAWS格式导出会议数据(仅CSV)。
参数:
sb_id:服务机构ID(必填)
8. bmlt_get_server_info
获取服务器信息,包括版本和配置。
参数:
format:响应格式(json,jsonp)
9. bmlt_get_coverage_area
获取地理覆盖区域信息。
参数:
format:响应格式(json,jsonp)
📦 安装
先决条件
- Node.js 18.0.0或更高版本
- npm或纱线
从npm安装
# Install globally
npm install -g bmlt-mcp-server
# Or install locally in your project
npm install bmlt-mcp-server
从源代码安装
git clone https://github.com/bmlt-enabled/bmlt-mcp-server.git
cd bmlt-mcp-server
npm install
npm run build
npm install -g .
配置
环境变量
BMLT_ROOT_SERVER_URL(必填):BMLT根服务器的基本URLBMLT_TIMEOUT:请求超时(毫秒)(默认值:30000)BMLT_USER_AGENT:自定义用户代理字符串
配置示例
export BMLT_ROOT_SERVER_URL=https://bmlt.example.org/main_server/
export BMLT_TIMEOUT=60000
export BMLT_USER_AGENT=MyApp-BMLT-MCP/1.0.0
用法
运行服务器
# Using environment variables
BMLT_ROOT_SERVER_URL=https://bmlt.example.org/main_server/ bmlt-mcp-server
# Or if installed from source
BMLT_ROOT_SERVER_URL=https://bmlt.example.org/main_server/ node dist/index.js
与Claude Desktop一起使用
将此添加到您的Claude Desktop配置中:
{
"mcpServers": {
"bmlt": {
"command": "bmlt-mcp-server",
"env": {
"BMLT_ROOT_SERVER_URL": "https://your-bmlt-server.org/main_server/"
}
}
}
}
开发示例
{
"mcpServers": {
"bmlt-mcp-server": {
"command": "node",
"args": ["/PATH_TO_REPO/bmlt-mcp-server/dist/index.js"],
"env": {
"BMLT_ROOT_SERVER_URL": "https://your-bmlt-server.org/main_server/"
}
}
}
}
与其他MCP客户端一起使用
服务器遵循标准MCP协议,可以与任何兼容MCP的客户端一起使用。
例子
搜索周末的虚拟会议
// Tool call
{
"name": "bmlt_search_meetings",
"arguments": {
"venue_types": [2], // Virtual only
"weekdays": [1, 7], // Sunday and Saturday
"page_size": 10
}
}
获取所有德语格式
// Tool call
{
"name": "bmlt_get_formats",
"arguments": {
"lang_enum": "de",
"show_all": 1
}
}
搜索地理位置附近
// Tool call
{
"name": "bmlt_search_meetings",
"arguments": {
"lat_val": 47.6062,
"long_val": -122.3321,
"geo_width_km": 10,
"sort_results_by_distance": 1
}
}
获取上个月的更改
// Tool call
{
"name": "bmlt_get_changes",
"arguments": {
"start_date": "2024-01-01",
"end_date": "2024-01-31"
}
}
导出NAWS数据
// Tool call
{
"name": "bmlt_get_naws_dump",
"arguments": {
"sb_id": 123
}
}
搜索所有会议(已发布和未发布)
// Tool call
{
"name": "bmlt_search_meetings",
"arguments": {
"advanced_published": 0,
"venue_types": [2],
"page_size": 10
}
}
发展
设置
git clone <repository-url>
cd bmlt-mcp-server
npm install
可用脚本
npm run dev:以热重载的开发模式运行npm run build:为生产而建造npm run watch:构建并观察变化npm run lint:运行ESLintnpm run lint:fix:修复ESLint问题./build.sh:构建具有有用输出的脚本
项目结构
src/
├── index.ts # Main server implementation
├── client.ts # BMLT API client
├── tools.ts # MCP tool definitions and handlers
└── types.ts # TypeScript type definitions
api参考
BMLT语义API
此服务器实现BMLT语义API中的所有端点:
- GetSearchResults:具有广泛过滤功能的会议搜索
- Get格式:可用的会议格式
- GetServiceBodies:服务主体层次结构
- GetChanges 的:会议更改历史记录
- GetFieldKeys:可用数据库字段
- GetFieldValues:字段值枚举
- GetNAWSDump:与NAWS兼容的CSV导出
- GetServerInfo:服务器配置和功能
- _平均面积:地理覆盖范围
格式支持
- 对象符号:大多数端点的默认格式
- JSONP:JSON,用于跨源请求的回调
- CSV文件:仅适用于NAWS出口
- TSML:GetSearchResults的语义会议列表格式
错误处理
服务器提供全面的错误处理:
- 参数验证错误
- HTTP请求失败
- API特定错误(缺少所需参数等)
- 网络超时和连接问题
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 运行linting并确保构建通过
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
- 问题:在GitHub上报告错误和请求功能
- 文档:BMLT API文档,网址:https://semantic.bmlt.app
- 社区:BMLT社区论坛和Discord
相关项目
更新日志
v1.0.0
- 初始版本
- 完整的BMLT语义API覆盖范围
- TypeScript实现
- 全面的错误处理
- 完整参数验证