无人机数据网关

UAVCrew MCP网关是一个在用户基础设施上运行的网关服务,可将MCP工具调用转换为经过身份验证的HTTP请求,使AI代理能够安全访问无人机操作数据,而无需直接数据库访问。

  • by uavopsys
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aelfakih/uavcrew-mcp-server

使用说明

无人机乘员MCP网关

宣言驱动的MCP网关,使UAVCrew的人工智能代理能够通过现有的REST API安全访问您的无人机操作数据。

概述

网关运行 您的基础设施 并将MCP工具调用转换为针对REST API的经过验证的HTTP请求。UAVCrew的AI代理使用HTTPS连接 模型上下文协议 读取、搜索数据并对其采取行动,而无需直接访问数据库。

┌─────────────────────────────────────────────────────────────────┐
│  YOUR INFRASTRUCTURE                                            │
│                                                                 │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐      │
│  │ Your REST    │    │ MCP Gateway  │    │   HTTPS      │      │
│  │ API (Django, │<───│  Port 8400   │<───│  Nginx/Caddy │<─────┼── UAVCrew AI
│  │  Rails, etc) │    │  (gunicorn)  │    │  Port 443    │      │
│  └──────────────┘    └──────────────┘    └──────────────┘      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

您的数据保留在您的网络上。 网关仅转发合规性分析所需的API调用。


安装

1.克隆和安装

git clone https://github.com/uavopsys/uavcrew-mcp-server.git
cd uavcrew-mcp-server

python3 -m venv venv
source venv/bin/activate

pip install .

2.运行安装向导

uavcrew setup

向导将:

  1. 配置服务器标识和公共URL
  2. 设置清单路径和客户端API基本URL
  3. 配置身份验证模式
  4. 保存 .env 配置
  5. 生成反向代理配置(Caddy/Nginx/Apache)
  6. 创建并安装systemd服务

3.启动并验证

uavcrew start
uavcrew status
curl http://localhost:8400/health

预期响应:

{
  "status": "healthy",
  "service": "mcp-gateway",
  "version": "2.0.0",
  "entities": 12,
  "auth_mode": "jwt",
  "token_resolution": "dynamic"
}

4.生成K0 API密钥

在MCP网关可以运行之前,您需要 K0 API密钥 无人机机组人员。 此密钥允许您的应用程序管理租户和提供AI访问。 每个K0键都绑定到特定的MCP连接器上。

  1. 去你的 无人机机组仪表板→ MCP网关
  2. 点击您的MCP连接器
  3. 在 K0 API密钥 卡片,点击 生成K0
  4. 复制密钥——这是唯一一次显示它

您的应用程序使用此密钥调用UAVCrew的租户管理API:

POST https://api.uavcrew.ai/v1/tenants
X-API-Key: uav_YOUR_K0_KEY
Content-Type: application/json

{
  "name": "Your Organization",
  "external_id": "your-org-uuid"
}

这在UAVCrew中创建一个租户,并提供一个租户聊天API密钥(K1)。 K0键具有 tenants:write 和 tenants:read 范围--常规聊天键 (chat:read, chat:write)无法管理租户。

要旋转K0键,请单击 旋转K0 在同一连接器详细信息页面上。 上一个密钥立即被撤销。

在应用程序的环境中设置K0键:

变量 值
UAVCREW_API_URL https://api.uavcrew.ai (或您的UAVCrew实例URL)
UAVCREW_PLATFORM_API_KEY MCP连接器中的K0键

5.注册无人机机组人员

  1. 首选 无人机机组仪表板→ MCP网关
  2. 点击 注册 --输入服务器名称、公共URL和集成类型
    • 平台(多租户):您的应用程序为多家公司提供服务。您可以通过K0密钥管理租户,并动态解析每个租户的令牌(K4)
    • 直接(单一公司):你的应用程序服务于一家公司。集 CLIENT_API_TOKEN 在 .env
  3. 复制连接令牌并将其设置为 MCP_API_KEY 在你的 .env
  4. 对于多租户连接器:从连接器详细信息页面生成K0密钥(上述步骤4)

UAVCrew使用K3公钥验证的T1委托JWT进行连接 (随此回购在 keys/k3_public.pem).无需手动进行代币交换。


管理

uavcrew start       # Start the service
uavcrew stop        # Stop the service
uavcrew restart     # Restart after config changes
uavcrew status      # Check health, entities, auth mode

# View logs
sudo journalctl -u mcp-server -f

更新

cd /opt/ayna/uavcrew-mcp-server
git pull
source venv/bin/activate
pip install .
uavcrew restart

发展

cd /opt/ayna/uavcrew-mcp-server
source venv/bin/activate
pip install -e ".[dev]"

make dev       # Start with gunicorn --reload
make test      # Run tests
make lint      # Run linter

源代码更改已生效 --reload健康检查: curl http://localhost:8400/health.


CLI命令

命令 描述
uavcrew setup 交互式配置向导
uavcrew start 启动网关服务(systemd)
uavcrew stop 停止网关服务(systemd)
uavcrew restart 重新启动网关服务(systemd)
uavcrew status 显示状态、实体、身份验证模式和服务运行状况
uavcrew keys list 列出已配置的API密钥
uavcrew keys add <token> 从UAVCrew添加API密钥
uavcrew keys remove <prefix> 删除API密钥
uavcrew generate-systemd 生成并安装systemd单元文件

配置

环境变量

变量 必填 默认 描述
MCP_JWT_PUBLIC_KEY_PATH 是的 keys/k3_public.pem 用于验证T1 JWT的K3公钥路径
CLIENT_API_BASE_URL 否 来自清单 REST API的基本URL
MCP_HOST 没有 127.0.0.1 服务器绑定地址
MCP_PORT 没有 8400 服务器端口
MCP_SERVER_NAME 没有 MCP Gateway UAVCrew仪表板的友好名称
MCP_PUBLIC_URL 无 -- UAVCrew连接的HTTPS URL
CLIENT_API_TOKEN 无 - 单租户静态模式的客户端API令牌(K4)
LOG_LEVEL 没有 INFO 日志级别:调试、信息、警告、错误

看 .env.示例 获取带有auth模式文档的完整模板。

清单

网关由 manifest.json 声明实体、API路径和可用操作的文件。看 manifest.json.example 对于完整的模式。

{
  "api_base_url": "https://api.example.com/api/v1",
  "auth": {
    "mode": "dynamic",
    "resolver_path": "/internal/mcp/resolve-token"
  },
  "entities": {
    "pilot": {
      "path": "/pilots",
      "id_field": "id",
      "read": true,
      "search": true,
      "actions": {
        "create": { "method": "POST", "path": "/pilots" },
        "update": { "method": "PATCH", "path": "/pilots/{id}" }
      }
    }
  }
}

身份验证模式

网关支持两种身份验证模式,配置如下 manifest.json:

动态(推荐,多租户):

{
  "auth": {
    "mode": "dynamic",
    "resolver_path": "/internal/mcp/resolve-token"
  }
}

UAVCrew发送T1代表团JWT,并与RS256签署。网关使用K3公钥进行验证,并调用您的解析器端点以获得每个参与者的API令牌(K4)。集 MCP_JWT_PUBLIC_KEY_PATH 在 .env.

静态(单租户):

{
  "auth": {
    "mode": "static",
    "token_env": "CLIENT_API_TOKEN"
  }
}

单个API令牌(K4)用于向您的客户端API发出的所有请求。集 CLIENT_API_TOKEN 在 .envUAVCrew通过T1 JWT(用K3验证)进行身份验证,与动态模式相同。


MCP工具

网关向UAVCrew AI代理公开4个工具和1个资源:

工具 说明
get_entity 按ID(或类似单例的公司)获取单个实体记录
list_entities 列出具有过滤、排序和分页功能的实体记录
search 在一个或所有实体类型中搜索
action 对实体执行写入操作(创建、更新、启动等)
资源 描述
entities://manifest 实体定义、路径和可用操作

API终点

方法 路径 身份验证 描述
GET /health 否 健康检查(版本、实体计数、身份验证模式)
POST /mcp 承载 MCP可流式HTTP端点

连接中

# Health check
curl http://localhost:8400/health

# MCP endpoint (use any MCP-compatible client)
mcp connect http://localhost:8400/mcp --header "Authorization: Bearer YOUR_KEY"

HTTPS设置

网关监听本地端口。始终在其前面放置一个带有TLS的反向代理。

Caddy(推荐--自动HTTPS):

mcp.yourcompany.com {
    reverse_proxy localhost:8400
}

Nginx:

server {
    server_name mcp.yourcompany.com;
    location / {
        proxy_pass http://127.0.0.1:8400;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
# Then: sudo certbot --nginx -d mcp.yourcompany.com

安装向导(uavcrew setup)可以为您生成这些配置。


安全

  1. 超文本传输安全协议 --始终使用TLS终止的反向代理
  2. API密钥 --从UAVCrew上的MCP连接器详细信息页面旋转K0键
  3. 每个租户代币 -每个租户获得独立的API证书(K4)
  4. 范围执行 --T1 JWT为每个实体和操作携带范围权限
  5. 网络隔离 --在反向代理后绑定到127.0.0.1

故障排除

服务器无法启动

uavcrew status
sudo journalctl -u mcp-server -f

UAV机组人员无法连接

  1. 检查防火墙是否允许HTTPS(端口443)
  2. 验证SSL证书是否有效
  3. 测试健康状况: curl https://your-mcp-domain/health
  4. 检查身份验证模式是否与您的UAVCrew配置匹配

配置更改未生效

uavcrew restart

支持

  • 文档: https://docs.uavcrew.ai/mcp
  • 问题: https://github.com/uavopsys/uavcrew-mcp-server/issues
  • 电子邮件: support@uavcrew.ai

许可证

MIT许可证——见 许可证 文件。