Skip to main content
Glama
anggasct

MCP-Insomnia

by anggasct
README.md


# MCP-Insomnia

MCP-Insomnia is an MCP (Model Context Protocol) server that enables AI agents to create and manage API collections in Insomnia-compatible format. This server provides tools for managing collections, requests, and environments that can be exported to Insomnia.

## Installation and Usage

### Prerequisites

- Node.js 18+
- npm or yarn

There are three ways to use `mcp-insomnia`.

### 1. Run with NPX (Recommended)

You can run `mcp-insomnia` directly using `npx` without a global installation.

**Configuration:**

```json
{
  "mcpServers": {
    "insomnia": {
      "command": "npx",
      "args": ["-y", "mcp-insomnia"]
    }
  }
}
```

### 2. Install Globally from NPM

Install the package globally using npm.

**Installation:**

```bash
npm install -g mcp-insomnia
```

**Configuration:**

```json
{
  "mcpServers": {
    "insomnia": {
      "command": "mcp-insomnia"
    }
  }
}
```

### 3. Install from Source

Clone the repository and build the project.

**Installation:**

```bash
git clone https://github.com/anggasct/mcp-insomnia.git
cd mcp-insomnia
npm install
npm run build
```

**Configuration:**

```json
{
  "mcpServers": {
    "insomnia": {
      "command": "node",
      "args": ["/path/to/mcp-insomnia/dist/index.js"]
    }
  }
}
```

## Available Tools

### Collection Management

- `create_collection` - Create new collection/workspace
- `list_collections` - List all collections
- `get_collection_detail` - Get full details and statistics of a collection
- `export_collection` - Export collection to JSON format

### Folder Management

- `create_folder` - Create folder within collection

### Request Management

- `list_requests` - List all requests, optionally filter by collection
- `get_request` - Get full details of a specific request
- `create_request_in_collection` - Create new request
- `update_request` - Update existing request
- `delete_request` - Delete request
- `execute_request` - Execute an MCP-stored request and return the response (supports environment resolution, timeouts, and response size limits — see [Request execution](#request-execution))
- `get_request_history` - Get execution history of a request (up to 20 entries per request)

### Import Tools

- `import_from_curl` - Parse cURL command into a request
- `import_from_postman` - Import Postman Collection (v2.1) JSON
- `import_from_openapi` - Import OpenAPI 3.x or Swagger 2.x JSON
- `import_from_insomnia_export` - Import collections from a standard Insomnia V4 export file

### Utility Tools

- `generate_code_snippet` - Generate a code snippet for a request. Requires `requestId` and `target`. Supported targets: `c`, `clojure`, `csharp`, `go`, `http`, `java`, `javascript`, `kotlin`, `node`, `objc`, `ocaml`, `php`, `powershell`, `python`, `ruby`, `shell`, `swift`. Optional `client` selects a library (e.g. `axios` for `javascript`, `curl` for `shell`).

### Insomnia Direct Integration (NeDB)

Interact directly with the local Insomnia application database (macOS, Linux, Windows).

- `list_insomnia_projects` - List all projects/teams from Insomnia
- `list_insomnia_collections` - List all workspaces/collections from Insomnia
- `get_insomnia_collection` - Get full details of a specific Insomnia workspace
- `get_insomnia_request` - Get full details of a specific Insomnia request
- `sync_from_insomnia` - Import a workspace from Insomnia to MCP
- `sync_all_from_insomnia` - Import all workspaces from Insomnia to MCP
- `sync_to_insomnia` - Export an MCP collection back to Insomnia
- `execute_insomnia_request` - Execute a request directly from Insomnia without syncing (supports environment resolution and timeouts — see [Request execution](#request-execution))

### Environment Management

- `set_environment_variable` - Set environment variable
- `get_environment_variables` - Get environment variables

When executing requests, environment variables are merged in layers (later layers override earlier ones):

**MCP collections** (`execute_request`):
1. Workspace/base environments attached to the collection
2. Sub-environment (`environmentId`, if provided)
3. Folder environments along the request's ancestor chain
4. `overrideVariables` (per-call overrides)
5. `environmentVariables` (legacy final override layer)

**Insomnia app** (`execute_insomnia_request`):
1. Global environment (project level)
2. Base environment (workspace level)
3. Sub-environment (`environmentId`, if provided)
4. Folder environments along the request's ancestor chain
5. `overrideVariables` (per-call overrides)

### Request execution

Both execution tools accept optional runtime parameters:

| Parameter | `execute_request` | `execute_insomnia_request` | Description |
|-----------|:-:|:-:|-------------|
| `requestId` | ✓ | ✓ | ID of the request to run |
| `environmentId` | ✓ | ✓ | Sub-environment ID for variable substitution |
| `overrideVariables` | ✓ | ✓ | Per-call variable overrides (e.g. `{"token": "abc123"}`) |
| `environmentVariables` | ✓ | | Legacy final override layer for MCP collections |
| `timeoutMs` | ✓ | ✓ | Request timeout in ms (default `30000`; set `<= 0` for no timeout — MCP cancellation still applies) |
| `maxResponseBytes` | ✓ | | Max serialized response body size in tool output; exceeded bodies are truncated to a preview |

### Search & Statistics

- `search` - Search across all collections, folders, and requests
- `get_stats` - Get global statistics of all collections

## Usage Examples

### Create Collection

```
Create a new Insomnia collection named "API Testing" for testing endpoints
```

### Add Request

```
Add GET request to "API Testing" Insomnia collection with:
- Name: Get Users
- URL: https://jsonplaceholder.typicode.com/users
- Headers: Content-Type: application/json
```

### Set Environment Variable

```
Set Insomnia environment variable "baseUrl" with value "https://api.example.com" for "API Testing" collection
```

### Execute Request

```
Execute "Get Users" request using the configured environment variables
```

With optional parameters:

```
Execute request req_abc123 with environmentId env_xyz, timeout 15000ms, and override baseUrl to https://staging.api.example.com
```

### Generate Code Snippet

```
Generate a code snippet for request req_abc123 in javascript using axios
```

## Data Storage

Data is stored in two locations:
1. **MCP Storage**: `~/.mcp-insomnia/collections.json`
   - Working area for building/editing collections before syncing
   - Changes here do NOT affect the Insomnia App until synced
   - Ideal for generating new collections, importing from OpenAPI, or mass-refactoring

2. **Insomnia App Storage** (NeDB)
   - The database used by Insomnia App
   - Changes here are visible in the App (may require restart)
   - Default paths:
     - **macOS**: `~/Library/Application Support/Insomnia`
     - **Linux**: `~/.config/Insomnia`
     - **Linux (Flatpak)**: `~/.var/app/rest.insomnia.Insomnia/config/Insomnia`
     - **Windows**: `%APPDATA%/Insomnia`

### Custom Insomnia Data Directory

If Insomnia is installed in a non-default location, you can set the `INSOMNIA_DATA_DIR` environment variable to specify the path:

```json
{
  "mcpServers": {
    "insomnia": {
      "command": "npx",
      "args": ["mcp-insomnia"],
      "env": {
        "INSOMNIA_DATA_DIR": "~/.var/app/rest.insomnia.Insomnia/config/Insomnia"
      }
    }
  }
}
```

> **Note:** Flatpak installations on Linux are auto-detected — you only need `INSOMNIA_DATA_DIR` if your Insomnia data is in a truly custom location.

## Recommended Workflow

**Scenario A: Creating/Modifying Content**
1. **Import/Fetch**: Pull data from Insomnia (`sync_from_insomnia` or `import_from_openapi`)
2. **Edit**: Modify requests/folders using MCP tools (`create_request_in_collection`, `update_request`)
3. **Publish**: Sync changes back to Insomnia (`sync_to_insomnia`)

**Scenario B: Running Existing Requests**
- Use `execute_insomnia_request` to run requests directly from Insomnia App without syncing

## Contributing

Contributions are welcome! Bug fixes, new tools, and improvements are all appreciated.

```bash
git clone https://github.com/anggasct/mcp-insomnia.git
cd mcp-insomnia
npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.js  # test via MCP Inspector
```

Fork the repo, create a branch from `main`, and open a PR. Use [conventional commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `docs:`, etc.).

Found a bug or have an idea? [Open an issue](https://github.com/anggasct/mcp-insomnia/issues).

## License

[MIT License](LICENSE)

## Changelog

See [CHANGELOG.md](CHANGELOG.md) for release history.

TDQS

C2.9/5.0

Scored across 30 tools

Disambiguation3/5

Several tools form near-identical pairs differentiated mainly by source: MCP storage vs. live Insomnia app (e.g., list_collections vs. list_insomnia_collections, get_request vs. get_insomnia_request, execute_request vs. execute_insomnia_request). The descriptions clarify the distinction, but an agent must read carefully to avoid picking the wrong variant.

Naming Consistency4/5

The set mostly follows a clear verb_noun snake_case pattern: create_collection, list_requests, update_request, delete_request. The main inconsistency is where 'insomnia' appears in names (list_insomnia_collections vs. sync_from_insomnia), but the overall convention remains predictable.

Tool Count2/5

With 30 tools, the server feels over-sized even for a feature-rich Insomnia integration. Many operations are duplicated across MCP storage and live-app variants, inflating the surface area without adding proportional capability.

Completeness3/5

Requests have solid lifecycle coverage with create, get, update, delete, execute, and search, and imports/exports are broad. However, collections lack update and delete operations, and folders have no update/delete path, leaving notable CRUD gaps in the core domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues