项目简介
这是一个使用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工具。
安装步骤
- 确保已安装 Node.js 和 npm 包管理器。
- 克隆仓库:
git clone https://github.com/oneness/ts-mcp-client-server.git cd ts-mcp-client-server - 安装依赖:
npm install - 创建 '.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' - 构建项目:
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服务器进程,并通过标准输入输出来建立连接。
基本使用方法
项目提供了两个主要的运行模式:
-
MCP客户端/服务器基础演示: 运行以下命令将启动一个MCP客户端,该客户端会启动服务器子进程,并执行列出工具、调用 'say_hello' 和 'get_time' 等基础操作来验证连接和工具功能。
npm run mcp -
LLM 聊天界面演示: 运行以下命令将启动一个命令行聊天界面。该界面使用集成了MCP客户端的LLM模型。你可以输入问题,LLM会根据需要自动调用MCP服务器提供的工具(如 'get_time', 'linkup_search' 等)来回答你的问题。
npm run chat在聊天界面中输入 'quit' 或 'exit' 退出。
信息
分类
开发者工具