项目简介
本项目是一个简单的Model Context Protocol (MCP) 服务器实现,旨在演示如何构建一个能够向LLM Agent提供工具能力的后端服务。它基于JSON-RPC协议通过标准输入输出流 (stdio) 与MCP客户端通信,允许LLM客户端发现并调用服务器提供的各种工具。
主要功能点
- 工具注册与发现: 服务器可以注册和管理多种工具,并通过MCP协议向客户端声明工具的功能和参数信息,使客户端能够动态发现和使用这些工具。
- 工具调用执行: 服务器接收来自MCP客户端的工具调用请求,执行相应的工具方法,并将结果以JSON-RPC响应的形式返回给客户端。
- 内置多种工具提供器: 项目内置了实用工具 (UtilityToolProvider)、预约工具 (AppointmentToolProvider)、程序学习工具 (ProgramToolProvider) 和门店查询工具 (StoreLocatorToolProvider) 等多种模拟工具,方便用户快速体验和测试MCP服务器的功能。
- 基于标准Stdio传输: 服务器和客户端之间通过标准的stdio进行通信,简化了部署和运行配置。
- 可扩展的工具提供器: 项目采用模块化的工具提供器架构,用户可以轻松扩展和自定义工具提供器,以满足不同的应用场景需求。
安装步骤
- 安装Python环境: 确保您的系统已安装Python 3.7 或更高版本。
- 创建并激活虚拟环境 (推荐):
python3 -m venv venv source venv/bin/activate # 或根据您的系统使用 .\venv\Scripts\activate - 安装依赖: 在虚拟环境中,导航到仓库根目录并运行以下命令安装项目依赖:
pip install -r requirements.txt
服务器配置
MCP服务器通过命令行启动,无需复杂的配置文件。MCP客户端需要配置服务器的启动命令及其参数,以便建立连接并发现工具。以下是一个 'mcp_config.json' 示例配置,用于配置客户端连接到本仓库提供的MCP服务器:
{ "mcpServers": { "my_mcp_server": { "command": "python", "args": ["/path/to/llm-agents/tool_provider_mcp_server.py"] } } }
配置参数说明:
- '"my_mcp_server"': 服务器名称,可以自定义,客户端使用此名称来引用服务器。
- '"command"': 启动MCP服务器的命令,通常为Python解释器的路径。 重要: 如果您在虚拟环境中运行服务器,请务必使用虚拟环境中的Python解释器完整路径。
- '"args"': 传递给服务器的命令行参数,例如 '["--debug"]' 可以启用调试模式。 '/path/to/llm-agents/tool_provider_mcp_server.py' 需要替换为 'tool_provider_mcp_server.py' 脚本的实际绝对路径。
注意: 请根据您的实际环境修改 '/path/to/llm-agents/tool_provider_mcp_server.py' 为 'tool_provider_mcp_server.py' 脚本的绝对路径,并确保MCP客户端能够正确读取 'mcp_config.json' 配置文件。
基本使用方法
-
启动MCP服务器: 无需手动启动服务器。MCP客户端会根据 'mcp_config.json' 中的配置,在需要时自动启动MCP服务器进程。
-
运行MCP客户端: 使用 'tool_agent_mcp_client.py' 脚本启动MCP客户端。客户端将读取 'mcp_config.json' 配置,连接到配置的MCP服务器,并注册服务器提供的工具。
python tool_agent_mcp_client.py -
与Agent对话: 客户端启动后,您可以与Agent进行自然语言对话。Agent将能够利用MCP服务器提供的工具来完成用户请求。例如,您可以询问天气、预约服务、查询门店信息等。
> What is the weather in 94105? Agent: {"temperature": "75 F", "conditions": "Sunny"} > I want to book a dentist appointment. Agent: ["dentist", "vision", "hair"] > ... -
查看可用工具: 在客户端对话中,您可以输入 'tools' 命令来查看当前Agent可用的所有工具及其描述。
> tools Available Tools: - AppointmentToolProvider_book_appointment: Books the appointment with the given ID. ... - ... (更多工具) -
结束会话: 在客户端对话中,输入 'exit'、'quit' 或 'bye' 命令即可结束会话。
信息
分类
AI与计算