使用说明
项目简介
本项目 '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 桥接出来,方便第三方平台调用。
主要功能点
- 列出工具 (List Tools): 查询指定 MCP 服务器上注册的所有工具及其描述、输入参数定义。
- 调用工具 (Call Tool): 调用指定 MCP 服务器上的具体工具,并传递参数,获取工具执行结果。
- 列出服务器 (List Servers): 列出所有在 'mcp_server.json' 中配置的 MCP 服务器信息。
- 列出文件 (List Files): 列出 'static' 目录下托管的静态文件列表。
- 获取文件下载链接 (Get Download Link): 获取 'static' 目录下指定文件的下载链接。
安装步骤
- 安装 'uv' 工具: 按照 官方文档 指引安装 'uv' 包管理器。
- 创建项目目录并初始化:
uv init mcp-flask-proxy # 自定义项目名称 cd mcp-flask-proxy - 创建并激活虚拟环境:
uv venv .venv\Scripts\activate # Windows # source .venv/bin/activate # Linux/macOS - 安装依赖: 将 'README.md' 中 2.4 安装依赖 步骤中的 'pyproject.toml' 文件内容复制到你项目根目录下的 'pyproject.toml' 文件中 (如果 'README.md' 中没有 'pyproject.toml' 文件内容,则需要自行查找或根据项目依赖手动创建)。然后运行:
uv install - 复制配置文件: 将 'README.md' 中 3.1 服务器配置 步骤中的 'mcp_server.json' 示例内容复制到项目根目录下,并保存为 'mcp_server.json' 文件。
- 配置环境变量:
- 复制 '.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 管道)。
基本使用方法
-
启动 Flask 代理服务器: 在项目根目录下运行:
python server.pyFlask 服务器默认会在 'http://localhost:5000' 启动。
-
使用 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