ADK 的 Postman MCP 工具¶
Supported in ADKPythonTypeScriptGo
Postman MCP 服务器 将你的 ADK 智能体连接到 Postman 生态系统。此集成赋予你的智能体访问工作区、管理集合和环境、评估 API 以及通过自然语言交互自动化工作流的能力。
使用场景¶
-
API 测试:使用 Postman 集合持续测试你的 API。
-
集合管理:无需离开编辑器即可创建和标记集合、更新文档、添加评论或跨多个集合执行操作。
-
工作区和环境管理:创建工作区和环境,并管理你的环境变量。
-
客户端代码生成:生成符合最佳实践和项目约定的生产级客户端代码以使用 API。
前置条件¶
- 创建一个 Postman 账户
- 生成一个 Postman 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 (远程)。