项目简介

本项目演示了一个本地文件系统MCP服务器的实现,它允许AI代理通过 Model Context Protocol (MCP) 协议与本地文件系统进行交互。该服务器提供资源读取和工具调用功能,使得AI代理能够读取文件内容,并执行文件写入等操作。此示例还展示了如何将MCP服务器与 AutoGen (AG2) 框架集成,构建具备文件操作能力的AI代理。

主要功能点

  • 资源读取: 允许AI代理通过标准的 'storage://local/{/path}' 格式的URI读取服务器本地文件系统中的文件内容。
  • 工具调用: 提供 'write_file' 工具,允许AI代理在服务器本地文件系统中创建和写入文件。
  • 动态工具发现: AI代理可以通过 'list_tools' 功能动态发现服务器提供的工具及其参数信息。
  • AutoGen 集成: 提供 'MCPAssistantAgent' 类,方便AutoGen代理作为MCP客户端与此服务器进行交互。
  • 清晰的架构: 采用分层架构,明确区分 MCP 服务器、MCP 客户端 (AutoGen Agent) 和 LLM 接口,易于理解和扩展。

安装步骤

  1. 安装 'uv' 包管理器 (如果尚未安装):

    # macOS
    brew install uv
    
    # 其他平台
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 克隆仓库:

    git clone https://github.com/jtanningbed/mcp-ag2-example
    cd mcp-ag2-example
  3. 安装依赖:

    uv sync

服务器配置

为了让MCP客户端 (例如 'MCPAssistantAgent') 连接到此MCP服务器,您需要配置客户端的服务器连接信息。以下是一个示例配置,您需要将其提供给MCP客户端,以便客户端能够启动和连接到服务器:

{
  "server name": "local-file-server",
  "command": "uv",
  "args": ["run", "-m", "server.local_file_server", "--path", "./data"],
  "description": "本地文件系统MCP服务器,允许读写 './data' 目录下的文件。",
  "notes": "您可以修改 'args' 中的 '--path' 参数来指定服务器操作的根目录。默认为 './data'。"
}

配置参数说明:

  • 'server name': 服务器的名称,这里是 "local-file-server"。
  • 'command': 启动服务器的命令,这里使用 'uv run' 来运行 Python 模块。
  • 'args': 传递给服务器命令的参数列表。
    • '"run"': 'uv run' 命令的子命令,用于运行模块。
    • '"-m"': 'uv run' 的参数,表示运行模块。
    • '"server.local_file_server"': 要运行的 Python 模块,即 'server/local_file_server.py' 文件。
    • '"--path"': 'server.local_file_server.py' 模块接收的参数,用于指定服务器操作的根目录,默认为 './data'。您可以根据需要修改此路径。
  • 'description': 对服务器的简要描述,方便用户理解服务器的功能。
  • 'notes': 额外的备注信息,例如如何配置服务器的根目录。

基本使用方法

  1. 运行示例脚本:

    uv run example.py

    这个命令将启动 'example.py' 脚本,该脚本会:

    • 启动一个本地文件系统MCP服务器。
    • 创建一个 'MCPAssistantAgent' 客户端,并配置连接到上述MCP服务器。
    • 使用 'UserProxyAgent' 代理用户发起与 'MCPAssistantAgent' 的对话。
    • 演示 AI 代理如何使用 'read_resource' 读取文件内容,以及如何使用 'call_tool' 调用 'write_file' 工具创建文件,并最终总结文件创建情况。
  2. 理解示例流程:

    • 'example.py' 脚本展示了如何配置和启动 MCP 服务器以及 MCP 客户端 (AutoGen Agent)。
    • AutoGen Agent 通过注册 'read_resource', 'call_tool', 'list_tools' 等函数,使其具备与 MCP 服务器交互的能力。
    • 示例对话流程演示了 AI 代理如何通过 MCP 协议与服务器交互,完成文件操作任务。

通过运行和分析 'example.py' 脚本,您可以更好地理解如何使用该 MCP 服务器以及如何将其集成到您的 AI 应用中。

信息

分类

数据库与文件