项目简介

WAGS(Web Agent Gateway System)是一个强大的Python工具包,专注于提升大型语言模型(LLM)与外部系统交互的效率和安全性。它允许开发者在不修改现有MCP服务器代码的情况下,为其添加高级功能,例如:资源访问控制、智能参数引导(elicitation)和自动化的任务追踪。WAGS通过部署为代理服务器,将LLM的请求转发到实际的MCP服务器,并在过程中应用各种中间件逻辑。

主要功能点

  • MCP代理服务器: WAGS可以作为代理服务器运行,将客户端请求转发至一个或多个上游MCP服务器,同时在其间插入自定义逻辑。
  • 可插拔的中间件: 提供灵活的中间件框架,允许开发者自定义请求处理流程。
  • 访问控制(RootsMiddleware): 通过定义“根”URI规则,细粒度地控制LLM对外部资源的访问权限,防止未授权的操作。
  • 参数引导(ElicitationMiddleware): 当LLM调用工具时,如果缺少关键参数或需要用户确认,中间件可以与用户进行交互以获取或修改参数,从而提高工具调用的准确性。
  • 任务追踪(TodoServer): 内置一个任务管理MCP服务器,提供'TodoWrite'和'TodoRead'工具,帮助LLM规划、执行和追踪多步骤任务,提高多轮对话的效率。
  • 服务器脚手架: 提供CLI命令快速生成新的MCP服务器项目结构,包括中间件处理程序文件和主启动文件。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/chughtapan/wags.git
    cd wags
  2. 创建并激活虚拟环境:
    uv venv # 推荐使用uv,也可以用python -m venv .venv
    source .venv/bin/activate
  3. 安装WAGS及其开发依赖:
    uv pip install -e ".[dev]" # 推荐使用uv,也可以用pip install -e ".[dev]"
  4. 验证安装: 运行 'wags version' 命令,如果显示版本信息,则安装成功。

MCP服务器配置

MCP客户端需要配置WAGS代理服务器的启动命令才能与之通信。以下是一个典型的JSON格式配置示例,你需要将其添加到你的MCP客户端的配置中:

{
  "servers": {
    "your_wags_proxy_name": {
      "command": "python",
      "args": ["path/to/your/main.py"],
      "env": {
        "YOUR_ENV_VAR": "your_value"
      }
    }
  }
}
  • 'your_wags_proxy_name': 你为WAGS代理服务器指定的名称,例如 'github-proxy'。
  • 'command': 启动WAGS代理服务器的Python解释器路径,通常是 'python' 或 'python3'。
  • 'args': 启动脚本的路径,例如 'path/to/your/main.py'。这个 'main.py' 文件是你通过WAGS 'quickstart' 命令生成的代理服务器启动文件。
  • 'env': (可选)WAGS代理服务器运行所需的环境变量。例如,如果代理服务器需要连接到GitHub,可能需要 'GITHUB_TOKEN'。

基本使用方法

  1. 准备MCP服务器配置并生成WAGS代理文件: 如果你有一个现有的MCP服务器(例如,一个GitHub MCP服务器),首先创建一个 'config.json' 文件来描述它。这个 'config.json' 是给 'wags' 工具用的,不是给MCP客户端直接用的:
    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_TOKEN": "${GITHUB_TOKEN}"
          }
        }
      }
    }
    然后使用 'wags quickstart' 命令,根据上述 'config.json' 生成代理服务器的处理器文件 ('handlers.py') 和主启动文件 ('main.py'):
    wags quickstart config.json
  2. 定制中间件: 编辑生成的 'handlers.py' 文件,为你的工具方法添加 '@requires_root'(用于访问控制)或 'Annotated[..., RequiresElicitation(...)]'(用于参数引导)装饰器。 编辑生成的 'main.py' 文件,取消注释并配置你想要使用的中间件,例如:
    # mcp.add_middleware(RootsMiddleware(handlers=handlers))
    # mcp.add_middleware(ElicitationMiddleware(handlers=handlers))
  3. 运行WAGS代理服务器:
    python main.py
    现在,你的WAGS代理服务器已在运行,它可以接受LLM客户端的连接,并将请求通过配置的中间件转发到原始的MCP服务器。

信息

分类

开发者工具