Postman MCP Server
A production-ready Model Context Protocol (MCP) server that provides 41 Postman API tools for managing collections, environments, mocks, API specifications, and workspaces. Supports Streamable HTTP, SSE, and stdio transports.
Features
- ๐ฆ 41 Postman API Tools - Complete Postman API automation
- ๐ Multiple Transports - Streamable HTTP, SSE, and stdio support
- ๐ Production Ready - Docker support with proper error handling
- ๐ Collections - Create, read, update, duplicate collections
- ๐ Environments - Manage environment variables
- ๐ญ Mocks - Create and manage mock servers
- ๐ API Specs - OpenAPI, AsyncAPI, protobuf, GraphQL support
- ๐ข Workspaces - Manage team and personal workspaces
- ๐ Integration - Sync specs with collections
Available Tools (41)
Collections (7 tools)
createCollection- Create a collection (v2.1.0 format)getCollection- Get collection info (map/minimal/full)getCollections- List workspace collectionsputCollection- Replace collection contentsduplicateCollection- Duplicate to another workspacegetDuplicateCollectionTaskStatus- Check duplication status
Requests & Responses (3 tools)
createCollectionRequest- Create request in collectionupdateCollectionRequest- Update existing requestcreateCollectionResponse- Create request response
Environments (4 tools)
createEnvironment- Create environmentgetEnvironment- Get environment detailsgetEnvironments- List all environmentsputEnvironment- Replace environment contents
Mock Servers (5 tools)
createMock- Create mock servergetMock- Get mock server detailsgetMocks- List all mock serversupdateMock- Update mock serverpublishMock- Publish mock server (set public)
API Specifications (9 tools)
createSpec- Create API spec (OpenAPI/AsyncAPI/protobuf/GraphQL)getSpec- Get spec detailsgetAllSpecs- List workspace specsupdateSpecProperties- Update spec propertiesgetSpecDefinition- Get complete spec definitioncreateSpecFile- Create spec filegetSpecFiles- List all spec filesgetSpecFile- Get file contentsupdateSpecFile- Update spec file
Spec-Collection Integration (4 tools)
generateCollection- Generate collection from specgetSpecCollections- List spec's generated collectionsgenerateSpecFromCollection- Generate spec from collectiongetGeneratedCollectionSpecs- Get collection's generated specssyncCollectionWithSpec- Sync collection with specsyncSpecWithCollection- Sync spec with collection
Workspaces (4 tools)
createWorkspace- Create workspacegetWorkspace- Get workspace detailsgetWorkspaces- List all workspacesupdateWorkspace- Update workspace properties
Other (4 tools)
getAuthenticatedUser- Get current user infogetTaggedEntities- Get entities by tag (Enterprise)runCollection- Run collection with NewmangetEnabledTools- List enabled tools
Quick Start
Prerequisites
Required:
- Postman API Key - Get from https://postman.com/settings/me/api-keys
- Python 3.10+
Installation
cd postman-tool
# Install in editable mode
pip install -e .
# Verify installation
postman-mcp --help
Environment Variables
Required:
export POSTMAN_API_KEY="your_postman_api_key"
Windows PowerShell:
$env:POSTMAN_API_KEY = "your_postman_api_key"
Run Server
Streamable HTTP (Recommended):
postman-mcp --mode streamable-http --port 8010
SSE:
postman-mcp --mode sse --port 8010
Stdio (for MCP clients):
postman-mcp --mode stdio
Docker
# Build image
docker build -t postman-mcp .
# Run container
docker run -e POSTMAN_API_KEY=your_key -p 8010:8010 postman-mcp
MCP Client Configuration
Streamable HTTP
{
"mcpServers": {
"postman": {
"type": "streamable-http",
"url": "http://localhost:8010/mcp"
}
}
}
Stdio
{
"mcpServers": {
"postman": {
"command": "postman-mcp",
"args": ["--mode", "stdio"],
"env": {
"POSTMAN_API_KEY": "your_postman_api_key"
}
}
}
}
Usage Examples
Get Current User
await call_tool("getAuthenticatedUser", {})
List Workspaces
# List my personal workspaces
user = await call_tool("getAuthenticatedUser", {})
workspaces = await call_tool("getWorkspaces", {
"createdBy": user["user"]["id"],
"type": "personal",
"limit": 100
})
Create Collection
await call_tool("createCollection", {
"workspace": "workspace-id",
"collection": {
"info": {
"name": "My API Collection",
"description": "Collection for testing",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": []
}
})
Get Collection
# Get lightweight map (default)
await call_tool("getCollection", {
"collectionId": "12345-abc123def456"
})
# Get full payload
await call_tool("getCollection", {
"collectionId": "12345-abc123def456",
"model": "full"
})
Create Mock Server
await call_tool("createMock", {
"workspace": "workspace-id",
"mock": {
"name": "My Mock Server",
"collection": "12345-abc123def456", # Collection UID
"environment": "env-id",
"private": false
}
})
Create API Specification
await call_tool("createSpec", {
"workspaceId": "workspace-id",
"name": "My API",
"type": "openapi",
"files": [
{
"path": "openapi.yaml",
"content": "openapi: 3.0.0\ninfo:\n title: My API\n version: 1.0.0"
}
]
})
Generate Collection from Spec
await call_tool("generateCollection", {
"specId": "spec-id",
"name": "Generated Collection",
"elementType": "collection",
"options": {
"requestParametersResolution": "example",
"exampleParametersResolution": "example"
}
})
Create Environment
await call_tool("createEnvironment", {
"workspace": "workspace-id",
"environment": {
"name": "Production",
"values": [
{"key": "base_url", "value": "https://api.example.com", "enabled": true},
{"key": "api_key", "value": "secret", "enabled": true, "type": "secret"}
]
}
})
Run Collection
await call_tool("runCollection", {
"collectionId": "12345-abc123def456",
"environmentId": "env-id",
"iterationCount": 1,
"requestTimeout": 30000
})
API Endpoints
When running with HTTP transports:
GET /- Server infoGET /health- Health check/mcp/*- MCP protocol endpoints (streamable-http)/sse- SSE endpoint/messages- SSE messages endpoint
Development
Run Tests
pytest
Project Structure
postman-tool/
โโโ postman_server.py # Main MCP server
โโโ tools/
โ โโโ toolhandler.py # Base class
โ โโโ postman_tools.py # All 41 tool implementations
โโโ tests/
โ โโโ test_postman.py
โโโ pyproject.toml
โโโ Dockerfile
โโโ README.md
Postman API Details
Authentication
Uses X-Api-Key header with your Postman API key. Get yours at: https://postman.com/settings/me/api-keys
Base URL
https://api.getpostman.com
Collection UID Format
Many endpoints require collection UID in format: <OWNER_ID>-<COLLECTION_ID>
To get the UID:
- Use
getCollectionand read theuidfield - Construct from
{ownerId}-{collectionId}where:- For team collections:
ownerId = me.teamId(fromgetAuthenticatedUser) - For personal collections:
ownerId = me.user.id(fromgetAuthenticatedUser)
- For team collections:
Rate Limits
Postman API has rate limits. See: https://learning.postman.com/docs/developer/postman-api/postman-api-rate-limits/
Common Issues
Authentication Error
Error: Postman API error (401)
Solution:
- Verify
POSTMAN_API_KEYis set correctly - Check key is valid at https://postman.com/settings/me/api-keys
- Ensure key has required permissions
Collection UID Format
Error: Collection not found
Solution:
- Use full UID format:
12345-abc123def456 - Get UID from
getCollectionresponse - For createMock, pass collection UID, not bare ID
Workspace Required
Error: Workspace is required
Solution:
- Call
getWorkspacesto list available workspaces - Pass
workspacequery parameter - For "my workspaces", call
getAuthenticatedUserfirst
Newman Integration
The runCollection tool requires Newman (Postman's CLI runner) to be integrated programmatically. This is a placeholder that returns instructions.
Requirements
- Python 3.10+
- Postman API Key
- MCP 1.12.0+
- httpx, Starlette, Uvicorn
License
MIT License - See LICENSE file for details
Support
For issues, questions, or contributions, please visit the project repository.
Additional Resources
- Postman API Documentation: https://learning.postman.com/docs/developer/postman-api/intro-api/
- Postman Collection Format: https://schema.postman.com/collection/json/v2.1.0/draft-07/docs/index.html
- MCP Protocol: https://modelcontextprotocol.io