Node.js Client Implementation for Model Context Protocol (MCP)
MCP Client 是一个基于 Model Context Protocol 的 Node.js 客户端实现(使用 Function Calling),它允许您的应用连接到各种 MCP 服务器,并通过大语言模型(LLM)与这些服务器交互。MCP(模型上下文协议)是一个开放协议,用于标准化应用程序向 LLM 提供上下文的方式。
logs/
目录)git clone https://github.com/ConardLi/mcp-client-nodejs.git
cd mcp-client-nodejs
npm install
所需依赖项:
复制示例环境变量文件并设置您的 LLM API 密钥:
cp .env.example .env
然后编辑 .env
文件,填入您的 LLM API 密钥、模型提供商 API 地址、以及模型名称:
OPENAI_API_KEY=your_api_key_here
MODEL_NAME=xxx
BASE_URL=xxx
npm run build
要启动 MCP 客户端,您可以使用以下几种方式:
node build/index.js <服务器脚本路径>
其中 <服务器脚本路径>
是指向 MCP 服务器脚本的路径,可以是 JavaScript (.js) 或 Python (.py) 文件。
node build/index.js <服务器标识符> <配置文件路径>
其中 <服务器标识符>
是配置文件中定义的服务器名称,<配置文件路径>
是包含服务器定义的 JSON 文件的路径。
{
"mcpServers": {
"time": {
"command": "node",
"args": [
"/Users/xxx/mcp/dist/index.js"
],
"description": "自定义 Node.js MCP服务器"
},
"mongodb": {
"command": "npx",
"args": [
"mcp-mongo-server",
"mongodb://localhost:27017/studentManagement?authSource=admin"
]
}
},
"defaultServer": "mongodb",
"system": "自定义系统提示词"
}
您可以直接通过 npx 运行这个包,无需本地克隆和构建:
# 直接连接脚本
$ npx mcp-client-nodejs /path/to/mcp-server.js
# 通过配置文件连接
$ npx mcp-client-nodejs mongodb ./mcp-servers.json
注意:需要在当前运行目录的 .env 配置模型相关信息
直接连接 JavaScript MCP 服务器:
node build/index.js /path/to/weather-server/build/index.js
直接连接 Python MCP 服务器:
node build/index.js /path/to/mcp-server.py
使用配置文件连接服务器:
node build/index.js mongodb ./mcp-servers.json
使用 npx 运行:
# 直接连接脚本
$ npx mcp-client-nodejs /path/to/mcp-server.js
# 通过配置文件连接
$ npx mcp-client-nodejs mongodb./mcp-servers.json
MCP Client 包含一个全面的日志系统,详细记录所有关键操作和通信。日志文件保存在 logs/
目录中,以 JSON 格式存储,方便查询和分析。
日志文件连统命名为 [index] [log_type] YYYY-MM-DD HH:MM:SS.json
,包含序号、日志类型和时间戳,方便按时间顺序查看整个会话。
MCP Client 基于模块化的客户端-服务器架构:
Error: Cannot find module
:检查构建文件夹并确保 TypeScript 编译成功Connection refused
:确保服务器正在运行且路径正确Tool execution failed
:验证工具所需的环境变量是否已设置OPENAI_API_KEY is not set
:检查您的 .env 文件和环境变量TypeError
:确保为工具参数使用正确的类型Apache License 2.0
{ "mcpServers": { "mcp-client-nodejs": { "command": "node", "args": [ "/Users/xxx/mcp/dist/index.js" ] } } }
Related projects feature coming soon
Will recommend related projects based on sub-categories