项目简介

这是一个使用TypeScript编写的示例项目,演示了如何构建一个 Model Context Protocol (MCP) 服务器和一个与之交互的MCP客户端。服务器实现了多种工具(Tools),客户端则展示了如何发现和调用这些工具,并集成了大型语言模型(LLM)以利用这些工具增强能力。

主要功能点

  • MCP服务器实现: 基于 MCP SDK,提供符合协议规范的服务器功能。
  • 多种内置工具:
    • 'say_hello': 向指定名字的人打招呼。
    • 'get_time': 获取当前服务器时间。
    • 'execute_bash': 执行Shell命令并返回输出。
    • 'browser_*' (navigate, click, type, screenshot, get_text): 通过Browserbase实现简单的浏览器自动化操作。
    • 'linkup_search': 通过Linkup进行网络搜索,获取实时信息或答案。
    • 'set_logging_mode': 控制服务器响应的详细程度(详细或简洁)。
    • 'get_logging_mode': 获取当前的日志模式设置。
  • MCP客户端实现: 演示如何连接到MCP服务器、列出可用工具及调用工具。
  • LLM集成示例: 通过Anthropic SDK集成Claude模型,使其能够感知并调用MCP服务器提供的工具来回答用户问题。
  • Stdio传输支持: 服务器和客户端通过标准输入/输出来进行通信。
  • 命令行界面: 提供一个交互式的命令行聊天界面,演示LLM如何使用MCP工具。

安装步骤

  1. 确保已安装 Node.js 和 npm 包管理器。
  2. 克隆仓库:
    git clone https://github.com/oneness/ts-mcp-client-server.git
    cd ts-mcp-client-server
  3. 安装依赖:
    npm install
  4. 创建 '.env.local' 文件并配置API密钥。该示例使用了Anthropic、Browserbase 和 Linkup,请根据你需要使用的工具填写相应的API密钥:
    ANTHROPIC_API_KEY='你的Anthropic API Key'
    BROWSERBASE_API_KEY='你的Browserbase API Key'
    BROWSERBASE_PROJECT_ID='你的Browserbase Project ID'
    LINKUP_API_KEY='你的Linkup API Key'
  5. 构建项目:
    npm run build

服务器配置

MCP服务器通过 Stdio 传输协议运行时,通常由 MCP 客户端作为子进程启动。因此,MCP 客户端需要知道如何启动该服务器。对于这个项目,客户端需要配置以下信息:

  • 服务器名称 (server name): 'hello-world-server'
  • 启动命令 (command): 'node'
  • 启动参数 (args): '["dist/index.js", "server"]'

客户端使用这些信息来执行 'node dist/index.js server' 命令,从而启动MCP服务器进程,并通过标准输入输出来建立连接。

基本使用方法

项目提供了两个主要的运行模式:

  1. MCP客户端/服务器基础演示: 运行以下命令将启动一个MCP客户端,该客户端会启动服务器子进程,并执行列出工具、调用 'say_hello' 和 'get_time' 等基础操作来验证连接和工具功能。

    npm run mcp
  2. LLM 聊天界面演示: 运行以下命令将启动一个命令行聊天界面。该界面使用集成了MCP客户端的LLM模型。你可以输入问题,LLM会根据需要自动调用MCP服务器提供的工具(如 'get_time', 'linkup_search' 等)来回答你的问题。

    npm run chat

    在聊天界面中输入 'quit' 或 'exit' 退出。

信息

分类

开发者工具