项目简介
这个项目构建了一个基于多智能体(Multi-Agent)的销售顾问系统,其后端核心实现遵循了 Model Context Protocol (MCP) 标准。项目包含一个MCP服务器,负责托管和执行外部工具(Tools),例如查询产品库存信息和创建销售订单。多智能体部分(使用 CrewAI 框架)作为MCP客户端,通过调用这些工具来完成分析客户需求、检查库存、处理订单等复杂任务。整个系统提供了一个LLM应用如何通过MCP协议与外部系统(如数据库、文件存储)进行交互的示例。
主要功能点
- 产品库存与价格查询: MCP服务器通过工具与 MongoDB 数据库交互,允许客户端查询指定产品的库存状态、颜色、容量和价格信息。
- 销售订单创建: 提供一个工具用于接收标准格式的订单详情,并将订单数据保存到服务器的文件系统中。
- MCP工具服务: 按照 MCP 协议标准,服务器将产品查询和订单创建等功能封装为可由 MCP 客户端(如 LLM 应用或多智能体系统)调用的工具。
- SSE传输支持: 服务器支持使用 Server-Sent Events (SSE) 作为 MCP 协议的通信传输方式。
安装步骤
- 克隆仓库:
git clone https://github.com/TrongNV2003/Multi-Agents-Function-Calling.git cd Multi-Agents-Function-Calling - 安装Python依赖:
确保您的系统安装了 Python 3.8 或更高版本。然后安装项目所需的库:
pip install crewai mcp pymongo pydantic pydantic-settings python-dotenv loguru fastapi uvicorn - 配置环境变量:
在项目根目录下创建或编辑 '.env' 文件,根据 'multi_agents/config/settings.py' 中的定义,设置必要的配置,特别是您的LLM API Key 和 MongoDB 连接信息。
例如:
请根据您的实际情况修改值。GEMINI_API_KEY="YOUR_GEMINI_API_KEY" MONGO_URI="mongodb://localhost:27017/" DB_NAME="inventory" - 初始化数据库(可选):
该项目依赖 MongoDB 存储产品数据。确保您的 MongoDB 服务正在运行。如果需要载入示例产品数据,您需要自行准备一个 JSON 文件(例如 'storage/inventory.json',格式需符合 'multi_agents/db/insert_data.py' 的要求),然后运行初始化脚本:
python multi_agents/db/insert_data.py
服务器配置 (供 MCP 客户端使用)
该 MCP 服务器通过 SSE 协议在 'http://localhost:8000/sse' 地址提供服务。 如果您的 MCP 客户端需要连接此服务器,典型的配置信息(可能在客户端的 JSON 配置文件中)会包含以下结构,指定如何找到并与之通信:
{ "name": "Agento Sales MCP Server", "command": ["python", "mcp_server.py"], "args": [], "transport": "sse", "url": "http://localhost:8000/sse" }
- 'name': 服务器的名称标识。
- 'command' 和 'args': 指定如何通过命令行启动服务器进程(如果客户端需要管理进程)。
- 'transport': 指定使用的传输协议,此处为 'sse'。
- 'url': 指定服务器的连接地址和端口。请根据您的实际部署环境调整此地址。
基本使用方法
- 启动 MCP 服务器:
打开一个终端窗口,进入项目根目录,运行:
这将启动 MCP 服务器,监听来自客户端的请求。python mcp_server.py - (可选)运行多智能体系统(作为 MCP 客户端示例):
在服务器正在运行的同时,打开另一个终端窗口,进入项目根目录,您可以运行示例客户端来测试服务器的功能:
- 命令行模式:
python main.py - 图形界面模式: (需要安装 Streamlit: 'pip install streamlit')
python -m streamlit run interface/gui.py
- 命令行模式:
- 通过兼容的 MCP 客户端调用工具: 您可以开发或使用任何兼容 MCP 协议的 LLM 客户端应用。配置客户端连接到您部署的此 MCP 服务器的地址 ('http://localhost:8000/sse'),然后您的客户端就可以通过 JSON-RPC 调用服务器暴露的工具,如 'create_order' (用于创建订单) 和 'get_product_info' (用于查询产品)。
信息
分类
商业系统