dev-tools
dev-tools-mcp
Claude Code — 또는 모든 MCP 클라이언트 — 에게 다섯 가지 구조화된 개발 도구를 제공하는 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 도구의 경우: PATH에 psql이 있고 실행 중인 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— 필터링할 glob 또는 파일 경로, 예:"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을 id가abc-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