会议数据API服务器

BMLT MCP服务器提供对Narcotics Anonymous会议数据的全面API访问,具有智能地理编码、速率限制和缓存功能,适用于康复类应用和AI助手。

  • by bmlt-enabled
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 bmlt-enabled/bmlt-mcp-server

使用说明

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:要包含/排除的特定会议ID
  • weekdays:一周中的天数(1=星期日,2=星期一,…,7=星期六)
  • venue_types:场地类型(1=面对面,2=虚拟,3=混合)
  • formats:设置ID的格式以包含/排除
  • services:要包含/排除的服务体ID
  • recursive:包括儿童服务机构
  • 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:要筛选的特定格式ID
  • key_strings:设置筛选关键字字符串的格式

3. bmlt_get_service_bodies

获取服务机构列表。

参数:

  • format:响应格式(json, jsonp)
  • services:要包含/排除的服务体ID
  • recursive:包括儿童服务机构
  • parents:包括上级服务机构

4. bmlt_get_changes

检索日期范围内的会议更改。

参数:

  • format:响应格式(json, jsonp)
  • start_date:开始日期(YYYY-MM-DD)
  • end_date:结束日期(YYYY-MM-DD)
  • meeting_id:特定会议ID
  • service_body_id:服务主体ID

5. bmlt_get_field_keys

获取可用字段键的列表。

参数:

  • format:响应格式(json, jsonp)

6. bmlt_get_field_values

获取给定字段键的特定字段值。

参数:

  • format:响应格式(json, jsonp)
  • meeting_key:获取值的字段键(必填)
  • specific_formats:逗号分隔格式ID
  • all_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根服务器的基本URL
  • BMLT_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:运行ESLint
  • npm 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特定错误(缺少所需参数等)
  • 网络超时和连接问题

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 运行linting并确保构建通过
  6. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

  • 问题:在GitHub上报告错误和请求功能
  • 文档:BMLT API文档,网址:https://semantic.bmlt.app
  • 社区:BMLT社区论坛和Discord

相关项目

更新日志

v1.0.0

  • 初始版本
  • 完整的BMLT语义API覆盖范围
  • TypeScript实现
  • 全面的错误处理
  • 完整参数验证