term-llm MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个 MCP 服务器,支持通过 MCP 协议向 MCP 客户端暴露工具、资源,以及提示模板的能力。服务器与客户端通过标准输入输出(stdio)等传输方式通信,核心包含服务器端的工具注册、响应请求,以及对工具调用的处理逻辑。
-
主要功能点
- 注册并暴露外部工具(Tools),使 LLM 客户端能够调用外部功能。
- 管理资源(Resources),为 LLM 提供数据访问和上下文信息。
- 定义和渲染 Prompt 模板(Prompts),支持可定制的交互模式。
- 支持多传输协议(如 stdio,HTTP 传输等),并通过 JSON-RPC 与客户端通信。
- 会话管理、能力声明以及对 MCP 服务的扩展性设计,便于接入更多外部服务。
- 提供一个示例服务器实现,展示如何在 term-llm 中注册一个 MCP 服务器,以及如何通过实现函数返回 Tool 的调用结果。
-
安装与运行
- 从源码编译 term-llm(Go 工具链需已安装):
- go build ./...
- 启动一个 MCP 服务器(示例,直接在本地使用 stdio 传输):
- 在终端执行:term-llm mcp-server --tools-json '[{"name":"read_file","description":"Read file contents","schema":{}}]'
- 上述命令会以 stdio 传输启动一个 MCP 服务器实例,提供一个名为 read_file 的工具。
- 使用 MCP 服务器的客户端配置(JSON 配置示例,供 MCP 客户端了解如何连接与使用):
- 服务器配置示例(JSON,非代码块展示,供 MCP 客户端读取): { "servers": { "term-llm-mcp-stdio": { "command": "term-llm", "args": ["mcp-server", "--tools-json", "[{"name":"read_file","description":"Read file contents","schema":{}}]"] } // 如果需要更多工具,可在这里继续追加 } // 备注:此处为 MCP 客户端所用的连接信息,客户端本身并不需要此段代码,仅用于示意如何描述连接 }
- 服务器配置说明
- server name: term-llm-mcp-stdio
- command: term-llm
- args: mcp-server --tools-json "[{...}]",其中 tools-json 为 MCP Server 所暴露的工具定义列表(JSON),例如 read_file 工具包含名称与 JSON Schema。
- 说明:MCP 客户端通过读取该 JSON 配置获取可用的 MCP 服务器名称、启动命令以及参数,从而与 MCP 服务器建立连接。
- 从源码编译 term-llm(Go 工具链需已安装):
-
基本使用方法
- 客户端侧(LLM 客户端)要与 MCP 服务器进行通信,通常需要在配置中添加 MCP 服务器信息(如上 JSON 配置所示),然后在需要时通过如下方式调用:
- 选择一个 MCP 服务器名称,例如 term-llm-mcp-stdio,在执行命令时通过 --mcp 传入服务器名称即可让后端执行与 MCP 服务器的交互。
- 服务器端的实际实现将接收来自客户端的请求,返回工具调用信息或执行结果,并通过 JSON-RPC 的规范返回响应。
- 运行示例(概览)
- 启动 MCP 服务器:term-llm mcp-server --tools-json '[{"name":"read_file","description":"Read file contents","schema":{}}]'
- 配置 MCP 客户端以连接该服务器(示例 JSON 配置如上所示),客户端可通过 MCP 调用访问工具并获得结果。
- 使用场景
- 将外部系统(文件系统、浏览器自动化、数据库等)接入 term-llm,通过 MCP 服务器暴露的工具与资源,为 LLM 提供丰富的上下文和外部能力。
- 客户端侧(LLM 客户端)要与 MCP 服务器进行通信,通常需要在配置中添加 MCP 服务器信息(如上 JSON 配置所示),然后在需要时通过如下方式调用:
-
运行与扩展
- 代码基包含一个实际的 MCP 服务器实现示例(如 cmd/mcp_server.go),演示如何创建一个 MCP 服务器、注册工具、并通过 stdio 传输运行。
- 通过该示例,可以扩展更多工具、资源与提示模板,形成完整的 MCP 服务端能力。