Skip to content

ADK 的 Postman MCP 工具

Supported in ADKPythonTypeScriptGo

Postman MCP 服务器 将你的 ADK 智能体连接到 Postman 生态系统。此集成赋予你的智能体访问工作区、管理集合和环境、评估 API 以及通过自然语言交互自动化工作流的能力。

使用场景

  • API 测试:使用 Postman 集合持续测试你的 API。

  • 集合管理:无需离开编辑器即可创建和标记集合、更新文档、添加评论或跨多个集合执行操作。

  • 工作区和环境管理:创建工作区和环境,并管理你的环境变量。

  • 客户端代码生成:生成符合最佳实践和项目约定的生产级客户端代码以使用 API。

前置条件

与智能体一起使用

from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters

POSTMAN_API_KEY = "YOUR_POSTMAN_API_KEY"

root_agent = Agent(
    model="gemini-flash-latest",
    name="postman_agent",
    instruction="帮助用户管理其 Postman 工作区和集合",
    tools=[
        McpToolset(
            connection_params=StdioConnectionParams(
                server_params=StdioServerParameters(
                    command="npx",
                    args=[
                        "-y",
                        "@postman/postman-mcp-server",
                        # "--full",  # 使用全部 100+ 个工具
                        # "--code",  # 使用代码生成工具
                        # "--region", "eu",  # 使用欧盟区域
                    ],
                    env={
                        "POSTMAN_API_KEY": POSTMAN_API_KEY,
                    },
                ),
                timeout=30,
            ),
        )
    ],
)
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams

POSTMAN_API_KEY = "YOUR_POSTMAN_API_KEY"

root_agent = Agent(
    model="gemini-flash-latest",
    name="postman_agent",
    instruction="帮助用户管理其 Postman 工作区和集合",
    tools=[
        McpToolset(
            connection_params=StreamableHTTPConnectionParams(
                url="https://mcp.postman.com/mcp",
                # (可选) 使用 "/minimal" 仅限基本工具
                # (可选) 使用 "/code" 仅限代码生成工具
                # (可选) 使用 "https://mcp.eu.postman.com" 切换到欧盟区域
                headers={
                    "Authorization": f"Bearer {POSTMAN_API_KEY}",
                },
            ),
        )
    ],
)
import { LlmAgent, MCPToolset } from "@google/adk";

const POSTMAN_API_KEY = "YOUR_POSTMAN_API_KEY";

const rootAgent = new LlmAgent({
    model: "gemini-flash-latest",
    name: "postman_agent",
    instruction: "帮助用户管理其 Postman 工作区和集合",
    tools: [
        new MCPToolset({
            type: "StdioConnectionParams",
            serverParams: {
                command: "npx",
                args: [
                    "-y",
                    "@postman/postman-mcp-server",
                    // "--full",  // 使用全部 100+ 个工具
                    // "--code",  // 使用代码生成工具
                    // "--region", "eu",  // 使用欧盟区域
                ],
                env: {
                    POSTMAN_API_KEY: POSTMAN_API_KEY,
                },
            },
        }),
    ],
});

export { rootAgent };
import { LlmAgent, MCPToolset } from "@google/adk";

const POSTMAN_API_KEY = "YOUR_POSTMAN_API_KEY";

const rootAgent = new LlmAgent({
    model: "gemini-flash-latest",
    name: "postman_agent",
    instruction: "帮助用户管理其 Postman 工作区和集合",
    tools: [
        new MCPToolset({
            type: "StreamableHTTPConnectionParams",
            url: "https://mcp.postman.com/mcp",
            // (可选) 使用 "/minimal" 仅限基本工具
            // (可选) 使用 "/code" 仅限代码生成工具
            // (可选) 使用 "https://mcp.eu.postman.com" 切换到欧盟区域
            transportOptions: {
                requestInit: {
                    headers: {
                        Authorization: `Bearer ${POSTMAN_API_KEY}`,
                    },
                },
            },
        }),
    ],
});

export { rootAgent };
package main

import (
    "context"
    "log"
    "os"
    "os/exec"

    "github.com/modelcontextprotocol/go-sdk/mcp"
    "google.golang.org/genai"

    "google.golang.org/adk/v2/agent"
    "google.golang.org/adk/v2/agent/llmagent"
    "google.golang.org/adk/v2/cmd/launcher"
    "google.golang.org/adk/v2/cmd/launcher/full"
    "google.golang.org/adk/v2/model/gemini"
    "google.golang.org/adk/v2/tool"
    "google.golang.org/adk/v2/tool/mcptoolset"
)

const postmanAPIKey = "YOUR_POSTMAN_API_KEY"

func main() {
    ctx := context.Background()

    model, err := gemini.NewModel(ctx, "gemini-flash-latest", &genai.ClientConfig{
        APIKey: os.Getenv("GOOGLE_API_KEY"),
    })
    if err != nil {
        log.Fatalf("Failed to create the model: %v", err)
    }

    args := []string{"-y", "@postman/postman-mcp-server"}
    // args = append(args, "--full")          // 使用全部 100+ 个工具
    // args = append(args, "--code")          // 使用代码生成工具
    // args = append(args, "--region", "eu")  // 使用欧盟区域

    server := exec.CommandContext(ctx, "npx", args...)
    // 仅转发 npx 所需的环境变量,加上 Postman 密钥。父进程环境
    // 可能持有不相关的密钥,例如上面读取的 GOOGLE_API_KEY。
    server.Env = []string{"POSTMAN_API_KEY=" + postmanAPIKey}
    for _, k := range []string{
        "PATH", "HOME", // POSIX
        "APPDATA", "LOCALAPPDATA", "TEMP", "USERPROFILE", // Windows
    } {
        if v, ok := os.LookupEnv(k); ok {
            server.Env = append(server.Env, k+"="+v)
        }
    }

    postman, err := mcptoolset.New(mcptoolset.Config{
        Transport: &mcp.CommandTransport{Command: server},
    })
    if err != nil {
        log.Fatalf("Failed to create the Postman tool set: %v", err)
    }

    rootAgent, err := llmagent.New(llmagent.Config{
        Model:       model,
        Name:        "postman_agent",
        Instruction: "Help users manage their Postman workspaces and collections",
        Toolsets:    []tool.Toolset{postman},
    })
    if err != nil {
        log.Fatalf("Failed to create the agent: %v", err)
    }

    l := full.NewLauncher()
    cfg := &launcher.Config{AgentLoader: agent.NewSingleLoader(rootAgent)}
    if err := l.Execute(ctx, cfg, os.Args[1:]); err != nil {
        log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
    }
}
package main

import (
    "context"
    "log"
    "os"

    "google.golang.org/genai"

    "google.golang.org/adk/v2/agent"
    "google.golang.org/adk/v2/agent/llmagent"
    "google.golang.org/adk/v2/auth"
    "google.golang.org/adk/v2/cmd/launcher"
    "google.golang.org/adk/v2/cmd/launcher/full"
    "google.golang.org/adk/v2/model/gemini"
    "google.golang.org/adk/v2/tool"
    "google.golang.org/adk/v2/tool/mcptoolset"
)

const postmanAPIKey = "YOUR_POSTMAN_API_KEY"

func main() {
    ctx := context.Background()

    model, err := gemini.NewModel(ctx, "gemini-flash-latest", &genai.ClientConfig{
        APIKey: os.Getenv("GOOGLE_API_KEY"),
    })
    if err != nil {
        log.Fatalf("Failed to create the model: %v", err)
    }

    postman, err := mcptoolset.New(mcptoolset.Config{
        // (可选) 使用 "/minimal" 仅限基本工具
        // (可选) 使用 "/code" 仅限代码生成工具
        // (可选) 使用 "https://mcp.eu.postman.com/mcp" 切换到欧盟区域
        Endpoint: "https://mcp.postman.com/mcp",
        // Auth 在每个请求上设置 "Authorization: Bearer <key>"。
        Auth: auth.StaticToken(postmanAPIKey),
    })
    if err != nil {
        log.Fatalf("Failed to create the Postman tool set: %v", err)
    }

    rootAgent, err := llmagent.New(llmagent.Config{
        Model:       model,
        Name:        "postman_agent",
        Instruction: "Help users manage their Postman workspaces and collections",
        Toolsets:    []tool.Toolset{postman},
    })
    if err != nil {
        log.Fatalf("Failed to create the agent: %v", err)
    }

    l := full.NewLauncher()
    cfg := &launcher.Config{AgentLoader: agent.NewSingleLoader(rootAgent)}
    if err := l.Execute(ctx, cfg, os.Args[1:]); err != nil {
        log.Fatalf("Run failed: %v\n\n%s", err, l.CommandLineSyntax())
    }
}

配置

Postman 提供三种工具配置:

  • Minimal (默认):用于基本 Postman 操作的基本工具。最适合对集合、工作区或环境进行简单的修改。
  • Full:所有可用的 Postman API 工具(100+ 个工具)。非常适合高级协作和企业功能。
  • Code:用于搜索 API 定义和生成客户端代码的工具。非常适合需要使用 API 的开发人员。

要选择配置:

  • 本地服务器:将 --full 或 --code 添加到 args 列表中。
  • 远程服务器:将 URL 路径更改为 /minimal、/mcp (full) 或 /code。

对于欧盟区域,使用 --region eu (本地) 或 https://mcp.eu.postman.com (远程)。

额外资源