这是一个简单的MCP服务器实现,主要用于演示如何为大语言模型(LLM)提供受控的文件系统访问能力。它通过HTTP接口接收来自LLM客户端的工具调用请求,并在指定沙箱目录内执行文件操作。

项目简介

该项目提供了一个基础的后端服务('mcp_server.py'),它充当LLM与本地文件系统之间的安全网关。所有文件操作都被限制在一个预设的“沙箱”目录内,防止LLM访问或修改不应访问的文件。项目还包含示例LLM客户端脚本,演示如何调用服务器提供的工具。

主要功能点

  • 文件沙箱: 所有文件读、写、列表操作都严格限制在一个指定的安全目录下。
  • 工具暴露: 通过标准的HTTP接口向LLM客户端暴露文件操作工具(读取文件、写入文件、列出目录)。
  • 工具执行: 服务器接收客户端的工具调用请求,执行相应的沙箱内文件操作,并将结果返回给客户端。
  • 安全检查: 内置路径安全检查,防止LLM尝试进行目录穿越访问沙箱外部的文件。

安装步骤

  1. 确保您的系统已安装 Python 3。
  2. 克隆或下载该仓库的代码文件。
  3. 打开终端或命令提示符,进入代码所在的目录。
  4. 安装所需的 Python 库。可以使用 'pip' 和 'requirements.txt' 文件(如果提供)或手动安装:
    pip install Flask requests google-generativeai # 或 google-genai
    (注:'google-generativeai' 或 'google-genai' 库是LLM客户端脚本所需的,服务器端主要需要 'Flask' 和 'requests')

服务器配置

您的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')

基本使用方法

  1. 启动服务器: 打开一个终端窗口,进入项目目录,运行服务器启动命令,并可选指定沙箱目录:
    python mcp_server.py # 使用默认沙箱 ./mcp_data_sandbox
    # 或
    python mcp_server.py --sandbox-dir ./my_safe_files 
    服务器成功启动后,会显示其正在监听的地址和沙箱目录信息。
  2. 设置API Key: 如果您使用项目自带的客户端脚本 ('chat_with_gemini_mcp.py' 或 'simple_chat.py'),需要设置 'GOOGLE_API_KEY' 环境变量。
  3. 启动LLM客户端: 打开另一个终端窗口,进入项目目录,运行客户端脚本:
    python chat_with_gemini_mcp.py
    # 或
    python simple_chat.py
  4. 与LLM交互: 在客户端终端中与LLM聊天。当您提出文件相关的请求(如“列出文件”、“读取文件X”、“将Y写入文件Z”)时,LLM会识别这些意图并调用MCP服务器提供的相应工具来完成操作。服务器会在其终端显示工具执行情况,并将结果返回给LLM,LLM再将结果转述给您。

重要提示: 务必谨慎选择沙箱目录,确保其中不包含敏感或不应被LLM访问/修改的文件。

信息

分类

AI与计算