智能对话代理工具

一个基于Node.js的工具调用代理,集成Model Context Protocol (MCP)服务器并使用OpenRouter AI进行智能对话和工具执行。

  • by bharathbattu
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 bharathbattu/MCP_Agent

使用说明

MCP 代理

一个Node.js工具调用代理,它与模型上下文协议(MCP)服务器集成,并使用OpenRouter AI进行智能对话和工具执行。

概述

这个项目展示了如何构建一个能够:

  • 使用OpenRouter AI(GPT-3.5-turbo)进行互动对话
  • 根据用户请求自动检测何时使用工具
  • 调用MCP(模型上下文协议)服务器工具来执行特定任务
  • 在多次交互中保持对话上下文

特点/特性

  • OpenRouter 集成使用OpenRouter API访问支持函数调用的GPT-3.5-turbo
  • MCP服务器通信连接到本地MCP服务器以执行工具
  • 工具调用自动检测何时使用 generate_movie_story 工具
  • 会话管理正确管理带有会话ID头的MCP会话
  • SSE 支持处理JSON和服务器发送事件(SSE)响应
  • **交互式命令行界面 (CLI)**用于实时对话的命令行界面

先决条件

  • Node.js(v14或更高版本)
  • 一个有效的OpenRouter API密钥
  • 一个正在运行的MCP服务器 http://localhost:3000/mcp

安装

  1. 克隆仓库:
git clone <repository-url>
cd mcp-agent
  1. 安装依赖项:
npm install
  1. 创建一个 .env 项目根目录下的文件:
OPENROUTER_API_KEY=your_openrouter_api_key_here

配置

环境变量

创建一个 .env 包含以下变量的文件:

变量 描述 必需
OPENROUTER_API_KEY 您的OpenRouter API密钥 是

MCP 服务器

代理期望在(某个位置)运行MCP服务器 http://localhost:3000/mcp 提供了以下工具:

  • 生成电影故事生成一个随机的电影故事创意

用法

启动代理

使用以下命令运行代理:

npm start

或者直接使用 Node.js:

node agent.js

互动聊天

一旦开始,您就可以输入信息与人工智能进行互动:

=== MCP Tool-Calling Agent ===
Connected to OpenRouter AI with MCP server integration
Type your message or 'exit' to quit

You: Give me a creative movie idea

代理将自动检测何时使用 generate_movie_story 工具并通过MCP服务器执行它。

退出

类型 exit 退出应用程序:

You: exit
Goodbye!

项目结构

mcp-agent/
├── agent.js          # Main agent implementation
├── list-models.js    # Utility to list available OpenRouter models
├── package.json      # Project dependencies and scripts
├── .env              # Environment variables (not tracked in git)
└── README.md         # This file

它是如何工作的

1. 工具定义

代理定义了AI模型可以使用的工具:

const TOOL_DEFINITION = {
  name: "generate_movie_story",
  description: "Generates a random movie story idea...",
  parameters: { /* ... */ }
};

2. 对话流程

  1. 用户发送了一条消息
  2. 消息已使用可用工具发送至OpenRouter AI
  3. AI决定是调用工具还是直接回应
  4. 如果需要工具:
    • 代理初始化MCP会话
    • 通过MCP服务器执行该工具
    • 将工具结果发送回AI
    • AI利用工具数据生成最终响应
  5. 响应显示给用户

3. MCP 通讯

代理使用JSON-RPC 2.0协议与MCP服务器进行通信:

  1. 初始化建立会话并接收会话ID
  2. 工具调用使用会话ID执行请求的工具

可用脚本

  • npm start - 启动代理
  • npm test - 运行测试(尚未实现)

依赖项

  • dotenv(用于加载环境变量的库) (^17.2.3) - 环境变量管理

API 参考文档

OpenRouter

  • 终端(或终点): https://openrouter.ai/api/v1/chat/completions
  • 模型: openai/gpt-3.5-turbo
  • 特点/特性函数调用,对话历史

MCP 服务器

  • 终端节点: http://localhost:3000/mcp
  • 协议;议定书;规程JSON-RPC 2.0
  • 方法:
    • initialize - 开始一个新的会话
    • tools/call - 执行工具

错误处理

该代理包含全面的错误处理机制:

  • MCP服务器连接错误
  • OpenRouter API错误
  • SSE解析错误
  • 工具执行失败

所有错误都带有描述性信息记录到控制台。

故障排除

“MCP服务器未返回会话ID”

确保您的MCP服务器正在运行并且已正确配置以返回 mcp-session-id 头球

“OpenRouter API错误:401”

检查你的 OPENROUTER_API_KEY 在……中 .env 文件有效且处于活动状态。

“MCP 工具调用失败”

验证您的MCP服务器是否实现了 generate_movie_story 正确地使用工具。

未来改进/增强

  • [ ] 添加对多种工具的支持
  • [ ] 实现对话历史记录持久化
  • [ ] 添加流式响应支持
  • [ ] 创建单元测试
  • [ ] 添加日志系统
  • [ ] 对不同AI模型的支持
  • [ ] 网页界面

做出贡献

欢迎贡献!请随时提交拉取请求。

许可证

ISC(International Security Council,国际安全理事会)

作者

你的名字

致谢