项目简介

Dragonfly MCP服务器是一个基于Model Context Protocol (MCP) 标准构建的FastAPI应用后端,旨在为大型语言模型(LLM)客户端提供丰富的上下文信息和功能调用能力。它集成了多达39个各类工具,涵盖数据处理、通信、媒体、交通、研究等多个领域,并提供一个现代化的Web控制面板方便管理和配置。服务器核心功能是托管和执行这些工具,使LLM能够通过标准化的API接口调用外部功能、访问数据,从而扩展其应用范围。

主要功能点

  • 多功能工具集成: 内置39个工具,覆盖智能与编排、开发、通信、数据与存储、文档、媒体、交通、网络、实用工具、社交与娱乐等10大类别。例如,可以调用LLM进行智能编排、执行Python脚本、发送邮件、操作SQLite数据库、进行学术研究或下载YouTube视频等。
  • LLM调用支持: 提供标准化的HTTP API接口,允许LLM客户端发现可用的工具及其详细功能描述,并以JSON格式调用这些工具,获取执行结果。
  • Web控制面板: 提供一个直观、现代的Web界面,用户可以通过浏览器方便地查看所有工具列表、详细信息、收藏工具、配置服务器环境变量,并直接测试工具的执行效果。
  • 灵活的配置管理: 支持通过'.env'文件或Web控制面板动态配置各项环境变量,包括LLM服务接口、API密钥(如Google API Key、GitHub Token等)、邮箱凭证等,且敏感信息会进行遮蔽处理。
  • 自动工具发现与重载: 服务器启动时会自动发现并注册所有定义的工具。在开发模式下,还支持在不重启服务器的情况下自动检测工具更新并重新加载。
  • 沙盒脚本执行: 提供安全的Python脚本沙盒环境('script_executor'工具),允许LLM执行自定义逻辑来编排多个工具或进行复杂计算。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/FranckDubray/dragonfly-mcp-server.git
    cd dragonfly-mcp-server
  2. 创建并激活虚拟环境:
    python -m venv venv
    source venv/bin/activate   # Windows 用户请使用:venv\Scripts\Activate.ps1
  3. 安装依赖:
    pip install -U pip && pip install -e ".[dev]"
  4. 启动服务器:
    ./scripts/dev.sh
    服务器默认将在 'http://127.0.0.1:8000' 启动。

服务器配置

MCP客户端需要以下配置信息来连接和使用Dragonfly MCP服务器。请根据您的实际部署情况替换 'command' 和 'args' 中的参数。

{
  "server_name": "Dragonfly MCP Server",
  "description": "基于FastAPI的MCP工具服务器,提供LLM可调用的多达39个工具。",
  "command": "python",
  "args": [
    "-m", "uvicorn", "src.server:app",
    "--host", "127.0.0.1",
    "--port", "8000",
    "--log-level", "info",
    "--access-log", "False"
  ],
  "capabilities": {
    "tools": true,
    "resources": false,
    "prompts": false,
    "json_rpc_protocol": "http_json_rest"
  },
  "notes": "MCP客户端应配置其工具调用逻辑以匹配此服务器的RESTful JSON API。该服务器当前不支持直接的资源托管和Prompt模板定义功能,资源访问通过其提供的丰富工具集间接实现。传输协议仅支持HTTP/HTTPS。"
}

参数注释:

  • 'server_name': 服务器的显示名称。
  • 'description': 服务器的简要描述。
  • 'command': 启动MCP服务器的可执行命令,通常是'python'。
  • 'args': 传递给'command'的参数列表,用于启动Uvicorn服务器。
    • '--host': 服务器监听的IP地址。
    • '--port': 服务器监听的端口。
    • '--log-level': 日志级别。
    • '--access-log': 是否禁用Uvicorn的访问日志。
  • 'capabilities': 服务器支持的MCP核心功能。
    • 'tools': 'true' 表示支持工具的注册和执行。
    • 'resources': 'false' 表示没有独立的资源管理模块,资源访问通过工具间接提供。
    • 'prompts': 'false' 表示不提供显式的Prompt模板定义和渲染功能。
    • 'json_rpc_protocol': 指明实际使用的协议类型,这里是基于HTTP的RESTful JSON。
  • 'notes': 客户端集成时的额外提示信息。

环境变量配置:

您可以在项目根目录创建 '.env' 文件来配置API密钥和凭证,例如:

# LLM API token (for call_llm tool)
AI_PORTAL_TOKEN=your_token
LLM_ENDPOINT=https://ai.dragonflygroup.fr

# Google API Key (for YouTube, Maps tools)
GOOGLE_API_KEY=AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# GitHub Token (for Git tool)
GITHUB_TOKEN=ghp_xxxxx

更多配置项请参考仓库中的 '.env.example' 文件,或访问Web控制面板 'http://127.0.0.1:8000/control' 进行可视化配置。

基本使用方法

  1. 启动服务器: 按照上述“安装步骤”启动服务器。
  2. 访问控制面板: 在浏览器中访问 'http://127.0.0.1:8000/control',可以查看所有可用的工具,并手动测试其功能。
  3. MCP客户端集成:
    • 发现工具: MCP客户端可以通过向 'http://127.0.0.1:8000/tools' 发送GET请求来获取所有可用工具的JSON Schema列表。
    • 调用工具: 客户端选择一个工具(例如'sqlite_db')和一个操作(例如'create_db'),然后构造包含工具名称和参数的JSON请求体,向 'http://127.0.0.1:8000/execute' 发送POST请求。
    • 处理响应: 服务器将返回一个JSON响应,包含工具执行的结果或错误信息。

示例 (LLM客户端调用流程):

假设LLM需要创建一个SQLite数据库:

  • LLM查询工具列表: 'GET http://127.0.0.1:8000/tools'
  • LLM解析工具列表,发现 'sqlite_db' 工具及其 'create_db' 操作。
  • LLM构造请求,调用 'sqlite_db' 工具的 'create_db' 操作: 'POST http://127.0.0.1:8000/execute' 请求体:
    {
      "tool": "sqlite_db",
      "params": {
        "operation": "create_db",
        "name": "my_new_database",
        "schema": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);"
      }
    }
  • LLM接收并处理服务器响应: 响应体 (示例):
    {
      "result": {
        "db": "my_new_database.db",
        "path": "/path/to/project/sqlite3/my_new_database.db",
        "created": true
      }
    }

信息

分类

AI与计算