使用说明
项目简介
本项目 'mcp-server' 提供了一个简易的服务器,用于模拟和演示多Agent系统中的消息通信和功能调用。它旨在帮助开发者快速理解和实践多Agent交互的基本概念,并作为一个可fork和修改的实验平台。请注意,该项目声明为演示目的,并非严格遵循 Model Context Protocol (MCP) 标准的完整实现。
主要功能点
- WebSocket通信: 使用WebSocket实现Agent和客户端之间的实时双向通信。
- HTTP接入点: 提供HTTP接口用于客户端连接服务器。
- Redis Pub/Sub: 利用Redis进行消息发布/订阅,支持水平扩展。
- Server-Sent Events (SSE): 支持通过SSE向客户端推送更新和广播消息。
- Agent能力注册: Agent可以注册自身的功能(capabilities),供客户端发现和调用。
- 消息路由: 服务器负责将客户端请求路由到相应的Agent。
- 简单的工具和Agent模拟: 包含多个模拟Agent(如天气Agent、指标Agent、Waylay Agent等),演示不同Agent的功能和交互。
- Prompt模板调用 (Waylay Agent): 通过 Waylay Agent 演示了调用外部服务执行预定义模板的功能,可以理解为 Prompt 模板的简化应用。
安装步骤
- 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm。
- 克隆仓库: 将 GitHub 仓库 'https://github.com/waylayio/mcp-server' 克隆到本地。
git clone https://github.com/waylayio/mcp-server cd mcp-server - 安装依赖: 在项目根目录下运行 'npm install' 安装项目依赖。
npm install - 配置环境变量:
- 复制 '.env.example' 文件并重命名为 '.env'。
- 根据需要修改 '.env' 文件中的环境变量,例如 'WEATHER_API_KEY' (用于天气Agent), 'WAYLAY_API_KEY' 和 'WAYLAY_API_SECRET' (用于 Waylay Agent), 'WAYLAY_AGENT_URL' 和 'WAYLAY_AGENT_SECRET' (用于 Waylay Assistant Agent), 'WAYLAY_WORKORDER_AGENT_URL' 和 'WAYLAY_WORKORDER_AGENT_SECRET' (用于 Waylay Work Order Agent)。请注意,这些环境变量是模拟 Agent 功能所需的外部服务凭据,你可能需要替换为自己的或使用示例中提供的模拟服务。
- Redis 配置: 默认情况下,Redis 连接到本地,如果你的 Redis 服务不在本地或需要其他配置,请查阅 'redis' npm 包的文档进行配置。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令及其参数才能连接。对于本项目,服务器启动命令和参数配置如下 (JSON 格式):
{ "serverName": "mcp-demo-server", "command": "node", "args": ["server/mcp_server.js"], "description": "启动简易MCP服务器 (Node.js)", "notes": "请确保已安装 Node.js 环境并在 mcp-server 项目根目录下运行。" }
配置参数说明:
- 'serverName': 服务器名称,可以自定义。
- 'command': 启动服务器的命令,这里使用 'node' 运行 Node.js 程序。
- 'args': 命令参数,指定服务器入口文件为 'server/mcp_server.js'。
- 'description': 服务器配置的简要描述。
- 'notes': 使用注意事项。
基本使用方法
- 启动 MCP 服务器: 在项目根目录下运行以下命令启动服务器:
服务器默认在 'http://localhost:3000' 运行。node server/mcp_server.js - 启动 Agent: 在 'agents' 目录下,根据需要启动不同的 Agent。例如,启动 'weather_agent.js':
可以同时启动多个 Agent,例如 'metrics_agent.js', 'waylay_agent.js' 等。node agents/weather_agent.js - 运行客户端: 运行 'agents' 目录下的客户端示例,例如 'client.js' 或 'langchain_client.js',观察客户端与服务器以及 Agent 之间的交互。例如启动 'client.js':
客户端会向服务器注册并发送请求,Agent 会处理请求并将结果返回给客户端。node agents/client.js - 广播消息: 可以使用 'curl' 或 Postman 等工具向服务器的 '/broadcast' 端点发送 POST 请求,广播消息到所有连接的客户端和 Agent。
所有连接的客户端和 Agent 都会收到广播消息。curl -X POST -H "Content-Type: application/json" -d '{"message": "Hello, everyone!"}' http://localhost:3000/broadcast - 访问 Agent 列表: 可以通过访问 'http://localhost:3000/agents' 查看当前注册到服务器的 Agent 及其 capabilities (能力)。
注意: 本项目仅为演示目的,代码可能需要根据实际应用场景进行修改和扩展。
信息
分类
通信与社交