使用说明

项目简介

本项目 'MCP Server Flask 封装' (mcp-client) 并非一个独立的 MCP 服务器,而是一个基于 Flask 框架构建的 MCP 客户端代理。它的作用是将本地已有的、或即将部署的多个 MCP 服务器(例如示例中的 'weather' 和 'filesystem' 服务)统一管理起来,并通过 HTTP API 暴露出去。这样做的目的是为了方便像 Coze、Dify、FastGPT 这样的平台能够通过标准的 HTTP 接口,安全、便捷地访问和调用本地的 MCP 服务资源和工具。

核心特点:

  • 统一接入点: 通过 Flask 提供统一的 HTTP API 入口,简化客户端与多个 MCP Server 交互的复杂度。
  • 灵活配置: 通过 'mcp_server.json' 配置文件管理和配置需要代理的本地 MCP 服务器,支持自定义启动命令和参数。
  • 安全控制: 通过 'SECRET_KEY' 环境变量进行简单的 API 访问密钥验证。
  • 文件服务: 提供静态文件下载功能,方便客户端获取服务器端资源。
  • 易于集成: 基于 Flask 框架,方便部署和集成到现有的 Web 应用环境中。

注意: 本项目本身 不是 一个从零开始实现的 MCP 服务器。它依赖于你已经有或将要部署的、符合 MCP 协议的后端服务(例如 'weather.py', 'main.py')。本项目的作用是作为一个中间层,将这些服务通过 HTTP API 桥接出来,方便第三方平台调用。

主要功能点

  1. 列出工具 (List Tools): 查询指定 MCP 服务器上注册的所有工具及其描述、输入参数定义。
  2. 调用工具 (Call Tool): 调用指定 MCP 服务器上的具体工具,并传递参数,获取工具执行结果。
  3. 列出服务器 (List Servers): 列出所有在 'mcp_server.json' 中配置的 MCP 服务器信息。
  4. 列出文件 (List Files): 列出 'static' 目录下托管的静态文件列表。
  5. 获取文件下载链接 (Get Download Link): 获取 'static' 目录下指定文件的下载链接。

安装步骤

  1. 安装 'uv' 工具: 按照 官方文档 指引安装 'uv' 包管理器。
  2. 创建项目目录并初始化:
    uv init mcp-flask-proxy  #  自定义项目名称
    cd mcp-flask-proxy
  3. 创建并激活虚拟环境:
    uv venv
    .venv\Scripts\activate  # Windows
    # source .venv/bin/activate  # Linux/macOS
  4. 安装依赖: 将 'README.md' 中 2.4 安装依赖 步骤中的 'pyproject.toml' 文件内容复制到你项目根目录下的 'pyproject.toml' 文件中 (如果 'README.md' 中没有 'pyproject.toml' 文件内容,则需要自行查找或根据项目依赖手动创建)。然后运行:
    uv install
  5. 复制配置文件: 将 'README.md' 中 3.1 服务器配置 步骤中的 'mcp_server.json' 示例内容复制到项目根目录下,并保存为 'mcp_server.json' 文件。
  6. 配置环境变量:
    • 复制 '.env.example' 文件内容到项目根目录下,并重命名为 '.env' 文件(如果仓库中没有 '.env.example',则手动创建 '.env' 文件)。
    • 修改 '.env' 文件,设置 'SECRET_KEY' 环境变量,例如 'SECRET_KEY = your_secret_key'。

服务器配置 ('mcp_server.json')

'mcp_server.json' 文件用于配置需要代理的本地 MCP 服务器。

{
    "mcpServers": {
        "weather": {
            "desc": "获取天气信息以及相关工具",  //  服务描述,可自定义
            "command": "uv",                 //  启动 MCP Server 的命令,这里假设使用 uv 运行 Python 脚本
            "args": [                       //  启动命令的参数列表
                "--directory",              //  指定工作目录
                "D:\\project_python\\MCP\\weather", //  MCP Server 代码所在的目录 (请替换为实际路径)
                "run",                      //  uv run 命令
                "weather.py"                //  MCP Server 的启动脚本 (请替换为实际脚本名)
            ]
        },
        "filesystem": {
            "desc": "文件管理服务",           //  服务描述,可自定义
            "command": "uv",
            "args": [
                "--directory",
                "D:\\project_python\\MCP\\mcp - server\\filesystem", // MCP Server 代码目录 (请替换为实际路径)
                "run",
                "main.py"                    //  MCP Server 启动脚本 (请替换为实际脚本名)
            ]
        }
        // 可以继续添加更多 MCP Server 的配置
    }
}

配置说明:

  • 'mcpServers': JSON 对象,包含所有要代理的 MCP 服务器的配置。
  • 'server_name' (例如 '"weather"', '"filesystem"'): 每个 MCP 服务器的名称,用于在 API 请求中指定要访问的服务。
  • 'desc': 该服务的描述信息,用于展示给用户。
  • 'command': 启动 MCP 服务器的命令。 通常是 Python 解释器 ('python') 或包管理器运行器 ('uv run')。
  • 'args': 启动命令的参数列表。 关键参数需要根据你的 MCP Server 实际情况进行配置,例如:
    • '--directory': 指定 MCP Server 代码所在的目录。务必修改为你的 MCP Server 代码的实际路径。
    • 'run': 'uv run' 或 'python -m' 等命令,用于运行 Python 脚本或模块。
    • 'server_script.py' 或 'main.py': MCP Server 的启动脚本文件名或模块名。务必修改为你的 MCP Server 的实际启动脚本。

重要提示: 'command' 和 'args' 配置直接关系到如何启动你的本地 MCP 服务器。你需要确保配置的命令和参数能够正确启动你的 MCP 服务器,并且你的 MCP 服务器能够监听来自 'mcp-client' (本项目) 的连接请求 (通常是通过 Stdio 管道)。

基本使用方法

  1. 启动 Flask 代理服务器: 在项目根目录下运行:

    python server.py

    Flask 服务器默认会在 'http://localhost:5000' 启动。

  2. 使用 API 接口: 使用 'curl'、Postman 或其他 HTTP 客户端工具,根据 'README.md' 中 五、API 使用 部分的说明,调用相应的 API 接口。

    常用 API 示例 (假设 'SECRET_KEY' 设置为 'gduifgashjb8t3961jhgsdghf'):

    • 列出 'weather' 服务器的工具:

      curl -X POST -H "Content-Type: application/json" -d '{"server_name": "weather", "secret_key": "gduifgashjb8t3961jhgsdghf"}' http://localhost:5000/list_tool
    • 调用 'weather' 服务器的 'get_weather' 工具,参数为 'city=Beijing':

      curl -X POST -H "Content-Type: application/json" -d '{"server_name": "weather", "tool_name": "get_weather", "args": {"city": "Beijing"}, "secret_key": "gduifgashjb8t3961jhgsdghf"}' http://localhost:5000/call_tool
    • 列出所有配置的 MCP 服务器:

      curl -X POST -H "Content-Type: application/json" -d '{"secret_key": "gduifgashjb8t3961jhgsdghf"}' http://localhost:5000/list_server
    • 列出 'static' 目录下的文件:

      curl -X POST -H "Content-Type: application/json" -d '{"secret_key": "gduifgashjb8t3961jhgsdghf"}' http://localhost:5000/list_files
    • 获取 'static/example.txt' 文件的下载链接:

      curl http://localhost:5000/get_download_link/gduifgashjb8t3961jhgsdghf/example.txt

重要提示:

  • 替换路径: 务必根据你的实际 MCP Server 代码路径,修改 'mcp_server.json' 中的 'args' 配置。
  • 安全: 'SECRET_KEY' 环境变量用于简单的 API 密钥验证,请妥善保管,并根据实际安全需求考虑更完善的认证机制。
  • MCP Server 实现: 本项目依赖于你自行实现的 MCP Server (例如 'weather.py', 'main.py')。你需要确保这些 MCP Server 能够正确运行,并提供符合 MCP 协议的服务。

信息

分类

网页与API