项目简介

本项目是 VideoSDK AI Agent 快速入门示例的一部分,其中包含了 MCP (Model Context Protocol) 服务器的实现示例。这个特定的示例展示了一个极简的 MCP 服务器,它通过标准输入输出 (Stdio) 协议与客户端通信,并提供一个用于获取当前日期时间的工具。

主要功能点

  • 实现基本的 MCP 服务器功能。
  • 注册并提供一个名为 'get_current_time' 的工具,该工具返回服务器当前系统的日期和时间。
  • 使用 Stdio 作为与 MCP 客户端通信的传输协议。
  • 作为 LLM(大型语言模型)的上下文服务,允许 LLM 通过 MCP 协议调用 'get_current_time' 工具来获取实时时间信息。

安装步骤

  1. 克隆本仓库:
    git clone https://github.com/videosdk-live/agents-quickstart
    cd agents-quickstart
  2. 创建并激活 Python 虚拟环境 (需要 Python 3.12 或更高版本):
    # macOS/Linux
    python3.12 -m venv venv
    source venv/bin/activate
    # Windows
    python -m venv venv
    venv\Scripts\activate
  3. 安装所需的依赖库:
    pip install -r requirements.txt
    这会安装包括 'videosdk-agents' 在内的所有必要库,其中包含了用于构建 MCP 服务器的功能。

服务器配置

要让 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 通信。您不需要手动启动服务器后再运行客户端,客户端会负责管理服务器进程的生命周期。

基本使用方法

  1. 确保已完成安装步骤。
  2. 直接运行位于 'MCP Server' 目录下的示例服务器脚本来手动测试或启动:
    # 激活虚拟环境
    source venv/bin/activate # macOS/Linux
    # 或 venv\Scripts\activate # Windows
    
    # 运行服务器(它将在 StdIO 上监听,通常用于由客户端启动)
    python ./MCP\ Server/mcp_stdio_example.py
    注意:通常这个脚本不是由用户直接运行的,而是由配置了该服务器的 MCP 客户端程序自动启动和管理的。
  3. 如果您是构建 MCP 客户端,请参考仓库中 'OpenAI', 'Google Gemini', 'AWS Nova Sonic' 等目录下的 Agent 示例代码(如 'openai_agent_quickstart.py'),它们演示了如何使用 'MCPServerStdio' 类并配置 'command' 和 'args' 来连接到这个 MCP 服务器。例如,在 Agent 初始化时添加如下配置(请根据实际路径调整 'args'):
    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 的其他方法 ...
    当运行配置了此 'MCPServerStdio' 的 Agent 客户端时,Agent 会自动启动 'mcp_stdio_example.py' 进程,并与它进行通信以使用 'get_current_time' 工具。

信息

分类

AI与计算