mcp-bbs MCP 服务器实现
使用说明 这是一个将 MCP (Model Context Protocol) 服务端能力落地到 BBS 场景的实现。服务器通过 MCP 提供一组工具接口,LLM 客户端可通过 JSON-RPC 调用这些工具来建立 Telnet 连接、读取屏幕、发送按键、管理会话等,同时内置学习引擎用于自动发现提示/菜单并维护知识库。 以下内容帮助你快速了解、安装、配置与使用该 MCP 服务器。
-
项目简介
- 将 BBS 的 Telnet 会话抽象为 MCP 服务端,向 LLM 客户端暴露一组可远程调用的工具(如连接/断开、读取屏幕、发送按键、设置大小、日志记录等)。
- 提供多会话管理、日志记录(JSONL)、自动学习(提示规则、菜单规则、自动发现菜单)、知识库目录结构等能力。
- 支持通过多种传输方式与客户端交互(如 STDIO、WebSocket、SSE 等,实际实现基于 FastMCP 框架)。
- 服务端负责会话管理、能力声明、以及对 BBS 的 Telnet 协议交互和屏幕渲染。
-
主要功能点
- MCP 工具暴露:bbs_connect、bbs_read、bbs_read_until_nonblank、bbs_read_until_pattern、bbs_send、bbs_disconnect 等,用于控制 BBS 会话、读取屏幕、等待提示、发送按键等。
- Telnet/BBS 互动:内置 TelnetTransport 实现对 BBS 的 Telnet 连接、NAWS/TTYPE 等协商与 IAC 转义处理。
- 会话管理:SessionManager 支持创建、复用、关闭多会话,含最大会话数限制。
- 局部学习与知识库:LearningEngine 与 Learning 相关模块实现菜单/提示的自动发现、记录到知识库(Markdown 形式),支持自定义规则。
- 日志与追踪:SessionLogger 将会话事件写入 JSONL 日志,包含原始屏幕快照与原始字节数据,便于回放与调试。
- Keepalive 与稳定性:内置 Keepalive 逻辑,避免空闲导致的断开。
- 场景复现与回放:提供 replay 和 raw_replay 等工具,方便对话记忆和回放分析。
-
安装步骤
- 安装依赖与源码
- 需要 Python 3.11 及以上环境。
- 将仓库克隆到本地并安装开发模式:
- 使用常规方法安装:pip install -e .
- 或者按项目提供的开发安装步骤进行:uv pip install -e ".[dev]"(若你使用该工具进行环境搭建)。
- 启动 MCP 服务器
- 直接以 MCP 服务器方式运行
- 以命令行启动 mcp-bbs(前提是可执行入口在环境 PATH 中)。
- 或按需求以其他方式启动,如通过 FastMCP 框架的配置启动。
- 直接以 MCP 服务器方式运行
- MCP 客户端连接配置
- MCP 客户端需要知道该服务器的启动命令及其参数,以便通过 JSON-RPC 调用其工具。通常配置如下(无需在服务器端包含代码块,只作为配置描述):
- server name: mcp-bbs
- command: mcp-bbs
- args: []
- 说明:这是客户端需要调用的服务端的可执行命令和参数。实际连接类型由客户端决定(如 STDIO、WebSocket 等)。
- MCP 客户端需要知道该服务器的启动命令及其参数,以便通过 JSON-RPC 调用其工具。通常配置如下(无需在服务器端包含代码块,只作为配置描述):
- 安装依赖与源码
-
服务器配置(MCP 客户端使用的配置示例描述)
- 服务器名称:mcp-bbs
- 启动命令:mcp-bbs
- 参数(如需):[](默认使用项目提供的默认行为)
- 说明:MCP 客户端需要的最小配置信息是在其配置中注册一个名为 mcp-bbs 的服务器条目,指向该服务器的启动命令和参数。客户端会通过该信息建立 JSON-RPC 通道并调用暴露的工具。
-
基本使用方法
- 连接与操作
- 启动后,MCP 客户端通过 JSON-RPC 调用内置工具,例如 bbs_connect,提供 host、port、cols、rows、term、send_newline、reuse 等参数,建立对某个 BBS 的 Telnet 会话。
- 通过 bbs_read/bbs_read_until_pattern 等方法获取屏幕快照,LLM 根据屏幕内容进行下一步决策。
- 使用 bbs_send 发送按键,继续浏览菜单、进入对话。
- 通过 bbs_disconnect 断开会话。
- 学习与知识库
- 调用 bbs_auto_learn_enable/Prompts/Menus/Discover 来开启并配置自动学习规则,系统会将发现的菜单、提示记录到知识库(Markdown 文件)。
- 日志与回放
- 启用日志(bbs_log_start),收集会话数据后可停用(bbs_log_stop),日志以 JSONL 形式存放,便于回放与分析。
- 运行与扩展
- 服务器设计支持多会话、拓展到其他传输协议(如 SSE、WebSocket)及未来的 SSH 传输实现。
- 客户端通过 MCP 标准 JSON-RPC 调用完成统一的后端交互。
- 连接与操作