使用说明
项目简介
mcpserver项目是一个旨在作为大型语言模型(LLM)客户端后端的应用服务器。它并非严格遵循Model Context Protocol (MCP) 的标准定义,但核心思想与MCP相符,即为LLM应用提供上下文信息和执行外部功能的接口。该项目集成了项目管理、系统监控、DigitalOcean云平台控制等功能,并可通过Telegram机器人进行交互,使得用户可以通过自然语言指令,经由LLM处理后,调用后端工具完成各种运维和管理任务。
主要功能点
- 项目管理: 支持对预定义的项目(如 'selfi-bot', 'selfi-miniapp')进行状态查看、更新、重启、日志查看和配置查看等操作。
- 系统监控: 提供服务器的CPU、内存、磁盘、网络和进程等系统状态监控功能。
- DigitalOcean云平台控制: 集成DigitalOcean API,可以列出Droplet实例、获取Droplet状态等基本操作。
- 工具注册与LLM调用: 通过 'ToolManager' 注册各种功能为工具,并由 'LLMHandler' 负责与LLM交互,解析用户指令并调用相应的工具函数。
- Telegram机器人交互: 通过Telegram机器人接收用户指令,并将LLM的响应返回给用户,实现自然语言交互界面。
- 安全认证: 使用HTTP Basic Auth进行API接口的安全认证。
安装步骤
-
克隆仓库:
git clone https://github.com/luc-io/mcpserver.git cd mcpserver -
配置环境变量:
- 复制 '.env.example' 文件为 '.env',并根据需要修改以下环境变量:
注意: 请务必设置 'ANTHROPIC_API_KEY', 'DIGITALOCEAN_TOKEN', 'TELEGRAM_BOT_TOKEN' 和 'TELEGRAM_ALLOWED_USERS' 环境变量以启用相应功能。首次运行服务器时,如果 'API_PASSWORD_HASH' 未设置,服务器会根据 'API_PASSWORD' (或默认密码 'changeme') 生成哈希值并存储。API_USERNAME=admin # API 接口用户名 API_PASSWORD=changeme # API 接口密码 (建议修改) API_PASSWORD_HASH= # API 密码哈希值 (如果设置了API_PASSWORD,首次启动会自动生成) ANTHROPIC_API_KEY=YOUR_ANTHROPIC_API_KEY # Anthropic API 密钥,用于LLM功能 DIGITALOCEAN_TOKEN=YOUR_DIGITALOCEAN_TOKEN # DigitalOcean API 密钥,用于DigitalOcean控制功能 TELEGRAM_BOT_TOKEN=YOUR_TELEGRAM_BOT_TOKEN # Telegram Bot Token,用于Telegram机器人功能 TELEGRAM_ALLOWED_USERS=YOUR_TELEGRAM_USER_ID,ANOTHER_USER_ID # 允许使用Telegram Bot的用户ID列表,用逗号分隔 MCP_SERVER_HOST=0.0.0.0 # MCP服务器监听地址 MCP_SERVER_PORT=8000 # MCP服务器监听端口
- 复制 '.env.example' 文件为 '.env',并根据需要修改以下环境变量:
-
安装依赖: 确保已安装Python 3.8 或更高版本以及 pip。在项目根目录下运行:
pip install -r requirements.txt -
启动服务器:
python -m src.server服务器默认会在 'http://157.245.248.36:8000' (或您在 '.env' 文件中配置的 'MCP_SERVER_HOST' 和 'MCP_SERVER_PORT') 启动。
服务器配置
对于MCP客户端,如果需要与此服务器交互,您需要配置服务器的访问地址。由于该项目并非严格意义上的标准MCP服务器,而是通过HTTP API提供功能,因此客户端需要配置HTTP请求的相关信息。
以下是一个 MCP 客户端可能的服务器配置示例 (JSON 格式),但这并非MCP标准配置,而是针对此特定仓库的HTTP API配置:
{ "serverName": "mcpserver-http-api", "serverUrl": "http://157.245.248.36:8000/agent/execute", "auth": { "username": "admin", "password": "changeme" }, "headers": { "Content-Type": "application/json" } }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,用于客户端标识。
- 'serverUrl': 重要。MCP客户端需要将请求发送到此URL。这里指向 'mcpserver' 提供的 '/agent/execute' HTTP POST 接口。
- 'auth': 重要。HTTP Basic Authentication 的用户名和密码,需要与 '.env' 文件中配置的 'API_USERNAME' 和 'API_PASSWORD' 一致。
- 'headers': HTTP 请求头,指定 'Content-Type' 为 'application/json',表明客户端发送JSON格式的数据。
请注意: 此配置并非标准的MCP服务器连接配置,因为标准的MCP通常基于JSON-RPC或其他协议。此配置是针对 'mcpserver' 项目通过HTTP API 提供功能的特点而定制的。 真正的MCP客户端可能需要适配这种HTTP API 的交互方式或者需要通过桥接等方式连接。
基本使用方法
-
通过 HTTP API 调用 (例如使用 'llm_client.py'):
- 修改 'examples/llm_client.py' 文件中的 'base_url', 'username', 'password' 和 'agent_id' 以匹配您的服务器配置和认证信息。
- 运行 'llm_client.py' 中的示例代码,即可通过 HTTP API 调用服务器的功能,例如执行 shell 命令、获取系统状态、列出 Droplet 等。
-
通过 Telegram 机器人交互:
- 启动服务器后,如果您已正确配置 'TELEGRAM_BOT_TOKEN' 和 'TELEGRAM_ALLOWED_USERS',则可以通过 Telegram 搜索并启动您的机器人。
- 发送自然语言指令给机器人,例如 "查看 selfi-bot 项目状态", "更新 selfi-miniapp 项目", "最近20行 selfi-bot 日志" 等。
- LLM (Claude) 将解析您的指令,并尝试调用注册的工具来执行相应的操作,并将结果返回给您。
重要提示:
- 安全性: 请务必修改默认的 API 密码和 Telegram Bot Token,并限制 Telegram Bot 的允许用户,以提高服务器的安全性。
- LLM API Key: 'mcpserver' 使用 Anthropic Claude 模型进行自然语言处理,您需要拥有有效的 Anthropic API Key 才能使用 LLM 相关功能。
- DigitalOcean API Key: 如果需要使用 DigitalOcean 控制功能,您需要拥有有效的 DigitalOcean API Key。
信息
分类
开发者工具