Straight Connect MCP 服务端(Telegram 集成)
使用说明(Markdown格式)
-
项目简介
- 这是一个基于 MCP 的服务器实现,核心职责是为 LLM 客户端提供上下文信息、工具调用和跨账户的交互能力。当前实现聚焦 Telegram 服务,支持按账户配置不同的工具级别、允许的聊天与用户白名单等,具有按账户分离的接口端点和动态工具注册能力。
-
主要功能点
- MCP 服务端实现:通过 FastMCP 提供 JSON-RPC 风格的接口和可扩展的工具注册机制。
- 动态服务注册:基于环境变量配置 Telegram 账户,按账户加载并注册相应的工具集。
- 账户级路由与会话上下文:通过 ASGI 中间件将 /mcp/<service>/<account> 路径映射到内部处理,并使用上下文变量传递账户信息。
- 工具分级访问控制:按账户最大工具等级决定注册的工具集合,调用时再做账户级别检查。
- 安全与限制:对聊天和用户进行可选的白名单限制,未配置则默认允许。
- 外部服务接入:通过 Telegram Bot API 封装实现大量 Telegram 功能的工具。
-
安装步骤
-
- 将代码部署到可运行的环境中(支持 Docker Compose)。
-
- 配置 Telegram 账号及令牌等环境变量(参见 .env.example)。
-
- 启动服务:
- 使用 Docker Compose: docker compose up --build -d
-
- 验证服务是否正在运行:
- 查看日志:docker compose logs mcp
-
- 访问接口(示例账户):
- http://localhost:9831/mcp/telegram/nietzsche
- http://localhost:9831/mcp/telegram/aurelia
-
-
服务器配置(供 MCP 客户端参考,不包含代码) 说明:MCP 客户端需要知道服务器的启动命令与参数,以便在本地或云端启动并连接到 MCP 服务器。下列信息基于仓库提供的运行方式与配置约定。
-
服务器部署与连接信息(基于仓库的配置与示例)
- 若要为 Nietsche 账户启用 Telegram 服务,服务器名称为 nietzsche,端点地址为 http://localhost:9831/mcp/telegram/nietzsche
- 若要为 Aurelia 账户启用 Telegram 服务,服务器名称为 aurelia,端点地址为 http://localhost:9831/mcp/telegram/aurelia
-
启动命令与参数(不以代码块形式呈现,便于直接复制到配置管理工具)
- Nietsche 账户
- server 名称:nietzsche
- 启动命令(command):docker
- 启动参数(args):compose up --build -d
- 注释:使用 Docker Compose 构建并在后台启动服务,服务中已通过 .env 变量配置 Telegram 账户及相关权限。
- Aurelia 账户
- server 名称:aurelia
- 启动命令(command):docker
- 启动参数(args):compose up --build -d
- 注释:同上,为另一账户开启单独的服务实例,确保账户间工具命名空间分离。
- Nietsche 账户
-
-
基本使用方法
- 客户端通过 JSON-RPC 调用与管理工具,示例工作流:
- 连接 MCP 服务器,获取账户可用工具清单。
- 选择账户后在 LangChain/ReAct 等流程中调用具体工具(如 telegram_send_message、telegram_get_updates 等)。
- 调用时会经过账户级别的权限检查与可选的聊天/用户白名单过滤。
- 多账户场景下,工具名称通常带有账户前缀以便区分,例如 nietzsche_telegram_send_message、aurelia_telegram_get_updates。
- 服务器端会将来自不同账户的请求路由到对应的 Telegram 令牌与权限配置,保障账户之间的隔离与访问控制。
- 客户端通过 JSON-RPC 调用与管理工具,示例工作流:
-
运行与调试要点
- 确保 .env(或 .env.example)中的 TELEGRAM_ACCOUNTS、包括各账户的 BOT_TOKEN、LEVEL、ALLOWED_CHATS、ALLOWED_USER_IDS 等正确配置。
- 确保 MCP_PORT 默认为 9831,且本地端口未被占用。
- 通过 /_mcp 路径进行内部路由,URL 路径示例:
- /_mcp/telegram/nietzsche
- /_mcp/telegram/aurelia
- 若要查看可用工具,请启动并运行 list_tools 脚本(仓库中实现了工具枚举逻辑,便于调试与验证)。