项目简介
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执行自定义逻辑来编排多个工具或进行复杂计算。
安装步骤
- 克隆仓库:
git clone https://github.com/FranckDubray/dragonfly-mcp-server.git cd dragonfly-mcp-server - 创建并激活虚拟环境:
python -m venv venv source venv/bin/activate # Windows 用户请使用:venv\Scripts\Activate.ps1 - 安装依赖:
pip install -U pip && pip install -e ".[dev]" - 启动服务器:
服务器默认将在 'http://127.0.0.1:8000' 启动。./scripts/dev.sh
服务器配置
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' 进行可视化配置。
基本使用方法
- 启动服务器: 按照上述“安装步骤”启动服务器。
- 访问控制面板: 在浏览器中访问 'http://127.0.0.1:8000/control',可以查看所有可用的工具,并手动测试其功能。
- 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与计算