Skip to main content
Glama
runninghare

REST-to-Postman MCP

by runninghare
README.md
# REST-to-Postman MCP

[![smithery badge](https://smithery.ai/badge/@runninghare/rest-to-postman-mcp)](https://smithery.ai/server/@runninghare/rest-to-postman-mcp)

A Model Context Protocol (MCP) server that converts REST API code (e.g., NestJS controllers, FastAPI/Flask endpoints) to Postman collections and environments. This tool helps developers automatically sync their REST API endpoints and environment configurations with Postman.

## Features

- Convert REST API endpoints to Postman collections
- Sync environment variables with Postman environments
- Support for various authentication methods (e.g., Bearer token)
- Intelligent merging of new endpoints with existing collections
- Automatic handling of sensitive environment variables
- Support for both stdio and SSE transport modes

## Prerequisites

- [Bun](https://bun.sh) v1.2.2 or later
- Postman API Key
- Postman Workspace ID

## Installation & Usage

This is a Model Context Protocol (MCP) stdio server that requires access to your Postman workspace to create/update collections and environments.

### Installing via Smithery

To install REST-to-Postman MCP for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@runninghare/rest-to-postman-mcp):

```bash
npx -y @smithery/cli install @runninghare/rest-to-postman-mcp --client claude
```

### Running the MCP Server with `npx`

To use the MCP server with `npx`:

```bash
npx -y rest-to-postman@latest --postman-api-key your_api_key --postman-workspace-id your_workspace_id
```

Or use environment variables:
```bash
export POSTMAN_API_KEY=your_api_key
export POSTMAN_ACTIVE_WORKSPACE_ID=your_workspace_id
npx -y rest-to-postman@latest 
```

You can integrate this command with various AI code editors that support MCP:
- Claude Desktop
- Cursor
- Windsurf
- Roo Cline Editor

> **Important Note**: The server requires Postman API credentials to function. Make sure you have both the API key and workspace ID ready before starting the server.

### Tool Descriptions

The server provides two main tools:

#### 1. REST to Postman Environment (`rest_to_postman_env`)

Creates or updates a Postman environment with your application's environment variables.

**Input Parameters:**
- `envName` (string): Name of the Postman environment
- `envVars` (object): Key-value pairs of environment variables

**Example Input:**
```json
{
    "envName": "REST Environment",
    "envVars": {
        "API_URL": "https://api.example.com",
        "API_TOKEN": "secret-token-1"
    }
}
```

#### 2. REST to Postman Collection (`rest_to_postman_collection`)

Creates or updates a Postman collection with your REST API endpoints.

**Input Parameters:**
- `collectionRequest` (object): Postman collection configuration containing:
  - `info`: Collection metadata
  - `auth`: Authentication settings
  - `item`: Array of API endpoints

**Example Input:**
```json
{
    "info": {
        "name": "REST Collection",
        "description": "REST Collection", 
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {   
                "key": "Authorization",
                "value": "Bearer {{API_TOKEN}}",
                "type": "string"
            }
        ]
    },  
    "item": [
        {
            "name": "Get Users",
            "request": {
                "method": "GET",    
                "url": {
                    "raw": "{{API_URL}}/users",
                    "protocol": "https",
                    "host": ["api", "example", "com"],
                    "path": ["users"]
                }   
            }
        }
    ]
}
```

### Response Format

Both tools return a success message confirming the creation/update of the Postman resource:

```json
{
    "content": [{
        "type": "text",
        "text": "Successfully created/updated Postman environment: REST Environment"
    }]
}
```
### Use this MCP in Cursor

You can use this MCP server in Cursor. Here's an example which generates a Postman Collection based on a Nest.js Typescript controller.

__Prompt__: 
```code
Create a postman collection named "Campaign Endpoints" based on this next.js controller. The baseUrl is `http://localhost:7022`. The collection should have a Bear token which applies to all the endpoints
```

<img width="1620" alt="2025-04-13_18-10-50" src="https://github.com/user-attachments/assets/49dd7851-141e-4bef-bc23-252eb9922164" />

Here's the automatically generated Postman Collection:

<img width="848" alt="2025-04-13_18-17-34" src="https://github.com/user-attachments/assets/67db9328-7b16-4e9c-890d-ecd91931ff83" />

Note all the endpoints from the `Campaign` Controller are generated, along with the Bear token setting.

## Development

### Local Setup

1. Clone the repository:
```bash
git clone https://github.com/runninghare/rest-to-postman.git
cd rest-to-postman
```

2. Install dependencies:
```bash
bun install
```

3. Create a `.env` file:
```env
POSTMAN_API_KEY=your_api_key_here
POSTMAN_ACTIVE_WORKSPACE_ID=your_workspace_id_here
```

### Running in Development Mode

For development, you can run the server directly using Bun:

```bash
# Start in stdio mode (default)
bun run src/mcp.ts

# Start in SSE mode
bun run src/mcp.ts --sse
```

### Building

To build the project:

```bash
bun run build
```

This will create a bundled output in the `dist` directory.

### Scripts

- `bun run build` - Build the project
- `bun run dev` - Run the server in development mode
- `bun run startSSE` - Start the server in SSE mode

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## License

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

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one handles Postman collections (API endpoint configurations), while the other handles Postman environments (environment variables). There is no overlap in functionality, making it impossible to confuse them.

Naming Consistency5/5

Both tools follow a perfect 'rest_to_postman_' prefix pattern with descriptive suffixes ('collection' and 'env'). The naming is completely consistent in style and structure throughout the set.

Tool Count2/5

With only 2 tools, this server feels severely under-scoped for a REST-to-Postman integration purpose. A complete synchronization system would typically need tools for operations like listing collections/environments, deleting resources, or handling authentication flows, not just create/update operations.

Completeness2/5

The toolset is significantly incomplete for REST-to-Postman synchronization. While create/update operations exist for collections and environments, there are no tools for reading existing resources, deleting them, managing workspaces, or handling more complex Postman features like monitors or mocks. This creates dead ends for agents trying to perform full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues