Skip to main content
Glama

dev-tools-mcp

CI License: MIT

Ein MCP-(Model Context Protocol)-stdio-Server, der Claude Code – oder jedem anderen MCP-Client – fünf strukturierte Entwicklungswerkzeuge bereitstellt:

#

Tool

Funktion

1

run_e2e_tests

Führt Playwright-Tests aus, startet den Dev-Server, liefert bestanden/nicht bestanden pro Test

2

execute_sql_as_role

Führt SQL als Postgres-Rolle mit JWT-Ansprüchen aus – verifiziert Supabase RLS

3

typecheck

Führt tsc --noEmit aus, liefert strukturierte Fehler (Datei, Zeile, Code, Meldung)

4

npm_run

Führt beliebige npm-Skripte aus, parst Vitest/Jest-Ausgabe in strukturierte Ergebnisse

5

nextjs_build

Führt next build aus, liefert strukturierte Fehler + Seitenliste mit Größen

Voraussetzungen

  • Node.js ≥ 18

  • Claude Code installiert

  • Für das RLS-Tool: psql im PATH und eine laufende Supabase/Postgres-Instanz

Schnellstart

# 1. Clone the repo
git clone https://github.com/briancox730/dev-tools-mcp.git
cd dev-tools-mcp

# 2. Install dependencies
npm install

# 3. Build
npm run build

# 4. Register with Claude Code (local scope — this project only)
claude mcp add --transport stdio dev-tools -- node /absolute/path/to/dev-tools-mcp/build/index.js

# OR register globally (available in all projects)
claude mcp add --transport stdio --scope user dev-tools -- node /absolute/path/to/dev-tools-mcp/build/index.js

Alternative: .claude.json direkt bearbeiten

Fügen Sie dies zum Schlüssel mcpServers in ~/.claude.json (global) oder .claude.json im Projektstamm hinzu:

{
  "mcpServers": {
    "dev-tools": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/dev-tools-mcp/build/index.js"]
    }
  }
}

Starten Sie dann Claude Code neu.

Überprüfen, dass es funktioniert

Führen Sie in Claude Code /mcp aus – Sie sollten dev-tools: connected mit 5 aufgelisteten Tools sehen.

Tool-Details

1. run_e2e_tests – Playwright-E2E-Ausführer

Führt Playwright mit dem JSON-Reporter aus und parst die Ergebnisse in strukturierte Ausgabe.

Eingaben:

  • project_dir (erforderlich) – absoluter Pfad zu Ihrem Projekt

  • test_pattern – Glob oder Dateipfad zum Filtern, z. B. "tests/auth.spec.ts"

  • headed – im beheadeten Modus ausführen (Standard: false)

  • start_server – Playwrights webServer-Konfiguration verwenden (Standard: true)

  • timeout_seconds – nach dieser Anzahl Sekunden beenden (Standard: 120)

Was Sie zurückbekommen:

{
  "success": true,
  "summary": { "passed": 8, "failed": 1, "skipped": 0, "total": 9 },
  "tests": [
    { "name": "Auth > should redirect unauthenticated users", "status": "passed", "duration_ms": 1200 },
    { "name": "Auth > should show dashboard after login", "status": "failed", "duration_ms": 3400, "error": "Expected element to be visible..." }
  ]
}

Tipp: Stellen Sie sicher, dass Ihre playwright.config.ts einen webServer-Abschnitt enthält, damit Playwright Ihren Dev-Server automatisch startet:

export default defineConfig({
  webServer: {
    command: 'npm run dev',
    port: 3000,
    reuseExistingServer: !process.env.CI,
  },
});

2. execute_sql_as_role – Supabase-RLS-Tester

Führt SQL als bestimmte Postgres-Rolle mit JWT-Ansprüchen aus und führt dann einen Rollback durch. Ändert niemals Daten.

Eingaben:

  • connection_string (erforderlich) – z. B. "postgresql://postgres:postgres@localhost:54322/postgres"

  • sql (erforderlich) – die auszuführende Abfrage

  • role – Postgres-Rolle (Standard: "authenticated")

  • user_id – UUID, die als auth.uid() gesetzt wird

  • claims – zusätzliche JWT-Ansprüche, z. B. { "app_role": "parent" }

Beispiel-Prompt für Claude Code:

„Führen Sie SELECT * FROM children als authentifizierter Eltern-Benutzer mit der ID abc-123 aus und bestätigen Sie, dass sie nur ihre eigenen Kinder sehen können."

Was Sie zurückbekommen:

{
  "success": true,
  "role": "authenticated",
  "user_id": "abc-123",
  "query": "SELECT * FROM children",
  "rows": [["id-1", "abc-123", "Alice"], ["id-2", "abc-123", "Bob"]],
  "row_count": 2
}

3. typecheck – TypeScript-Prüfer

Führt tsc --noEmit aus und parst die Ausgabe in strukturierte Fehler.

Eingaben:

  • project_dir (erforderlich)

  • tsconfig – relativer Pfad zu tsconfig (Standard: "tsconfig.json")

  • files – nur bestimmte Dateien prüfen

Was Sie zurückbekommen:

{
  "success": false,
  "error_count": 2,
  "errors": [
    { "file": "src/utils.ts", "line": 42, "column": 5, "code": "TS2345", "message": "Argument of type 'string' is not assignable..." },
    { "file": "src/api.ts", "line": 18, "column": 12, "code": "TS2339", "message": "Property 'foo' does not exist on type..." }
  ]
}

4. npm_run – Strukturierter npm-Skript-Ausführer

Führt beliebige npm-Skripte mit CI=true und FORCE_COLOR=0 aus und parst dann Vitest/Jest-Ausgabe.

Eingaben:

  • project_dir (erforderlich)

  • script (erforderlich) – z. B. "test", "test:unit", "lint"

  • args – zusätzliche Argumente, die nach -- übergeben werden

  • env – zusätzliche Umgebungsvariablen

Was Sie zurückbekommen:

{
  "success": false,
  "exit_code": 1,
  "script": "test",
  "summary": { "total_tests": 14, "passed_tests": 12, "failed_tests": 2 },
  "file_results": [
    { "file": "src/auth.test.ts", "status": "failed", "tests_failed": 2 },
    { "file": "src/utils.test.ts", "status": "passed", "tests_passed": 5 }
  ],
  "raw_stdout": "..."
}

5. nextjs_build – Next.js-Build-Validator

Führt next build im Produktionsmodus aus und parst Fehler und Seitenausgabe.

Eingaben:

  • project_dir (erforderlich)

  • env – zusätzliche Umgebungsvariablen für den Build

  • timeout_seconds – (Standard: 180)

Was Sie zurückbekommen:

{
  "success": true,
  "error_count": 0,
  "errors": [],
  "pages": [
    { "path": "/", "size_kb": 5.42, "type": "static" },
    { "path": "/dashboard", "size_kb": 12.1, "type": "dynamic" },
    { "path": "/api/auth", "size_kb": 0, "type": "ssr" }
  ],
  "build_duration_ms": 24500
}

Entwicklung

# Watch mode
npm run watch

# Run the unit tests (Vitest)
npm test

# Test interactively with the MCP Inspector
npm run inspect

Tests

Die Ausgabeparser sind der kniffligste und fehleranfälligste Teil des Codes – sie wandeln freie Vitest/Jest/tsc/next build-Konsolenausgabe in strukturiertes JSON um. Diese reinen Funktionen werden mit Vitest unter test/ unit-getestet; führen Sie sie mit npm test aus. CI (siehe .github/workflows/ci.yml) führt npm ci, den TypeScript-Build und die Testsuite auf Node 20 und 22 für jeden Push und Pull Request aus.

Anpassungsideen

  • Ein lint-Tool hinzufügen, das ESLint-JSON-Ausgabe parst

  • Ein prisma_migrate-Tool für strukturierten Migrationsstatus hinzufügen

  • Ein docker_compose-Tool zur Verwaltung von Testcontainern hinzufügen

  • Das RLS-Tool an die Supabase-CLI anbinden (supabase db test) statt an rohes psql

Lizenz

MIT © 2026 Brian Cox

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,

  • One PAT, any MCP agent: Vercel, GitHub, Cloudflare, Supabase, GCP — unified dev infra gateway.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

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/briancox730/dev-tools-mcp'

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