dev-tools
dev-tools-mcp
Claude Code — または任意のMCPクライアント — に5つの構造化された開発ツールを提供するMCP(Model Context Protocol)stdioサーバーです。
# | ツール | 機能 |
1 |
| Playwrightテストを実行し、開発サーバーを起動し、テストごとの成功/失敗を返します |
2 |
| JWTクレームを持つPostgresロールとしてSQLを実行 — Supabase RLSを検証します |
3 |
|
|
4 |
| 任意のnpmスクリプトを実行し、Vitest/Jest出力を構造化された結果に解析します |
5 |
|
|
前提条件
Node.js ≥ 18
Claude Code がインストールされていること
RLSツール用: psql がPATHにあり、Supabase/Postgresインスタンスが実行中であること
クイックスタート
# 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代替: .claude.json を直接編集する
~/.claude.json(グローバル)またはプロジェクトルートの .claude.json の mcpServers キーにこれを追加します:
{
"mcpServers": {
"dev-tools": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/dev-tools-mcp/build/index.js"]
}
}
}その後、Claude Codeを再起動します。
動作確認
Claude Code内で /mcp を実行すると、dev-tools: connected と5つのツールが表示されるはずです。
ツールの詳細
1. run_e2e_tests — Playwright E2Eランナー
JSONレポーターでPlaywrightを実行し、結果を構造化された出力に解析します。
入力:
project_dir(必須)— プロジェクトへの絶対パスtest_pattern— フィルタするグロブまたはファイルパス(例:"tests/auth.spec.ts")headed— ヘッド付きモードで実行(デフォルト: false)start_server— PlaywrightのwebServer設定を使用(デフォルト: true)timeout_seconds— この秒数後に強制終了(デフォルト: 120)
返されるもの:
{
"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..." }
]
}ヒント: playwright.config.ts に webServer セクションを設定して、Playwrightが開発サーバーを自動起動するようにしてください:
export default defineConfig({
webServer: {
command: 'npm run dev',
port: 3000,
reuseExistingServer: !process.env.CI,
},
});2. execute_sql_as_role — Supabase RLSテスター
JWTクレームを持つ特定のPostgresロールとしてSQLを実行し、その後ロールバックします。データを変更することはありません。
入力:
connection_string(必須)— 例:"postgresql://postgres:postgres@localhost:54322/postgres"sql(必須)— 実行するクエリrole— Postgresロール(デフォルト:"authenticated")user_id—auth.uid()として設定されるUUIDclaims— 追加のJWTクレーム(例:{ "app_role": "parent" })
Claude Codeへのプロンプト例:
"
SELECT * FROM childrenを、idabc-123を持つ認証済みの親ユーザーとして実行し、自分の子供だけが見えることを確認してください。"
返されるもの:
{
"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チェッカー
tsc --noEmit を実行し、出力を構造化されたエラーに解析します。
入力:
project_dir(必須)tsconfig— tsconfigへの相対パス(デフォルト:"tsconfig.json")files— 特定のファイルのみをチェック
返されるもの:
{
"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 — 構造化されたnpmスクリプトランナー
CI=true と FORCE_COLOR=0 で任意のnpmスクリプトを実行し、Vitest/Jest出力を解析します。
入力:
project_dir(必須)script(必須)— 例:"test"、"test:unit"、"lint"args—--の後に渡される追加引数env— 追加の環境変数
返されるもの:
{
"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ビルドバリデーター
本番モードで next build を実行し、エラーとページ出力を解析します。
入力:
project_dir(必須)env— ビルド用の追加環境変数timeout_seconds—(デフォルト: 180)
返されるもの:
{
"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
}開発
# Watch mode
npm run watch
# Run the unit tests (Vitest)
npm test
# Test interactively with the MCP Inspector
npm run inspectテスト
出力パーサーはコードベースの中で最もトリッキーで回帰しやすい部分です —
自由形式のVitest/Jest/tsc/next build コンソール出力を構造化されたJSONに変換します。
これらの純粋関数は test/ の下で Vitest を使用してユニットテストされています。npm test で実行できます。CI(.github/workflows/ci.yml を参照)は、すべてのプッシュとプルリクエストでNode 20と22で npm ci、TypeScriptビルド、テストスイートを実行します。
カスタマイズのアイデア
lintツールを追加 — ESLintのJSON出力を解析prisma_migrateツールを追加 — 構造化されたマイグレーションステータス用docker_composeツールを追加 — テストコンテナの管理用RLSツールをSupabase CLIに接続(
supabase db test)— 生のpsqlの代わりに
ライセンス
MIT © 2026 Brian Cox
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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