Skip to main content
Glama

Kurze Übersicht

Der vollständigste MCP-Server für API-Tests — 42 Tools, keine Konfiguration, nichts Vergleichbares. Dies ist nicht nur ein Request-Sender. Es ist eine vollständige Test-Workbench: HTTP-Anfragen mit Assertions, mehrstufige Abläufe mit Variablenextraktion, OpenAPI-Import mit schema-bewussten Mock-Daten, Lasttests mit Perzentil-Metriken, Antwort-Diffing über Umgebungen hinweg, Bulk-Test-Runner, wiederverwendbare Sammlungen, Umgebungsgruppen mit Verzeichnis-Scoping und persistenten Standardwerten, Postman-Import/Export und cURL-Export. Alles durch natürliche Konversation. Keine Konten, keine Cloud, keine generierten Dateien. Alles läuft inline und wird als einfaches JSON gespeichert, das Ihnen gehört.


Einfach ansprechen

Sie müssen keine Tool-Namen oder Parameter lernen. Beschreiben Sie, was Sie möchten, und die KI wählt das richtige Tool aus.

"Create a group called my-project and add this directory as scope"
"Set up a dev environment with BASE_URL http://localhost:3000"
"Switch to prod for this session"
"Set dev as the default environment"
"Import my API spec from /api-docs-json"
"Show me all user endpoints"
"GET /users"
"Create a user with random data"
"Verify that DELETE /users/5 returns 204"
"Login as admin, extract the token, then fetch dashboard stats"
"How fast is /health with 50 concurrent requests?"
"Run all my saved smoke tests"
"Compare the users endpoint between dev and prod"
"Export the create-user request as curl"
"Export my collection to Postman"

Wenn Sie eine OpenAPI-Spezifikation importiert haben, kennt die KI bereits jeden Endpunkt, jedes erforderliche Feld und jeden gültigen Enum-Wert. Wenn Sie sagen „Erstelle einen Blog-Beitrag“, liest sie das Schema und erstellt die Anfrage korrekt — kein Raten erforderlich.


Installation

Claude Code

claude mcp add --scope user api-testing -- npx -y @cocaxcode/api-testing-mcp@latest

Claude Desktop

Fügen Sie dies Ihrer Konfigurationsdatei hinzu (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS, %APPDATA%\Claude\claude_desktop_config.json unter Windows):

{
  "mcpServers": {
    "api-testing": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/api-testing-mcp@latest"]
    }
  }
}

Cursor / Windsurf

Fügen Sie dies zu .cursor/mcp.json oder .windsurf/mcp.json in Ihrem Projektstammverzeichnis hinzu:

{
  "mcpServers": {
    "api-testing": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/api-testing-mcp@latest"]
    }
  }
}

VS Code — zu .vscode/mcp.json hinzufügen:

{
  "servers": {
    "api-testing": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/api-testing-mcp@latest"]
    }
  }
}

Codex CLI (OpenAI):

codex mcp add api-testing -- npx -y @cocaxcode/api-testing-mcp@latest

Oder zu ~/.codex/config.toml hinzufügen:

[mcp_servers.api-testing]
command = "npx"
args = ["-y", "@cocaxcode/api-testing-mcp@latest"]

Gemini CLI — zu ~/.gemini/settings.json hinzufügen:

{
  "mcpServers": {
    "api-testing": {
      "command": "npx",
      "args": ["-y", "@cocaxcode/api-testing-mcp@latest"]
    }
  }
}

Schnellstart

Nach der Installation richten Sie eine Umgebung ein, damit relative Pfade automatisch aufgelöst werden:

"Create an environment called dev with BASE_URL http://localhost:3000"

Wenn Ihre API eine Swagger/OpenAPI-Spezifikation hat, importieren Sie diese:

"Import my API spec from http://localhost:3000/api-docs-json"

Überprüfen Sie es mit: "List my environments" — Sie sollten die gerade erstellte Umgebung sehen.


Funktionen

HTTP-Anfragen

Senden Sie jede HTTP-Methode mit Headern, Query-Parametern, JSON-Body, Authentifizierung und {{variable}}-Interpolation. Relative URLs werden automatisch gegen BASE_URL aufgelöst.

"POST to /api/users with name Jane and email jane@company.com using my bearer token"

Unterstützt: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS — Bearer / API Key / Basic Auth — benutzerdefinierte Timeouts.

Assertions

Validieren Sie Antworten mit strukturierten Bestehen/Nicht-Bestehen-Ergebnissen:

"Verify that GET /api/health returns 200, body.status is ok, and responds in under 500ms"
PASS — 3/3 assertions passed
  status === 200
  body.status === "ok"
  timing.total_ms < 500

10 Operatoren: eq, neq, gt, gte, lt, lte, contains, not_contains, exists, type

Request-Abläufe

Verketten Sie Anfragen mit Variablenextraktion zwischen den Schritten. Perfekt für Authentifizierungsabläufe und CRUD-Sequenzen.

"Login as admin@test.com, extract the access token, then use it to fetch all users"
flow_run({
  steps: [
    {
      name: "login",
      method: "POST",
      url: "/auth/login",
      body: { email: "admin@test.com", password: "SecurePass#99" },
      extract: { "TOKEN": "body.access_token" }
    },
    {
      name: "get-users",
      method: "GET",
      url: "/api/users",
      headers: { "Authorization": "Bearer {{TOKEN}}" }
    }
  ]
})

OpenAPI-Import

Importieren Sie Spezifikationen von einer URL oder einer lokalen Datei (JSON und YAML). Nach dem Import kennt die KI jeden Endpunkt, Parameter und jedes Schema.

"Import my API spec from http://localhost:3000/api-docs-json"
"Import the spec from ./openapi.yaml"
"What parameters does POST /users expect?"

Unterstützt OpenAPI 3.x mit vollständiger $ref-Auflösung, allOf, oneOf, anyOf. OpenAPI 2.0 wird teilweise unterstützt.

Mock-Datengenerierung

Generieren Sie realistische Fake-Daten aus Ihren OpenAPI-Schemas. Respektiert Typen, Formate (email, uuid, date-time), Enums und erforderliche Felder.

"Generate mock data for creating a user"
{
  "email": "user42@example.com",
  "name": "Test User 73",
  "password": "TestPass123!",
  "role": "admin"
}

Lasttests

Feuern Sie N gleichzeitige Anfragen ab und erhalten Sie Leistungsmetriken:

"How fast is the health endpoint with 50 concurrent requests?"
LOAD TEST — GET /api/health
Requests:    50 concurrent
Successful:  50 | Failed: 0
Req/sec:     23.31

  Min: 45ms | Avg: 187ms
  p50: 156ms | p95: 412ms | p99: 523ms
  Max: 567ms

Antwort-Diffing

Führen Sie zwei Anfragen aus und vergleichen Sie deren Antworten Feld für Feld. Erkennen Sie Regressionen oder vergleichen Sie Umgebungen.

"Compare the users endpoint between dev and prod"

Bulk-Tests

Führen Sie jede gespeicherte Anfrage in einer Sammlung aus (oder filtern Sie nach Tag) und erhalten Sie eine Zusammenfassung:

"Run all my saved smoke tests"
BULK TEST — 8/8 passed | 1.2s total
  health       — GET  /health      → 200 (45ms)
  list-users   — GET  /users       → 200 (123ms)
  create-post  — POST /blog        → 201 (89ms)
  login        — POST /auth/login  → 200 (156ms)

Sammlungen

Speichern Sie Anfragen zur Wiederverwendung mit Tags. Erstellen Sie Regressions-Suiten.

"Save this request as create-user with tags auth, smoke"
"List all requests tagged smoke"

Umgebungen

Umgebungen enthalten Ihre Variablen — BASE_URL, Token, API-Schlüssel — und halten sie nach Kontext getrennt. Das System hat drei Kernkonzepte:

Gruppe. Eine Gruppe organisiert Umgebungen und bindet sie an Verzeichnisse. Eine Gruppe hat N Scopes (Verzeichnisse), die ihre Umgebungen teilen, und genau eine Standardumgebung. Wenn Sie eine Umgebung innerhalb einer Gruppe erstellen, gehört sie zu dieser Gruppe. Wenn Sie in ein Verzeichnis cden, das ein Scope einer Gruppe ist, werden deren Umgebungen automatisch verfügbar.

Standard. Die Standardumgebung wird automatisch aktiviert, wenn Sie einen Scope ihrer Gruppe betreten. Sie bleibt über Sitzungen hinweg bestehen — starten Sie Ihren Editor neu, öffnen Sie Ihr Terminal erneut, und der Standardwert ist immer noch da. Einmal einstellen und vergessen.

Aktiv. Die aktive Umgebung ist diejenige, die gerade für die Variablenauflösung verwendet wird. Sie beginnt als Standard, wenn Sie einen Scope betreten, aber Sie können jederzeit wechseln. Die aktive Auswahl ist nur sitzungsbezogen — sie wird beim Neustart auf den Standardwert zurückgesetzt.

Globale Umgebungen (die keiner Gruppe zugeordnet sind) existieren weiterhin. Sie erfordern eine explizite Aktivierung mit env_switch und bleiben nicht über Sitzungen hinweg bestehen.

Praktisches Beispiel:

"Create a group called my-api"
"Add this directory as scope to my-api"
"Create a dev environment with BASE_URL http://localhost:3000"   <- auto-joins group, auto-default
"Create a prod environment with BASE_URL https://api.example.com"
"List environments"                                              <- shows dev (active, default) and prod
"Switch to prod"                                                 <- session only
"Set prod as default"                                            <- persists

Automatische Interpolation. Jede {{variable}} in URLs, Headern, Query-Parametern oder Request-Bodys wird gegen die aktive Umgebung aufgelöst, bevor die Anfrage abgeschickt wird. Setzen Sie BASE_URL einmal und jeder relative Pfad funktioniert einfach.

Ihre Anmeldedaten verlassen niemals Ihren Rechner. Umgebungsdateien sind einfaches JSON, das in ~/.api-testing/ gespeichert wird. Nichts wird mit einer Cloud synchronisiert. Nichts wird in Exporte eingebettet. Nichts wird von Git verfolgt. Ihre Token und Geheimnisse bleiben genau dort, wo sie sein sollten: auf Ihrer Festplatte, unter Ihrer Kontrolle.

Postman-Import & Export

Bidirektionale Postman-Unterstützung. Migrieren Sie nahtlos zwischen Postman und Ihrem KI-Workflow.

"Import my Postman collection from ./exported.postman_collection.json"
"Export my collection to Postman"
"Export the dev environment for Postman"

Sammlung: Postman v2.1 Format. Ordner werden zu Tags. Authentifizierung wird von Ordnern/Sammlungsebene geerbt. Unterstützt Raw-JSON, x-www-form-urlencoded, form-data Bodys.

Umgebung: Bevorzugt currentValue gegenüber value. Überspringt deaktivierte Variablen. Optionales activate-Flag.

Sammlung: Anfragen in Ordnern nach Tag gruppiert. Authentifizierung auf das native Postman-Format gemappt. {{variables}} bleiben unverändert erhalten.

Umgebung: Alle Variablen werden als enabled: true im Postman-kompatiblen Format exportiert.

Nativer Export & Import

Exportieren Sie Sammlungen und Umgebungen in einen portablen .atm/-Ordner. Teilen Sie sie mit Ihrem Team oder kopieren Sie sie zwischen Projekten.

"Export my collection and dev environment"
your-project/
└── .atm/
    ├── collection.json
    └── dev.env.json

Hinweis: .atm/ wird beim ersten Export automatisch zu .gitignore hinzugefügt.

cURL-Export

Konvertieren Sie jede gespeicherte Anfrage in einen sofort kopierbaren cURL-Befehl mit aufgelösten Variablen.

"Export the create-user request as curl"
curl -X POST \
  'https://api.example.com/users' \
  -H 'Authorization: Bearer eyJhbGci...' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Jane","email":"jane@company.com"}'

Tool-Referenz

42 Tools in 9 Kategorien:

Kategorie

Tools

Anzahl

Anfragen

request

1

Testen

assert

1

Abläufe

flow_run

1

Sammlungen

collection_save, collection_list, collection_get, collection_delete

4

Umgebungen

env_create, env_list, env_set, env_get, env_switch, env_rename, env_delete, env_spec

8

Gruppen

env_group_create, env_group_list, env_group_delete, env_group_add_scope, env_group_remove_scope, env_set_default, env_set_group

7

API-Spezifikationen

api_import, api_spec_list, api_endpoints, api_endpoint_detail

4

Mock

mock

1

Dienstprogramme

load_test, export_curl, diff_responses, bulk_test, export_collection, import_collection, export_environment, import_environment, export_postman_collection, import_postman_collection, export_postman_environment, import_postman_environment

12

Tipp: Sie müssen Tools nicht direkt aufrufen. Beschreiben Sie, was Sie möchten, und die KI wählt das richtige aus.


Speicherung

Alles ist lokal. Keine Datenbank, keine Cloud-Synchronisierung, keine Telemetrie. Alle Daten liegen in ~/.api-testing/ als einfache JSON-Dateien, die Sie jederzeit lesen, sichern oder löschen können.

~/.api-testing/
├── groups/               # Environment groups with scopes and defaults
├── environments/         # Environment variables — tokens, keys, passwords
├── collections/          # Saved requests (shareable, no secrets)
├── specs/                # Imported OpenAPI specs
└── project-envs.json     # Session-only active environments (cleared on restart)

Globale Speicherung vs. Projekt-Exporte. Das Verzeichnis ~/.api-testing/ ist Ihr privater, globaler Speicher — hier leben Anmeldedaten und sie verlassen diesen Ort nie. Wenn Sie eine Sammlung oder Umgebung exportieren, geht sie in .atm/ in Ihrem Projektstammverzeichnis. Dieser Ordner wird beim ersten Export automatisch zu .gitignore hinzugefügt, aber selbst wenn Sie ihn committen, bleiben Ihre Anmeldedaten in ~/.api-testing/ und werden niemals in .atm/ kopiert. Sie können .atm/-Exporte sicher mit Ihrem Team teilen, ohne Geheimnisse preiszugeben.

Überschreiben Sie den Standard-Speicherpfad:

{
  "env": { "API_TESTING_DIR": "/path/to/custom/.api-testing" }
}

Warnung: Wenn Sie API_TESTING_DIR auf einen Pfad innerhalb eines Git-Repositorys überschreiben, fügen Sie .api-testing/ zu Ihrer .gitignore hinzu, um das Pushen von Anmeldedaten zu vermeiden.


Architektur

src/
├── index.ts              # Entry point (shebang + StdioServerTransport)
├── server.ts             # createServer() factory
├── tools/                # 42 tool handlers (one file per category)
│   ├── request.ts        # HTTP requests (1)
│   ├── assert.ts         # Assertions (1)
│   ├── flow.ts           # Request chaining (1)
│   ├── collection.ts     # Collection CRUD (4)
│   ├── environment.ts    # Environment management (8)
│   ├── group.ts          # Environment groups (7)
│   ├── api-spec.ts       # OpenAPI import/browse (4)
│   ├── mock.ts           # Mock data generation (1)
│   ├── load-test.ts      # Load testing (1)
│   └── utilities.ts      # curl, diff, bulk, import/export (12)
├── lib/                  # Business logic (no MCP dependency)
│   ├── http-client.ts    # fetch wrapper with timing
│   ├── storage.ts        # JSON file storage engine
│   ├── schemas.ts        # Shared Zod schemas
│   ├── url.ts            # BASE_URL resolution
│   ├── path.ts           # Dot-notation accessor (body.data.0.id)
│   ├── interpolation.ts  # {{variable}} resolver
│   └── openapi-parser.ts # $ref + allOf/oneOf/anyOf resolution
└── __tests__/            # 10+ test suites, 120+ tests

Stack: TypeScript (strict) · MCP SDK · Zod · Vitest · tsup


MIT · Erstellt von cocaxcode

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cocaxcode/api-testing-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server