项目简介
本项目是 VideoSDK AI Agent 快速入门示例的一部分,其中包含了 MCP (Model Context Protocol) 服务器的实现示例。这个特定的示例展示了一个极简的 MCP 服务器,它通过标准输入输出 (Stdio) 协议与客户端通信,并提供一个用于获取当前日期时间的工具。
主要功能点
- 实现基本的 MCP 服务器功能。
- 注册并提供一个名为 'get_current_time' 的工具,该工具返回服务器当前系统的日期和时间。
- 使用 Stdio 作为与 MCP 客户端通信的传输协议。
- 作为 LLM(大型语言模型)的上下文服务,允许 LLM 通过 MCP 协议调用 'get_current_time' 工具来获取实时时间信息。
安装步骤
- 克隆本仓库:
git clone https://github.com/videosdk-live/agents-quickstart cd agents-quickstart - 创建并激活 Python 虚拟环境 (需要 Python 3.12 或更高版本):
# macOS/Linux python3.12 -m venv venv source venv/bin/activate # Windows python -m venv venv venv\Scripts\activate - 安装所需的依赖库:
这会安装包括 'videosdk-agents' 在内的所有必要库,其中包含了用于构建 MCP 服务器的功能。pip install -r requirements.txt
服务器配置
要让 MCP 客户端(例如 VideoSDK 的 Agent)连接并使用这个 MCP 服务器,客户端需要知道如何启动和连接到它。对于基于 Stdio 的服务器,客户端配置的关键在于提供启动服务器进程的命令和参数。
您的 MCP 客户端需要配置启动此 MCP 服务器进程所需的信息。主要包含以下参数说明:
- 'name': MCP 服务器的标识名称,例如在示例代码中定义为 "CurrentTimeServer"。
- 'transport': 客户端与服务器通信的传输协议,本示例使用 'stdio' (标准输入输出)。
- 'command': 启动 MCP 服务器进程的可执行命令,通常是您系统中 Python 解释器的路径(例如 '/usr/bin/python3' 或 'python')。
- 'args': 传递给启动命令的参数列表,其中至少应包含 MCP 服务器脚本 'mcp_stdio_example.py' 相对于您的运行目录的路径(例如 '['./MCP Server/mcp_stdio_example.py']')。
客户端应用程序(如使用 'videosdk-agents' SDK 构建的 Agent)会使用这些信息在内部启动这个服务器进程,并通过其标准输入输出流进行 JSON-RPC 通信。您不需要手动启动服务器后再运行客户端,客户端会负责管理服务器进程的生命周期。
基本使用方法
- 确保已完成安装步骤。
- 直接运行位于 'MCP Server' 目录下的示例服务器脚本来手动测试或启动:
注意:通常这个脚本不是由用户直接运行的,而是由配置了该服务器的 MCP 客户端程序自动启动和管理的。# 激活虚拟环境 source venv/bin/activate # macOS/Linux # 或 venv\Scripts\activate # Windows # 运行服务器(它将在 StdIO 上监听,通常用于由客户端启动) python ./MCP\ Server/mcp_stdio_example.py - 如果您是构建 MCP 客户端,请参考仓库中 'OpenAI', 'Google Gemini', 'AWS Nova Sonic' 等目录下的 Agent 示例代码(如 'openai_agent_quickstart.py'),它们演示了如何使用 'MCPServerStdio' 类并配置 'command' 和 'args' 来连接到这个 MCP 服务器。例如,在 Agent 初始化时添加如下配置(请根据实际路径调整 'args'):
当运行配置了此 'MCPServerStdio' 的 Agent 客户端时,Agent 会自动启动 'mcp_stdio_example.py' 进程,并与它进行通信以使用 'get_current_time' 工具。from videosdk.agents import Agent, MCPServerStdio import sys from pathlib import Path mcp_script = Path(__file__).parent.parent / "MCP Server" / "mcp_stdio_example.py" class MyAgentWithMCP(Agent): def __init__(self): super().__init__( # ... 其他参数 ... mcp_servers=[ MCPServerStdio( command=sys.executable, # 使用当前的 Python 解释器 args=[str(mcp_script)], # 传递服务器脚本路径作为参数 client_session_timeout_seconds=30 ) ] ) # ... Agent 的其他方法 ...
信息
分类
AI与计算