这是一个简单的MCP服务器实现,主要用于演示如何为大语言模型(LLM)提供受控的文件系统访问能力。它通过HTTP接口接收来自LLM客户端的工具调用请求,并在指定沙箱目录内执行文件操作。
项目简介
该项目提供了一个基础的后端服务('mcp_server.py'),它充当LLM与本地文件系统之间的安全网关。所有文件操作都被限制在一个预设的“沙箱”目录内,防止LLM访问或修改不应访问的文件。项目还包含示例LLM客户端脚本,演示如何调用服务器提供的工具。
主要功能点
- 文件沙箱: 所有文件读、写、列表操作都严格限制在一个指定的安全目录下。
- 工具暴露: 通过标准的HTTP接口向LLM客户端暴露文件操作工具(读取文件、写入文件、列出目录)。
- 工具执行: 服务器接收客户端的工具调用请求,执行相应的沙箱内文件操作,并将结果返回给客户端。
- 安全检查: 内置路径安全检查,防止LLM尝试进行目录穿越访问沙箱外部的文件。
安装步骤
- 确保您的系统已安装 Python 3。
- 克隆或下载该仓库的代码文件。
- 打开终端或命令提示符,进入代码所在的目录。
- 安装所需的 Python 库。可以使用 'pip' 和 'requirements.txt' 文件(如果提供)或手动安装:
(注:'google-generativeai' 或 'google-genai' 库是LLM客户端脚本所需的,服务器端主要需要 'Flask' 和 'requests')pip install Flask requests google-generativeai # 或 google-genai
服务器配置
您的LLM客户端需要知道如何连接到这个MCP服务器并了解它提供的能力。对于这个特定的服务器实现:
- 启动命令: 启动服务器的标准命令是 'python mcp_server.py'。
- 启动参数: 您可以通过添加 '--sandbox-dir <目录路径>' 参数来指定用作文件沙箱的目录。例如:'python mcp_server.py --sandbox-dir /path/to/your/safe/folder'。如果省略此参数,服务器将默认在脚本所在目录创建一个名为 'mcp_data_sandbox' 的子目录作为沙箱。
- 网络地址: 服务器默认在本地机器的 'http://localhost:5003' 地址上监听请求。您的LLM客户端需要配置连接到此URL以调用服务器提供的工具。
一个典型的MCP客户端配置(假设客户端负责启动服务器进程)可能需要提供以下信息:
- 服务器的可执行命令 ('python')
- 启动脚本 ('mcp_server.py')
- 沙箱目录参数 ('--sandbox-dir', 及其值)
- 服务器监听的网络地址 ('http://localhost:5003')
基本使用方法
- 启动服务器: 打开一个终端窗口,进入项目目录,运行服务器启动命令,并可选指定沙箱目录:
服务器成功启动后,会显示其正在监听的地址和沙箱目录信息。python mcp_server.py # 使用默认沙箱 ./mcp_data_sandbox # 或 python mcp_server.py --sandbox-dir ./my_safe_files - 设置API Key: 如果您使用项目自带的客户端脚本 ('chat_with_gemini_mcp.py' 或 'simple_chat.py'),需要设置 'GOOGLE_API_KEY' 环境变量。
- 启动LLM客户端: 打开另一个终端窗口,进入项目目录,运行客户端脚本:
python chat_with_gemini_mcp.py # 或 python simple_chat.py - 与LLM交互: 在客户端终端中与LLM聊天。当您提出文件相关的请求(如“列出文件”、“读取文件X”、“将Y写入文件Z”)时,LLM会识别这些意图并调用MCP服务器提供的相应工具来完成操作。服务器会在其终端显示工具执行情况,并将结果返回给LLM,LLM再将结果转述给您。
重要提示: 务必谨慎选择沙箱目录,确保其中不包含敏感或不应被LLM访问/修改的文件。
信息
分类
AI与计算