使用说明

项目简介

本项目是一个基于 Azure Functions 实现的 MCP 服务器,旨在为 L2C CTFs (Learn to Cloud Capture the Flags) 实验环境提供必要的上下文服务和工具功能。它允许 CTF 实验环境通过标准的 MCP 协议与服务器通信,调用预定义的工具,例如验证 Flag。

主要功能点

  • 工具注册与执行: 通过 Azure Functions 注册和暴露工具,例如 'hello_ctf_user' 用于连接测试,'verify_flag' 用于验证用户提交的 Flag 是否正确。
  • 基于 HTTP 的 MCP 协议支持: 使用 Azure Functions 的 HTTP 触发器处理 MCP 客户端的请求,并返回符合 MCP 协议的响应。
  • 简单的资源管理: 虽然当前版本未显式展示资源管理功能,但框架具备扩展资源管理能力的基础。
  • 客户端示例: 提供了一个 Python 客户端库 ('client/l2c_ctf_client.py'),演示如何连接到 MCP 服务器并调用工具。

安装步骤

  1. 克隆代码: 从 GitHub 仓库克隆代码到本地。
    git clone https://github.com/madebygps/l2c-ctfs-mcp.git
    cd l2c-ctfs-mcp
  2. 安装 UV: 确保已安装 UV 包管理器 (如果未安装,请参考 UV 官方文档进行安装)。
  3. 创建并激活虚拟环境: 使用 UV 创建并激活 Python 虚拟环境。
    uv venv
    source .venv/bin/activate  # 或 .venv\Scripts\activate for Windows
  4. 安装依赖: 使用 UV 安装项目依赖。
    uv sync
  5. 部署 Azure Function:
    • 你需要将 'src/function_app.py' 部署到 Azure Functions。这通常涉及创建 Azure Function App 服务,并使用 Azure Functions Core Tools 或 Azure CLI 将代码部署上去。
    • 注意: 'src/function_app.py' 中定义的 Azure Functions 默认需要 Function 级别的身份验证。你需要在 Azure Function App 的 "Function keys" 中获取或创建一个 Function Key,并在客户端配置中使用。

服务器配置

MCP 客户端需要配置以下信息才能连接到此 MCP 服务器。配置信息通常以 JSON 格式提供给客户端:

{
  "server name": "l2c-ctfs-mcp-server",
  "command": "<Azure Function URL>",  //  替换为你的 Azure Function App 的 URL,通常可以在 Azure 门户中找到
  "args": [
    "-k", "<Function Key>"         // 如果你的 Azure Function App 启用了 Function 级别身份验证,请替换为你的 Function Key,否则可以省略此参数
  ]
}

参数说明:

  • '"server name"': 服务器的名称,可以自定义,用于客户端识别。
  • '"command"': 必须替换为 你部署的 Azure Function App 的 URL。这是 MCP 客户端连接服务器的入口点。
  • '"args"': 参数列表,用于传递额外的配置信息。
    • '"-k"': 表示使用 Function Key 进行身份验证。
    • '"<Function Key>"': 如果需要身份验证,必须替换为 你在 Azure Function App 中获取的 Function Key。如果你的 Function App 设置为允许匿名访问,则可以省略 '"-k"' 和 Function Key。

基本使用方法

  1. 部署服务器: 按照 "安装步骤" 中的说明将 'src/function_app.py' 部署到 Azure Functions。
  2. 配置客户端: 在 MCP 客户端中,配置服务器连接信息,包括 Azure Function URL 和可能的 Function Key。例如,使用提供的 'client/l2c_ctf_client.py' 示例客户端,你需要设置环境变量 'FUNCTION_URL' 和 'FUNCTION_KEY' (如果需要)。
  3. 运行客户端: 运行客户端代码 ('client/l2c_ctf_client.py'),客户端将连接到 MCP 服务器并列出可用的工具。
    cd client
    python l2c_ctf_client.py
    确保在运行客户端之前,已经设置了 'FUNCTION_URL' 和 'FUNCTION_KEY' 环境变量 (例如,通过 '.env' 文件或直接在终端中设置)。

通过以上步骤,你就可以搭建并使用这个基于 Azure Functions 的 L2C CTFs MCP 服务器,为你的 CTF 实验环境提供基础的上下文服务和工具调用能力。

信息

分类

开发者工具