项目简介
这是一个实现了Model Context Protocol (MCP) 标准的服务器,旨在让大型语言模型(如Claude)能够扫描和获取附近蓝牙设备的上下文信息。它通过与一个后端API(使用FastAPI实现)通信来执行实际的蓝牙操作,支持BLE和传统蓝牙设备,并具备跨平台能力(Windows, macOS, Linux)。
主要功能点
- 蓝牙设备扫描: 检测附近低功耗蓝牙 (BLE) 和传统蓝牙设备。
- 灵活过滤: 支持按名称过滤扫描结果。
- 设备信息增强: 提供制造商、设备类型、服务等详细信息(如果可获取)。
- 跨平台支持: 在多种操作系统上运行。
- AI助手集成: 可与支持MCP协议的AI模型(如Anthropic Claude)无缝集成,让AI能够直接执行蓝牙扫描命令。
- Freebox等设备增强检测: 针对Freebox等特定设备有增强的检测逻辑。
安装步骤
- 克隆仓库:
git clone https://github.com/Hypijump31/bluetooth-mcp-server.git cd bluetooth-mcp-server - 创建并激活Python虚拟环境:
# 创建 python -m venv venv # 激活 (Windows) venv\Scripts\activate # 激活 (macOS/Linux) source venv/bin/activate - 安装依赖:
pip install -r requirements.txt - 配置环境: 复制示例配置文件并编辑 '.env' 文件,根据需要调整 'BLUETOOTH_API_URL', 'BLUETOOTH_SCAN_DURATION' 等参数。
cp .env.example .env # vi .env
服务器配置
为了让MCP客户端(如Claude)能够连接到此服务器,您需要启动 后端API 和 MCP服务器,并将MCP服务器的连接信息提供给客户端。
-
启动后端API: 在一个终端窗口中运行:
python run.py此命令会启动基于FastAPI的后端服务,默认运行在 'http://localhost:8000'。
-
启动MCP服务器: 在另一个终端窗口中运行:
python bluetooth_mcp_server.py此命令会启动MCP服务器进程。
-
暴露服务器(如果需要远程访问,如Claude云服务): 使用ngrok或其他工具将本地MCP服务器暴露到公网。
ngrok http 8000 # 注意: 如果 MCP 服务器 (bluetooth_mcp_server.py) 和 后端 API (run.py) 运行在不同端口,且您需要 LLM 直接连接 MCP 服务器端口 (FastMCP 默认可能不是 8000),则 ngrok 需要暴露 MCP 服务器的端口。但根据代码分析,MCP 服务器通过 HTTP 调用后端 API,LLM 客户端通过 Stdio/WebSocket 等方式与 MCP 服务器建立连接。FastMCP 默认使用 Stdio,无需暴露 HTTP 端口。如果配置为 HTTP/WebSocket,则需要暴露 MCP 服务器的监听端口。推荐使用 Stdio 方式,通过 Claude SDK 的命令行工具连接。 # 假设使用 Claude SDK 通过命令行连接,MCP 服务器通常无需通过 HTTP 暴露。Claude SDK 会直接启动或连接到 MCP 服务器进程。 -
配置MCP客户端: 使用MCP客户端工具(如Anthropic SDK的'install-model-context-protocol'命令)进行配置。您需要提供服务器的名称和如何启动它的命令。
配置信息示例 (JSON格式):
{ "name": "Bluetooth MCP Server", "command": ["python", "bluetooth_mcp_server.py"], "args": [] }- 'name': 服务器的名称,用于在客户端识别。
- 'command': 一个数组,第一个元素是可执行程序,后面是启动MCP服务器脚本的参数。这里是 'python' 解释器和 'bluetooth_mcp_server.py' 脚本。
- 'args': 传递给 'command' 的额外命令行参数数组。此项目通过 '.env' 文件配置,没有额外的命令行参数。
根据Claude SDK的文档,您可以使用类似这样的命令来安装:
npx @anthropic-ai/sdk install-model-context-protocol --name "Bluetooth MCP Server" --command "python" --args "bluetooth_mcp_server.py" # 如果 MCP 服务器和后端 API 在不同机器,您可能需要在 bluetooth_mcp_server.py 的 .env 文件中配置 BLUETOOTH_API_URL 指向后端 API 的实际 URL。
基本使用方法
配置完成后,您可以通过支持MCP协议的AI助手与服务器交互。例如,向Claude提问:
能否扫描一下附近的蓝牙设备?
或指定扫描时长:
请帮我扫描30秒的蓝牙设备。
或指定过滤条件:
有没有名称包含“Freebox”的蓝牙设备?
AI助手将调用MCP服务器的'bluetooth-scan'工具,并将结果返回给您。
信息
分类
桌面与硬件