项目简介

AgentGateway是一个专为Agentic AI优化的开源数据平面,旨在实现AI代理之间以及AI代理与工具之间的无缝连接。它提供即插即用的安全性、可观测性和治理功能,支持包括Model Context Protocol (MCP) 和Agent2Agent (A2A) 在内的领先互操作协议。AgentGateway能够将现有的Legacy API(如OpenAPI)转换为MCP资源,极大地扩展了AI代理可用的工具生态。

主要功能点

  • 多协议支持: 原生支持Model Context Protocol (MCP) 和Agent2Agent (A2A) 等代理互操作协议。
  • 高性能: 基于Rust语言开发,具备处理高并发和大规模请求的能力。
  • 安全与治理: 内置强大的MCP/A2A权限管理系统(RBAC),为代理间通信和代理与工具通信提供安全保障和策略控制。
  • API转换: 能够将现有非MCP协议的API(如OpenAPI)自动转换并暴露为MCP资源,方便LLM客户端调用。
  • 动态配置: 支持通过xDS进行动态配置更新,无需停机。
  • 灵活部署: 可以在从单机到大型多租户部署的各种环境中运行,与任何代理框架兼容。
  • LLM上下文服务: 提供资源托管与数据访问、工具注册与执行、Prompt模板定义与渲染等核心MCP服务器功能。

安装步骤

AgentGateway提供了多种安装和部署方式。最常见的包括使用预编译二进制文件或从源代码构建。

  1. 下载最新版本: 访问AgentGateway的GitHub Release页面(https://github.com/agentgateway/agentgateway/releases),下载适用于您操作系统的最新稳定版二进制文件。

  2. 解压并运行: 将下载的压缩包解压,例如:

    tar -xzf agentgateway-<version>-<os>-<arch>.tar.gz
    cd agentgateway-<version>-<os>-<arch>

    然后可以直接运行:

    ./agentgateway

    或者使用Docker运行(如果提供了官方镜像):

    docker run -p 15000:15000 agentgateway/agentgateway:latest
  3. 从源代码构建 (高级用户): 需要安装Rust环境。

    git clone https://github.com/agentgateway/agentgateway.git
    cd agentgateway
    cargo build --release
    ./target/release/agentgateway

服务器配置

AgentGateway支持YAML或JSON格式的配置文件。MCP客户端需要配置与AgentGateway建立连接的服务器启动命令和参数。

以下是一个示例MCP服务器配置(JSON格式),您可以在MCP客户端中配置这些信息以连接AgentGateway:

{
  "server_name": "AgentGatewayInstance", // 您为AgentGateway实例定义的可选名称
  "command": "agentgateway",             // 启动AgentGateway服务器的执行文件名称
  "args": [                              // 传递给AgentGateway服务器的参数
    "-c", "config.yaml"                  // 使用 -c 参数指定配置文件路径
  ],
  "config_file_content": {               // 这是一个示例的config.yaml文件内容(YAML格式),实际配置应根据您的需求调整
    "config": {
      "adminAddr": "127.0.0.1:15000",                 // 管理UI的监听地址
      "statsAddr": "0.0.0.0:15020",                   // 统计/指标服务器的监听地址
      "readinessAddr": "0.0.0.0:15021",               // 健康检查服务器的监听地址
      "enableIpv6": true,                             // 是否启用IPv6
      "xdsAddress": "your-xds-server-address",        // 可选:XDS服务器地址
      "namespace": "default",                         // AgentGateway运行的命名空间
      "gateway": "my-gateway",                        // 网关名称
      "authToken": "/var/run/secrets/tokens/istio-token" // 认证令牌路径
    },
    "binds": [
      {
        "port": 8080, // AgentGateway监听的端口
        "listeners": [
          {
            "name": "default-listener",
            "protocol": "HTTP",
            "routes": [
              {
                "name": "default-route",
                "backends": [
                  {
                    // 示例:配置一个MCP后端
                    "name": "my-mcp-backend",
                    "mcp": {
                      "statefulMode": "Stateful", // 或 "Stateless",指示会话模式
                      "targets": [
                        {
                          "name": "upstream-mcp-service",
                          "mcp": {
                            "backend": {
                              "service": "default/mcp-service:80", // 上游MCP服务的引用
                              "port": 80
                            },
                            "path": "/mcp" // MCP端点路径
                          },
                          "protocol": "STREAMABLE_HTTP" // 或 "SSE",MCP通信协议
                        }
                      ]
                    }
                  },
                  {
                    // 示例:配置一个AI后端(例如OpenAI兼容API)
                    "name": "my-ai-backend",
                    "ai": {
                      "groups": [
                        {
                          "providers": [
                            {
                              "name": "openai-provider",
                              "provider": {
                                "openai": { "model": "gpt-3.5-turbo" } // AI提供商及其模型
                              },
                              "tokenize": true // 是否启用令牌化处理
                            }
                          ]
                        }
                      ]
                    }
                  },
                  {
                    // 示例:配置一个OpenAPI后端(将其转换为MCP工具)
                    "name": "my-openapi-backend",
                    "openapi": {
                      "backend": {
                        "host": "my-legacy-api.example.com:8081" // 传统API的地址
                      },
                      "schema": {
                        "file": "/path/to/my/openapi.yaml" // OpenAPI规范文件路径
                      }
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

基本使用方法

  1. 启动AgentGateway服务器: 根据安装步骤运行AgentGateway。确保您的配置文件(例如'config.yaml')已正确配置并指定了监听端口和后端服务。

  2. 配置MCP客户端: 在您的MCP客户端应用中,使用上述"服务器配置"部分提供的信息('command' 和 'args' 指向AgentGateway的可执行文件和配置文件)。例如,如果AgentGateway监听在 'http://localhost:8080/mcp',您的MCP客户端将通过此URI发送JSON-RPC请求。

  3. LLM客户端交互:

    • 获取工具列表: LLM客户端可以发送'tasks/listTools'请求,AgentGateway将聚合所有后端MCP服务器或通过OpenAPI转换的工具列表。
    • 调用工具: LLM客户端可以发送'tasks/callTool'请求,AgentGateway会根据工具名称路由到正确的后端服务并执行。
    • 读取资源: LLM客户端可以发送'resources/read'请求,访问AgentGateway暴露的MCP资源。
    • Prompt模板: LLM客户端可以发送'prompts/get'或'prompts/list'请求,与AgentGateway托管的Prompt模板进行交互。

AgentGateway将作为您AI应用与各种AI工具和上下文服务之间的中央枢纽,提供统一的接入点和管理能力。

信息

分类

AI与计算