项目简介

这是一个实现了Model Context Protocol (MCP) 标准的服务器,旨在让大型语言模型(如Claude)能够扫描和获取附近蓝牙设备的上下文信息。它通过与一个后端API(使用FastAPI实现)通信来执行实际的蓝牙操作,支持BLE和传统蓝牙设备,并具备跨平台能力(Windows, macOS, Linux)。

主要功能点

  • 蓝牙设备扫描: 检测附近低功耗蓝牙 (BLE) 和传统蓝牙设备。
  • 灵活过滤: 支持按名称过滤扫描结果。
  • 设备信息增强: 提供制造商、设备类型、服务等详细信息(如果可获取)。
  • 跨平台支持: 在多种操作系统上运行。
  • AI助手集成: 可与支持MCP协议的AI模型(如Anthropic Claude)无缝集成,让AI能够直接执行蓝牙扫描命令。
  • Freebox等设备增强检测: 针对Freebox等特定设备有增强的检测逻辑。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Hypijump31/bluetooth-mcp-server.git
    cd bluetooth-mcp-server
  2. 创建并激活Python虚拟环境:
    # 创建
    python -m venv venv
    
    # 激活 (Windows)
    venv\Scripts\activate
    # 激活 (macOS/Linux)
    source venv/bin/activate
  3. 安装依赖:
    pip install -r requirements.txt
  4. 配置环境: 复制示例配置文件并编辑 '.env' 文件,根据需要调整 'BLUETOOTH_API_URL', 'BLUETOOTH_SCAN_DURATION' 等参数。
    cp .env.example .env
    # vi .env

服务器配置

为了让MCP客户端(如Claude)能够连接到此服务器,您需要启动 后端APIMCP服务器,并将MCP服务器的连接信息提供给客户端。

  1. 启动后端API: 在一个终端窗口中运行:

    python run.py

    此命令会启动基于FastAPI的后端服务,默认运行在 'http://localhost:8000'。

  2. 启动MCP服务器: 在另一个终端窗口中运行:

    python bluetooth_mcp_server.py

    此命令会启动MCP服务器进程。

  3. 暴露服务器(如果需要远程访问,如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 服务器进程。
  4. 配置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'工具,并将结果返回给您。

信息

分类

桌面与硬件