使用说明

项目简介

本示例是 Autochat 项目为了演示 MCP (Model Context Protocol) 服务器功能而提供的,它基于 FastMCP 框架实现。虽然它不是一个独立的、功能完备的 MCP 服务器产品,但它展示了如何构建一个基础的 MCP 服务器,并与 Autochat 智能体客户端进行交互。

请注意: 这只是一个示例服务器,旨在帮助开发者理解 MCP 服务器的基本概念和 Autochat 如何作为 MCP 客户端与之交互。在生产环境中使用可能需要根据实际需求进行扩展和优化。

主要功能点

  • 资源管理: 示例服务器托管了简单的文件资源,允许客户端通过 URI (如 'files://file1') 访问和读取这些文件。
  • 工具注册与执行: 示例服务器注册了一个简单的 'add' 工具,允许客户端调用此工具执行加法运算。
  • 基础的FastMCP服务器框架: 基于 FastMCP 框架构建,提供了处理 MCP 协议请求和响应的基础设施。

安装步骤

由于这是一个示例服务器,它通常与 Autochat 客户端一起使用。要运行此示例,您需要先安装 Autochat 及其依赖:

pip install 'autochat[all]'

FastMCP 及其命令行工具 'mcp' 已经在 'autochat[all]' 的依赖中包含,无需单独安装。

服务器配置

MCP 客户端(例如 Autochat)需要配置服务器连接信息才能与之通信。以下是运行此示例服务器所需的最小配置信息(JSON 格式):

{
  "server_name": "Demo MCP Server",
  "command": "uv",
  "args": [
    "run",
    "--with",
    "mcp[cli]",
    "mcp",
    "run",
    "tests/mcp_clients/server.py"
  ],
  "description": "Autochat 项目提供的示例 MCP 服务器,基于 FastMCP 框架。"
}

配置参数说明:

  • 'server_name': 服务器的名称,可以自定义,用于在客户端标识服务器连接。
  • 'command': 启动 MCP 服务器的命令。这里使用 'uv run' 来运行 Python 脚本。('uv' 是一个更快的 Python 包安装和运行工具,如果系统中没有 'uv',可能需要替换为 'python' 或 'python3',并确保安装了 'fastmcp' 和 'mcp-cli',通常包含在 'autochat[all]' 的依赖中。)
  • 'args': 传递给 'command' 的参数列表。
    • '"run"': 'uv run' 命令的子命令,用于运行 Python 脚本。
    • '"--with"': 'uv run' 的参数,指定运行脚本时需要加载的插件或扩展。
    • '"mcp[cli]"': 指定加载 'mcp' 插件及其命令行界面 (cli)。
    • '"mcp"': 'mcp' 插件的入口点。
    • '"run"': 'mcp' 插件的子命令,用于运行 MCP 服务器脚本。
    • '"tests/mcp_clients/server.py"': MCP 服务器的 Python 脚本路径。请注意,此路径是相对于 MCP 客户端(例如 Autochat 运行的目录)而言的。 如果客户端和服务器脚本在不同目录下,请根据实际情况调整此路径。
  • 'description': 服务器的描述信息,可以自定义,用于提供服务器的额外说明。

重要提示:

  • 命令执行环境: 上述 'command' 和 'args' 配置是为 类 Unix 系统 (如 Linux, macOS)设计的。在 Windows 系统下,可能需要调整命令和参数,例如使用 'python' 作为 'command',并直接将脚本路径作为 'args' 的第一个元素。
  • 路径问题: '"tests/mcp_clients/server.py"' 路径是示例配置,实际使用时请根据 'server.py' 文件在您系统中的实际位置进行调整。确保 MCP 客户端能够找到并执行服务器脚本。
  • 依赖安装: 确保运行服务器脚本的环境中已经安装了 'fastmcp' 和 'mcp-cli'。如果使用 'autochat[all]' 安装,这些依赖通常会被自动安装。

基本使用方法

  1. 启动 MCP 服务器:
    不需要 手动启动 'tests/mcp_clients/server.py' 脚本。Autochat 客户端会根据您提供的服务器配置信息,在需要时自动启动 MCP 服务器进程。

  2. 配置 Autochat 客户端连接 MCP 服务器: 在 Autochat 代码中,您需要配置 'mcp_servers' 参数,将上述 JSON 配置信息以 Python 字典或列表的形式传递给 'Autochat' 类的构造函数。例如:

    from autochat import Autochat
    from mcp import StdioServerParameters # 导入客户端需要的 server parameters 类
    
    server_config = { # 使用上面提供的 JSON 配置
        "server_name": "Demo MCP Server",
        "command": "uv",
        "args": [
            "run",
            "--with",
            "mcp[cli]",
            "mcp",
            "run",
            "tests/mcp_clients/server.py"
        ],
        "description": "Autochat 项目提供的示例 MCP 服务器,基于 FastMCP 框架。"
    }
    
    # 创建 StdioServerParameters 实例,用于描述服务器启动参数
    server_params = StdioServerParameters(
        command=server_config["command"],
        args=server_config["args"],
        server_name=server_config["server_name"],
        description=server_config["description"]
    )
    
    agent = Autochat(mcp_servers=[server_params]) # 将 server_params 传递给 Autochat
    
    # 现在 Autochat 智能体就可以使用 MCP 服务器提供的资源和工具了
    
    # 例如,使用工具 "add"
    for message in agent.run_conversation_async("使用计算器计算 1 加 2"):
        print(message.to_terminal())
    
    # 例如,列出和读取文件资源
    for message in agent.run_conversation_async("列出文件,然后获取 file1"):
        print(message.to_terminal())

    注意: 示例代码中使用了 'StdioServerParameters' 类来描述服务器的启动参数,这是 'mcp' 客户端库提供的便利类,用于结构化地描述服务器配置。

  3. 使用 MCP 服务器提供的功能: 一旦 Autochat 客户端成功连接到 MCP 服务器,它就可以通过自然语言指令调用服务器提供的工具和访问服务器管理的资源。例如,在对话中使用 "使用计算器..." 或 "读取文件..." 等指令,Autochat 智能体将能够识别这些指令,并调用 MCP 服务器上的相应工具或资源来完成任务。

总结

这个示例展示了 Autochat 项目如何利用 FastMCP 框架构建一个简单的 MCP 服务器,并演示了 Autochat 客户端如何与之交互。虽然功能有限,但它为理解 MCP 服务器的基本架构和 Autochat 与 MCP 服务器的集成提供了一个很好的起点。开发者可以基于此示例进行扩展,构建更强大的 MCP 服务器,为智能体应用提供丰富的上下文信息和功能支持。

信息

分类

AI与计算