本项目是一个基于 Model Context Protocol (MCP) 的服务器和客户端示例,特别展示了如何构建一个通过标准输入输出(Stdio)进行通信的 MCP 服务器,并将其提供的工具暴露给大型语言模型(LLM)客户端使用。

项目简介

Terminal MCP 项目提供了一个基本的 MCP 服务器实现,它托管了一系列可以通过 MCP 协议调用的工具。同时,项目也包含了使用这个服务器的 MCP 客户端示例,以及一个结合 Anthropic Claude 模型和 MCP 客户端的命令行聊天界面,用于演示 LLM 如何利用 MCP 服务器提供的工具来增强其能力。

主要功能点

  • 工具提供 (Tools): 服务器注册并提供多个工具供客户端调用,包括:
    • 'say_hello': 向指定名字的人问好。
    • 'get_time': 获取当前时间。
    • 'execute_bash': 执行指定的 Bash 命令并返回结果。
    • 'set_logging_mode': 设置服务器和客户端的日志输出模式(详细或简洁)。
    • 'get_logging_mode': 获取当前的日志模式设置。
  • Stdio 传输支持: 服务器和客户端通过标准输入输出流进行通信,适合在终端或容器环境中集成。
  • LLM 集成示例: 包含一个命令行聊天工具,展示了 LLM (Claude) 如何发现并调用 MCP 服务器提供的工具来响应用户请求。

安装步骤

  1. 确保您已安装 Node.js 和 npm。
  2. 克隆本仓库到本地。
  3. 在项目根目录运行 'npm install' 安装依赖。
  4. 如果您想运行包含 Anthropic Claude 的聊天示例,请在项目根目录创建一个名为 '.env.local' 的文件,并在其中添加您的 Anthropic API Key:
    ANTHROPIC_API_KEY='您的API密钥'
  5. 构建项目:运行 'npm run build'。

服务器配置

该 MCP 服务器配置为通过 Stdio 传输与客户端通信。一个 MCP 客户端若要连接到此服务器,需要配置 Stdio 传输方式,并指定启动服务器进程的命令。

客户端连接所需的关键配置信息通常包括:

  • 传输方式 (Transport): Stdio
  • 服务器启动命令 (Command): node
  • 命令参数 (Arguments): 包含启动服务器模式的参数,例如 'dist/index.js' 和 'server'。
  • 服务器名称 (Server Name): 'terminal-mcp-server' (用于识别,非强制连接参数)

MCP 客户端应用可以根据以上信息构建其连接配置。例如,使用 '@modelcontextprotocol/sdk' 的客户端可以配置一个 'StdioClientTransport' 实例,指定 'command' 和 'args' 来启动并连接到此服务器进程。

基本使用方法

项目提供了几个运行脚本来演示其功能:

  • 运行 MCP 客户端/服务器演示: 运行 'npm run mcp'。这会启动一个 MCP 客户端,该客户端会自动启动一个 Stdio MCP 服务器进程,并演示调用 'list_tools' 和几个工具(如 'say_hello', 'get_time', 'set_logging_mode')。
  • 运行基于 MCP 的 CLI 聊天: 确保您已设置 'ANTHROPIC_API_KEY'。运行 'npm run chat'。这会启动一个命令行聊天界面,您可以在其中与一个集成了 MCP 工具的 LLM 进行交互。LLM 会根据您的输入,决定是否调用 MCP 服务器提供的工具(如 'say_hello' 或 'execute_bash')来回答问题。输入 'quit' 或 'exit' 退出聊天。
  • 单独启动服务器 (用于其他 MCP 客户端连接): 虽然主要通过客户端演示启动,但理论上您可以通过运行 'node dist/index.js server' 直接启动服务器进程,以便其他独立的 MCP 客户端连接和交互。

信息

分类

AI与计算