MCP客户端工具

一个TypeScript客户端,用于Model Context Protocol (MCP),实现Anthropic的Claude AI与MCP服务器的无缝集成,支持动态工具发现和交互式聊天接口。

  • by Adise211
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Adise211/mcp_client_typescript

使用说明

MCP客户端TypeScript

模型上下文协议(MCP)的TypeScript客户端,可实现Anthropic的Claude AI和MCP服务器之间的无缝集成。该客户端充当桥梁,允许Claude通过MCP协议与外部工具和服务进行交互。

特性

  • 🔌 轻松集成MCP服务器:连接到任何MCP服务器(Python或JavaScript)
  • 🤖 Claude AI集成:与Anthropic的Claude API无缝通信
  • 🛠️ 动态工具发现:自动发现服务器工具并将其暴露给Claude
  • 💬 交互式聊天界面:用于实时交互的命令行界面
  • 🔄 两阶段处理:通过工具执行和响应处理来处理复杂的MCP工作流程
  • 📝 综合录井:用于调试和监控的内置日志记录

安装

先决条件

  • Node.js 18+
  • TypeScript 5.0+
  • 人类API密钥

设置

  1. 克隆仓库

    git clone <repository-url>
    cd mcp_client_typescript
    
  2. 安装依赖项

    npm install
    
  3. 设置环境变量

    cp .env.example .env
    

    编辑 .env 并添加您的Anthropic API密钥:

    ANTHROPIC_API_KEY=your_api_key_here
    ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
    
  4. 构建项目

    npm run build
    

用法

基本用法

使用MCP服务器运行客户端:

npm start <path_to_server_script>

示例:

# Python MCP server
npm start ./servers/my_python_server.py

# JavaScript MCP server
npm start ./servers/my_js_server.js

交互模式

连接后,您可以通过命令行界面与Claude交互:

MCP Client Started!
Type your queries or 'quit' to exit.

Query: What tools are available?
[Calling tool list_tools with args {}]
Available tools: file_operations, database_query, web_search

Query: Search for information about TypeScript
[Calling tool web_search with args {"query": "TypeScript"}]
Based on the search results, TypeScript is a strongly typed programming language...

程序化使用

您还可以将客户端用作库:

import { MCPClient } from "@adise/mcp-client-typescript";

const client = new MCPClient();

try {
  // Connect to an MCP server
  await client.connectToServer("./servers/my_server.py");

  // Start interactive chat
  await client.chatLoop();
} finally {
  // Clean up connections
  await client.cleanup();
}

运作原理

MCP客户端实现了复杂的两阶段通信模式:

  1. 工具发现:连接到MCP服务器并检索可用工具
  2. 查询处理:
    • 向Claude发送用户查询+工具描述
    • Claude决定使用哪些工具(如果有的话)
    • 通过MCP服务器执行工具调用
    • 处理结果并生成最终响应

看 HOW_IT_WORKS.md 详细的技术说明。

api参考

MCP客户端类

构造函数

new MCPClient();

创建新的MCP客户端实例。

方法

connectToServer(serverScriptPath: string): Promise<void>

连接到MCP服务器并发现可用工具。

参数:

  • serverScriptPath:MCP服务器脚本的路径(.py或.js文件)

投掷: 连接失败或服务器脚本无效时出错

chatLoop(): Promise<void>

启动与用户的交互式聊天循环。

cleanup(): Promise<void>

关闭连接并清理资源。

环境变量

变量 描述 必填 默认
ANTHROPIC_API_KEY 您的Anthropic API密钥 是 -
ANTHROPIC_MODEL 要使用的Claude模型 否 claude-3-5-sonnet-20241022

脚本

  • npm run build:将TypeScript编译为JavaScript
  • npm run dev:构建并运行客户端
  • npm run start:运行已编译的客户端
  • npm run clean:删除构建工件

建筑

npm run build

在发展中奔跑

npm run dev <path_to_server_script>

例子

故障排除

常见问题

  1. “未设置ANTHROPIC_API_KEY”

    • 确保您的 .env 文件包含有效的Anthropic API密钥
    • 检查一下 .env 文件位于项目根目录中
  2. “无法连接到MCP服务器”

    • 验证服务器脚本路径是否正确
    • 确保服务器脚本可执行
    • 检查服务器脚本是否正确实现了MCP协议
  3. “服务器脚本必须是.js或.py文件”

    • 仅支持Python(.py)和JavaScript(.js)服务器脚本
    • 确保您的服务器脚本具有正确的文件扩展名

调试模式

通过设置启用详细日志记录 DEBUG 环境变量:

DEBUG=* npm start ./servers/my_server.py

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

支持

对于问题和疑问:

  • 在存储库中创建问题
  • 检查故障排除部分
  • 查看 HOW_IT_WORKS.md 文档