Skip to main content
Glama
postman-mcp-server
by delano

Postman MCP Server

Version: v0.2.0

An MCP server that provides access to the Postman API. Functionality is based on the official OpenAPI specification. For more information, see the Postman API documentation.

This project is part of the Model Context Protocol (MCP) initiative from Anthropic. For more information, visit the MCP GitHub repository and the announcement on the Anthropic blog.

Skip ahead to install instructions

postman-mcp-server - Cover Image

WARNING

This project is currently under active development. Please use with caution and expect breaking changes.

NOTE

AI Generated Code. I used Cline v2.2.2 with Claude 3.5 Sonnet (2024-10-22). See docs/README.md for prompts and details about how this code was generated.


Overview

Postman MCP Server is a TypeScript-based MCP server that integrates with the Postman API, providing comprehensive management of Postman collections, environments, and APIs.

Related MCP server: Postman MCP Server

Features

Collections

  • CRUD Operations: Create, retrieve, update, and delete Postman collections.

  • Folder Management: Organize requests into folders within collections.

  • Request Management: Add, update, and delete requests within collections.

  • Response Management: Manage responses associated with requests.

  • Version Control: Fork, merge, and pull changes for collections.

  • Comments: Add and manage comments on collections.

Environments

  • Manage Environments: Create and retrieve environments for different setups.

  • CRUD Operations: Full support for creating, updating, and deleting environments.

APIs

  • API Management: Create, retrieve, update, and delete APIs.

  • Schema Support: Manage API schemas with multi-file support.

  • Tagging: Add and manage tags for APIs.

  • Comments: Add and manage comments on APIs.

Authentication & Authorization

  • API Key Authentication: Secure access using API keys.

  • Role-Based Access Control: Manage permissions at workspace and collection levels.

  • Workspace Permissions: Define permissions specific to workspaces.

Additional Features

  • Private API Network: Manage elements and folders within a private API network.

  • Webhooks: Create webhooks to trigger collections with custom payloads.

  • Enterprise Features: Advanced role controls and SCIM support for enterprise environments.

Installation

Installing via Smithery

To install Postman MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install postman-api-server --client claude

Prerequisites

Steps

  1. Clone the repository:

    git clone https://github.com/delano/postman-api-server.git
    cd postman-api-server
  2. Install dependencies:

    pnpm install
  3. Build the server:

    pnpm run build
  4. Run in development mode with auto-rebuild:

    pnpm run watch

Usage

Setting up API Keys

  1. Generate your API Key

  2. Configure the API Key

    • Add the key to your environment as POSTMAN_API_KEY

    • For Claude Desktop or Cline, include it in your config file (see configuration examples below)

    • Never commit API keys to version control

  3. Verify Access

    • The API key provides access to all Postman resources you have permissions for

    • Test access by running a simple query (e.g., list workspaces)

NOTE

If you're using thePostman API collection directly, store your API key as a postman-api-key collection variable.

Using Claude Desktop

To use with Claude Desktop, add the server config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%/Claude/claude_desktop_config.json

IMPORTANT

If you're updating this provider, Claude must be restarted to pick up API changes from the input schema (i.e. When the MCP server's ToolDefinition elements have changed). This is because Claude caches the tool definitions when it starts up.

Example configuration

{
  "mcpServers": {
    "postman": {
      "command": "node",
      "args": [
        "/path/to/postman-api-server/build/index.js"
      ],
      "env": {
        "POSTMAN_API_KEY": "CHANGEME"
      }
    }
  }
}

Using Cline

Using the same example configuration, add the server config to your Cline MCP Servers configuration:

Example configuration

Same as Claude above.

Using Zed

I'm still trying to get this to work. From the Zed docs it looks like it needs to be an extension (also this issue #21455).


Documentation

The official Postman API documentation is available in the Postman Public Workspace.

Project Overview

Postman API References & Summaries

This project leverages the Claude model and Cline extension to convert the OpenAPI specification into TypeScript code, enhancing type safety and integration within the MCP server.

This GitHub project includes API References documentation that provides detailed guidance on utilizing the Postman platform programmatically. It covers both the Collection SDK for local development and the Postman API for cloud platform integration. Key topics include authentication mechanisms, rate limits, and in-depth documentation of all API endpoints, including workspaces, collections, environments, mock servers, monitors, and more. Additionally, the guide offers prerequisites and quick-start instructions to facilitate seamless API interactions.

The docs/api/summaries directory contains comprehensive Markdown summaries of the Postman API. These documents outline API endpoints, request/response formats, and implementation details essential for validating and ensuring the functionality of the MCP server. Refer to the API Summaries README for an overview of the documentation structure and implementation strategies.

Converting OpenAPI Spec to TypeScript Code with Claude

Building the MCP Server

Refer to the Handlers Documentation for detailed specifications on implementing MCP server handlers. This includes URI formats, prompt requirements, and resource handling patterns. This guide is crucial for developers working on integrating and enhancing the Postman API functionalities within the MCP server.


Rationale

The MCP wrapper for Postman tools makes sense primarily as an AI interaction layer for complex, multi-step operations where structure and safety are paramount. However, it may be overengineered for simple operations where direct CLI or API usage would suffice. The MCP wrapper provides most value when:

  1. Complex Operations

  • Managing multiple collections

  • Coordinating environments

  • Generating comprehensive reports

  1. AI-Driven Automation

  • Automated testing workflows

  • API documentation maintenance

  • Environment management

  1. Error-Sensitive Operations

  • Critical API testing

  • Production deployments

  • Compliance checking

It provides less value for:

  1. Simple Operations

  • Basic collection runs

  • Single API calls

  • Quick environment checks

  1. Direct CLI Usage

  • Developer-driven operations

  • Local testing

  • Quick iterations

Development

Install dependencies:

pnpm install

Build the server:

pnpm run build

For development with auto-rebuild:

pnpm run watch

Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, available as a package script:

pnpm run inspector

Docs

The Inspector will provide a URL to access debugging tools in your browser: http://localhost:5173. You will need to add the POSTMAN_API_KEY before connecting. Navigate to "Tools" to get started.

Other MCP Servers

License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

99 tools
add_api_collectionC

Add a collection to an API

Inputs: apiId (required), operationType (required), data.

add_pan_elementB

Add element or folder to Private API Network

Inputs: name (required), type (required), summary, elementId, +2 more.

create_apiC

Create a new API

Inputs: name (required), workspaceId (required), summary, description.

create_api_commentB

Create a new comment on an API (max 10,000 characters)

Inputs: apiId (required), content (required), threadId.

create_api_schemaC

Create a schema for an API

Inputs: type (required), apiId (required), files (required).

create_api_versionB

Create a new version of an API

Inputs: name (required), apiId (required), schemas (required), collections (required), +2 more.

create_collectionB

Create a new collection in a workspace. Supports Postman Collection v2.1.0 format.

Inputs: collection (required), workspace.

create_collection_folderB

Create a new folder in a collection

Inputs: folder (required), collection_id (required).

create_collection_requestB

Create a new request in a collection

Inputs: request (required), collection_id (required), folder_id.

create_collection_responseC

Create a new response in a collection

Inputs: response (required), request_id (required), collection_id (required).

create_environmentB

Create a new environment in a workspace. Creates in "My Workspace" if workspace not specified.

Inputs: environment (required), workspace.

create_mockB

Create a new mock server. Creates in Personal workspace if workspace not specified.

Inputs: mock (required), workspace.

create_monitorA

Create a new monitor. Cannot create monitors for collections added to an API definition.

Inputs: monitor (required), workspace.

create_server_responseA

Create a server response. Only one server response can be active at a time.

Inputs: mockId (required), serverResponse (required).

create_update_schema_fileC

Create or update a schema file

Inputs: apiId (required), content (required), filePath (required), schemaId (required), +1 more.

create_webhookB

Creates webhook that triggers collection with custom payload

Inputs: webhook (required), workspace (required).

delete_apiB

Delete an API

Inputs: apiId (required).

delete_api_commentC

Delete an API comment

Inputs: apiId (required), commentId (required).

delete_api_versionC

Delete an API version

Inputs: apiId (required), versionId (required).

delete_collectionC

Delete a collection

Inputs: collection_id (required).

delete_collection_access_keyD

Delete a collection access key

Inputs: keyId (required).

delete_collection_folderC

Delete a folder from a collection

Inputs: folder_id (required), collection_id (required).

delete_collection_requestB

Delete a request from a collection

Inputs: request_id (required), collection_id (required).

delete_collection_responseB

Delete a response from a collection

Inputs: response_id (required), collection_id (required).

delete_environmentB

Delete an environment

Inputs: environmentId (required).

delete_mockB

Delete a mock server

Inputs: mockId (required).

delete_monitorC

Delete a monitor

Inputs: monitorId (required).

delete_schema_fileB

Delete a schema file

Inputs: apiId (required), filePath (required), schemaId (required).

delete_server_responseC

Delete a server response

Inputs: mockId (required), serverResponseId (required).

fork_collectionB

Fork a collection to a workspace

Inputs: label (required), workspace (required), collection_id (required).

fork_environmentB

Create a fork of an environment in a workspace

Inputs: label (required), workspace (required), environmentId (required).

get_accountsB

Gets Postman billing account details for the given team

Inputs: no named parameters.

get_apiC

Get details of a specific API

Inputs: apiId (required), include.

get_api_collectionC

Get a specific collection from an API

Inputs: apiId (required), collectionId (required), versionId.

get_api_commentsB

Get comments for an API

Inputs: apiId (required), limit, cursor.

get_api_schemaC

Get a specific schema from an API

Inputs: apiId (required), schemaId (required), bundled, versionId.

get_api_schema_filesC

Get files in an API schema

Inputs: apiId (required), schemaId (required), limit, cursor, +1 more.

get_api_tagsB

Get tags for an API

Inputs: apiId (required).

get_api_versionB

Get a specific version of an API

Inputs: apiId (required), versionId (required).

get_api_versionsC

Get all versions of an API

Inputs: apiId (required), limit, cursor.

get_authenticated_userB

Get authenticated user information

Inputs: no named parameters.

get_collectionC

Get details of a specific collection

Inputs: collection_id (required), model, access_key.

get_collection_folderC

Get details of a specific folder in a collection

Inputs: folder_id (required), collection_id (required), ids, uid, +1 more.

get_collection_forksB

Get a list of collection forks

Inputs: collection_id (required), sort, limit, cursor, +1 more.

get_collection_requestB

Get details of a specific request in a collection

Inputs: request_id (required), collection_id (required), ids, uid, +1 more.

get_collection_responseB

Get details of a specific response in a collection

Inputs: response_id (required), collection_id (required), ids, uid, +1 more.

get_collection_rolesC

Get roles for a collection

Inputs: collectionId (required).

get_environmentB

Get details of a specific environment

Inputs: environmentId (required).

get_environment_forksB

Get a list of environment forks

Inputs: environmentId (required), sort, limit, cursor, +1 more.

get_mockB

Get details of a specific mock server

Inputs: mockId (required).

get_mock_call_logsA

Get mock call logs. Maximum 6.5MB or 100 call logs per API call. Retention period based on Postman plan.

Inputs: mockId (required), sort, limit, since, +8 more.

get_monitorC

Get details of a specific monitor

Inputs: monitorId (required).

get_schema_file_contentsC

Get contents of a schema file

Inputs: apiId (required), filePath (required), schemaId (required), versionId.

get_server_responseB

Get a specific server response

Inputs: mockId (required), serverResponseId (required).

get_tagged_elementsC

Get elements by tag

Inputs: slug (required), limit, cursor, direction, +1 more.

get_task_statusC

Get status of an asynchronous task

Inputs: apiId (required), taskId (required).

get_user_infoB

Get information about the authenticated user

Inputs: no named parameters.

get_workspaceB

Get details of a specific workspace

Inputs: workspace (required), include.

get_workspace_rolesC

Get roles for a specific workspace

Inputs: workspaceId (required), includeScim.

get_workspace_tagsC

Get workspace tags

Inputs: workspaceId (required).

list_account_invoicesB

Gets all invoices for a Postman billing account filtered by status

Inputs: status (required), accountId (required).

list_apisC

List all APIs in a workspace

Inputs: workspaceId (required), limit, cursor, createdBy, +1 more.

list_collection_access_keysB

List collection access keys with optional filtering by collection ID

Inputs: cursor, collectionId.

list_collectionsA

List all collections in a workspace. Supports filtering and pagination.

Inputs: name, limit, offset, workspace.

list_environmentsB

List all environments in a workspace. If workspace not specified, lists environments in "My Workspace".

Inputs: workspace.

list_mocksB

List all mock servers

Inputs: teamId, workspace.

list_monitorsC

Get all monitors

Inputs: workspace.

list_pan_elementsC

Get all elements and folders in Private API Network

Inputs: name, sort, type, limit, +8 more.

list_server_responsesC

Get all server responses for a mock

Inputs: mockId (required).

list_workspace_rolesA

Get all available workspace roles based on team's plan

Inputs: no named parameters.

list_workspacesC

List all workspaces

Inputs: type, include, createdBy.

merge_collection_forkB

Merge a forked collection back into its parent

Inputs: source (required), strategy (required), destination (required).

merge_environment_forkB

Merge a forked environment back into its parent

Inputs: source (required), destination (required), environmentId (required), strategy.

patch_collectionA

Partially update a collection. Only updates provided fields.

Inputs: collection (required), collection_id (required).

publish_mockA

Publish mock server (sets Access Control to public)

Inputs: mockId (required).

pull_collection_changesB

Pull changes from parent collection into forked collection

Inputs: collection_id (required).

pull_environmentB

Pull changes from parent environment into forked environment

Inputs: source (required), destination (required), environmentId (required).

remove_pan_elementB

Remove element or folder from Private API Network

Inputs: elementId (required), elementType (required).

resolve_comment_threadB

Resolves a comment and any associated replies

Inputs: threadId (required).

run_monitorA

Run a monitor. For async=true, response won't include stats, executions, and failures. Use GET /monitors/{id} to get this information for async runs.

Inputs: monitorId (required), async.

sync_collection_with_schemaC

Sync a collection with its schema

Inputs: apiId (required), collectionId (required).

transfer_collection_itemsC

Transfer items between collections

Inputs: ids (required), mode (required), type (required), target (required), +1 more.

unpublish_mockB

Unpublish mock server (sets Access Control to private)

Inputs: mockId (required).

update_apiC

Update an existing API

Inputs: apiId (required), name, summary, description.

update_api_commentB

Update an existing API comment (max 10,000 characters)

Inputs: apiId (required), content (required), commentId (required).

update_api_tagsB

Update tags for an API

Inputs: tags (required), apiId (required).

update_api_versionC

Update an API version

Inputs: name (required), apiId (required), versionId (required), releaseNotes.

update_collectionA

Update an existing collection. Full collection replacement with maximum size of 20 MB.

Inputs: collection (required), collection_id (required).

update_collection_folderA

Update a folder in a collection. Acts like PATCH, only updates provided values.

Inputs: folder (required), folder_id (required), collection_id (required).

update_collection_requestA

Update a request in a collection. Cannot change request folder.

Inputs: request (required), request_id (required), collection_id (required).

update_collection_responseA

Update a response in a collection. Acts like PATCH, only updates provided values.

Inputs: response (required), response_id (required), collection_id (required).

update_collection_rolesB

Update collection roles (requires EDITOR role)

Inputs: operations (required), collectionId (required).

update_environmentA

Update an existing environment. Only include variables that need to be modified.

Inputs: environment (required), environmentId (required).

update_mockB

Update an existing mock server

Inputs: mock (required), mockId (required).

update_monitorC

Update an existing monitor

Inputs: monitor (required), monitorId (required).

update_pan_elementC

Update element or folder in Private API Network

Inputs: elementId (required), elementType (required), name, summary, +2 more.

update_server_responseC

Update a server response

Inputs: mockId (required), serverResponse (required), serverResponseId (required).

update_workspace_rolesB

Update workspace roles for users and groups (limited to 50 operations per call)

Inputs: operations (required), workspaceId (required), identifierType.

update_workspace_tagsD

Update workspace tags

Inputs: tags (required), workspaceId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.7/5.0

    Scored across 99 tools

    Disambiguation3/5

    With 99 tools, many CRUD operations for different entities (API, collection, environment, etc.) exist, but descriptions generally clarify their purpose. Some overlapping concepts like 'add_api_collection' vs 'create_collection' could cause confusion, but overall distinct.

    Naming Consistency4/5

    Most tools follow a consistent 'verb_noun' pattern (e.g., create_api, delete_api), but a few deviations like 'add_pan_element', 'resolve_comment_thread', and 'sync_collection_with_schema' break the pattern.

    Tool Count2/5

    99 tools is excessively high for a single server, even considering Postman's broad scope. Many tools could be consolidated (e.g., using parameters instead of separate tools), making it hard for agents to navigate.

    Completeness5/5

    The tool surface covers all major Postman resources (APIs, collections, environments, mocks, monitors, schemas, webhooks, etc.) with full CRUD, plus forks, merges, roles, tags, comments, and PAN management. No obvious gaps.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables running Postman collections using Newman for conducting API tests and obtaining detailed result analysis via a standardized interface.
      1
      43 npm
      84
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with Postman workspaces, collections, requests, responses, and monitors through the Postman API. Allows users to manage API collections, create and update requests/responses, and execute monitors directly from chat.
      28 npm
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that provides seamless integration with the Postman API, enabling AI assistants and applications to interact with Postman workspaces, collections, requests, environments, and folders programmatically.
      19
      28 npm
      31
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to create, manage, and interact with Postman collections, workspaces, environments, and API requests directly from conversations.
      75 npm
      5
      MIT