项目简介
本项目演示了一个本地文件系统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 接口,易于理解和扩展。
安装步骤
-
安装 'uv' 包管理器 (如果尚未安装):
# macOS brew install uv # 其他平台 curl -LsSf https://astral.sh/uv/install.sh | sh -
克隆仓库:
git clone https://github.com/jtanningbed/mcp-ag2-example cd mcp-ag2-example -
安装依赖:
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': 额外的备注信息,例如如何配置服务器的根目录。
基本使用方法
-
运行示例脚本:
uv run example.py这个命令将启动 'example.py' 脚本,该脚本会:
- 启动一个本地文件系统MCP服务器。
- 创建一个 'MCPAssistantAgent' 客户端,并配置连接到上述MCP服务器。
- 使用 'UserProxyAgent' 代理用户发起与 'MCPAssistantAgent' 的对话。
- 演示 AI 代理如何使用 'read_resource' 读取文件内容,以及如何使用 'call_tool' 调用 'write_file' 工具创建文件,并最终总结文件创建情况。
-
理解示例流程:
- 'example.py' 脚本展示了如何配置和启动 MCP 服务器以及 MCP 客户端 (AutoGen Agent)。
- AutoGen Agent 通过注册 'read_resource', 'call_tool', 'list_tools' 等函数,使其具备与 MCP 服务器交互的能力。
- 示例对话流程演示了 AI 代理如何通过 MCP 协议与服务器交互,完成文件操作任务。
通过运行和分析 'example.py' 脚本,您可以更好地理解如何使用该 MCP 服务器以及如何将其集成到您的 AI 应用中。
信息
分类
数据库与文件