使用说明

项目简介

MAVLink MCP服务器是一个基于 Model Context Protocol (MCP) 构建的应用后端,专门设计用于与 MAVLink 协议兼容的无人机(如运行 PX4 软件的无人机)进行交互。它充当 LLM 客户端和无人机系统之间的桥梁,通过标准化的 MCP 接口,使得 LLM 能够安全、可扩展地获取无人机上下文信息并执行控制指令。

主要功能点

  • 无人机连接管理: 负责与 MAVLink 无人机建立和维护连接。
  • 工具注册与执行
    • 'arm_drone': 解锁无人机电机,准备起飞。
    • 'get_position': 获取无人机的经纬度、海拔高度等位置信息。
    • 'move_to_relative': 控制无人机相对于当前位置进行左右、前后、高度和偏航的相对移动。
    • 'takeoff': 控制无人机起飞到指定高度。
    • 'land': 控制无人机在当前位置降落。
    • 'print_status_text': 获取并返回无人机状态文本信息。
    • 'get_imu': 获取无人机IMU(惯性测量单元)数据。
    • 'print_mission_progress': 获取并返回无人机任务执行进度。
    • 'initiate_mission': 上传并启动预设的飞行任务,支持定义多个任务点。
    • 'get_flight_mode': 获取无人机当前的飞行模式。
  • 上下文管理: 通过 MCP 协议的上下文机制,为 LLM 提供无人机的实时状态和控制接口。

安装步骤

  1. 克隆仓库
    git clone https://github.com/ion-g-ion/MAVLinkMCP.git
    cd MAVLinkMCP
  2. 安装依赖 确保已安装 Python 3.10 或更高版本。
    pip install -r requirements.txt

服务器配置

MCP 客户端需要配置以下信息以连接到 MAVLink MCP 服务器。配置为 JSON 格式,'server name' 可自定义,'command' 和 'args' 必须与服务器启动命令一致。

{
  "server name": "mavlink_mcp",
  "command": "python",
  "args": ["src/server/mavlinkmcp.py"]
}

参数说明:

  • 'server name': MCP 服务器的名称,客户端用于识别和连接。可以自定义。
  • 'command': 启动 MCP 服务器的命令,这里使用 'python' 解释器。
  • 'args': 启动命令的参数列表,指向服务器脚本 'src/server/mavlinkmcp.py'。

环境变量 (可选) 服务器启动时可以设置以下环境变量来配置 MAVLink 连接:

  • 'MAVLINK_ADDRESS': MAVLink 连接地址,默认为空,通常用于指定地面站的IP地址或主机名。
  • 'MAVLINK_PORT': MAVLink 连接端口,默认为 '14540'。

如果你的无人机地面站运行在本地默认端口,则无需设置环境变量。如果需要连接到特定的地面站地址和端口,可以设置这两个环境变量。例如,在运行服务器之前,可以执行:

export MAVLINK_ADDRESS="192.168.1.100"
export MAVLINK_PORT="14550"

基本使用方法

  1. 启动 MCP 服务器 在终端中,进入仓库根目录,运行以下命令启动 MCP 服务器:

    python src/server/mavlinkmcp.py

    或使用 'uv run' 启动:

    uv run src/server/mavlinkmcp.py

    服务器成功启动后,将开始尝试连接到 MAVLink 无人机。查看日志信息以确认连接状态。

  2. 配置并运行 MCP 客户端 仓库中提供了 'example_agent.py' 作为示例客户端。你需要安装 'mcp_agent' 和 'fastagent' 库才能运行客户端。

    pip install mcp-agent fastagent

    在运行 'example_agent.py' 之前,如果示例客户端中使用了 OpenAI 的功能(尽管示例代码本身没有直接使用,但 'fastagent' 框架可能需要),请确保设置了 OpenAI API 密钥环境变量。

    然后,运行示例客户端:

    python example_agent.py

    示例客户端将连接到已启动的 MAVLink MCP 服务器,并演示如何通过 'human_input' 工具与服务器交互控制无人机。你可以根据 'example_agent.py' 的代码,构建更复杂的 LLM 客户端应用,利用服务器提供的工具来控制和监控无人机。

注意:

  • 确保你的无人机已连接到地面站,并且地面站与运行 MCP 服务器的计算机在同一网络中。
  • 首次使用可能需要配置 MAVLink 连接参数,例如地面站地址和端口。
  • 使用无人机控制工具时,请务必在安全和可控的环境中进行,并遵守当地的无人机飞行法规。

信息

分类

桌面与硬件