Skip to main content
Glama

mcp-devtools

npm version CI License: MIT Node.js

Model Context Protocol을 통한 AI 네이티브 개발자 도구. AI 에이전트(Claude, Cursor, Copilot, Continue 등)가 로컬 개발 환경에 안전하고 제한된 범위 내에서 접근할 수 있도록 하는 프로덕션급 MCP 서버입니다.

목적

MCP 생태계는 단일 목적의 튜토리얼과 특정 벤더에 종속된 어댑터들로 가득 차 있습니다. 일상적인 개발 도구로 사용할 수 있는, 잘 관리되고 다중 도구를 지원하며 프레임워크에 구애받지 않는 프로덕션 품질의 MCP 패키지는 부족한 실정입니다.

mcp-devtools는 14개의 도구, 3개의 MCP 리소스, 4개의 MCP 프롬프트, 플러그인 API, 두 가지 전송 모드(stdio + 인증이 포함된 HTTP), 그리고 감사 로그를 제공하여 이러한 공백을 메웁니다. 이는 DailyBot의 프로덕션 환경에서 검증된 패턴을 기반으로 구축되었습니다.

Related MCP server: GPT Commander

빠른 시작

stdio (기본값)

npx @oscarmarin/mcp-devtools

Claude Desktop 설정(~/Library/Application Support/Claude/claude_desktop_config.json)에 추가하세요:

{
  "mcpServers": {
    "devtools": {
      "command": "npx",
      "args": ["-y", "@oscarmarin/mcp-devtools"]
    }
  }
}

또는 Cursor (~/.cursor/mcp.json)에 동일한 블록을 추가하세요.

HTTP 전송

프로젝트 루트에 mcp-devtools.json 파일을 생성하세요:

{
  "transport": "http",
  "port": 3333,
  "auth": {
    "token": "env:MCP_AUTH_TOKEN"
  }
}

그런 다음 서버를 시작하세요:

npx @oscarmarin/mcp-devtools

MCP 엔드포인트는 http://localhost:3333에서 사용할 수 있습니다.

도구

그룹

도구

파일 시스템

read_file, write_file, list_directory, search_files, get_file_info

데이터베이스

query_db, list_tables, describe_table

프로세스

run_command, read_logs, get_env, list_processes

OpenAPI

parse_openapi, call_api

도구별 참조: docs/tools/.

MCP 리소스

이 서버는 MCP 리소스를 통해 읽기 전용 데이터를 노출합니다:

URI

설명

devtools://tools

스키마를 포함한 모든 등록된 도구 카탈로그

devtools://server-info

서버 버전, 전송 방식, 범위, 도구 개수

MCP 프롬프트

일반적인 개발 워크플로우를 위한 엄선된 프롬프트 템플릿입니다:

프롬프트

설명

debug_error

mcp-devtools 도구를 사용하여 체계적으로 오류 디버깅

code_review

파일의 버그, 보안 문제 및 코드 품질 검토

explore_codebase

프로젝트 구조 및 규칙 탐색 및 이해

refactor_function

가독성, 성능 또는 테스트 용이성을 위해 함수 리팩토링

플러그인 API

포크(fork) 없이 사용자 정의 도구로 mcp-devtools를 확장하세요.

설정 기반(시작 시 로드):

{
  "plugins": ["./my-tools.js", "@scope/mcp-plugin-foo"]
}

각 플러그인 모듈은 도구 정의 배열을 기본으로 내보냅니다(default-export):

import { defineTool } from "@oscarmarin/mcp-devtools";
import { z } from "zod";

export default [
  defineTool({
    name: "my_tool",
    description: "Does something useful",
    inputSchema: z.object({ input: z.string() }),
    handler: async (args, config) => ({
      ok: true,
      data: { result: args.input.toUpperCase() },
    }),
  }),
];

설정

설정은 mcp-devtools.json, .mcp-devtoolsrc 또는 package.json의 mcpDevtools 키에서 cosmiconfig를 통해 로드됩니다. 전체 스키마는 mcp-devtools.example.json 및 docs/configuration.md를 참조하세요.

설정 없이도 사용할 수 있습니다: 설정 없이 npx @oscarmarin/mcp-devtools를 실행하면 스키마 기본값이 사용됩니다(RNF-05).

보안

우회할 수 없는 네 가지 제어 장치:

  1. 파일 시스템 범위 제한. 모든 경로는 절대 경로로 확인되며 config.scope와 비교됩니다. 범위를 벗어나는 심볼릭 링크는 SCOPE_VIOLATION 오류를 발생시킵니다.

  2. 명령어 허용 목록. run_command는 basename이 allowedCommands에 포함된 바이너리만 실행합니다. 호출 시 spawn(file, args)를 사용(쉘 미사용)하므로 명령어 인수를 통한 쉘 인젝션은 구조적으로 불가능합니다.

  3. 데이터베이스 읽기 전용 모드. readOnly: true일 경우 모든 SQL이 파싱되며 INSERT/UPDATE/DELETE/DROP/CREATE/GRANT는 거부됩니다. 쿼리는 PostgreSQL에서 BEGIN READ ONLY ... ROLLBACK으로 실행됩니다.

  4. HTTP Bearer 인증. auth.token이 설정된 경우 모든 HTTP 요청에는 Authorization: Bearer <token>이 포함되어야 합니다. 비교는 타이밍 공격을 방지하기 위해 crypto.timingSafeEqual을 사용합니다.

추가 안전 조치:

  • 감사 로그. 모든 도구 호출에 대해 타이밍, 정제된 입력, 결과 상태를 포함하는 선택적 NDJSON 로그를 제공합니다.

  • 비밀값 마스킹. get_env는 일반적인 비밀 패턴(SECRET, TOKEN, PASSWORD, KEY 등)과 일치하는 값을 자동으로 마스킹합니다.

  • OpenAPI 호스트 제한. call_api는 사양의 servers 배열에 나열된 호스트로만 요청을 보냅니다.

  • 출력 제한. 모든 도구는 컨텍스트 과부하를 방지하기 위해 출력을 제한합니다(명령어 100KB, 파일 1MB, 쿼리 200행).

기여하기

git clone https://github.com/marin1321/mcp-devtools.git
cd mcp-devtools
npm install
npm run dev       # tsup --watch
npm run test      # vitest
npm run typecheck # tsc --noEmit
npm run lint      # eslint .

전체 워크플로우는 CONTRIBUTING.md를, 커뮤니티 가이드라인은 CODE_OF_CONDUCT.md를 참조하세요.

라이선스

MIT © Oscar Humberto Marin Molina — oscarmarindev.com

Available Tools

15 tools
call_apiCall APIC

Invoke an operation defined in an OpenAPI spec.

Inputs: specPath (required), operationId (required), pathParams, queryParams, +2 more.

describe_tableDescribe tableC

Return column metadata for a table in a configured database connection.

Inputs: table (required), connection, schema.

echo_testEcho testA

Returns the provided message and a server-side ISO timestamp. Used to verify the MCP server pipeline end-to-end.

Inputs: message (required).

get_envGet environmentC

Return environment variables (process env or .env file) with optional masking.

Inputs: source, path, keys, maskSecrets.

get_file_infoGet file infoA

Return metadata (size, type, MIME, line count, symlink info) for a file or directory.

Inputs: path (required).

list_directoryList directoryC

List directory entries inside the configured scope, with optional recursion and glob filtering.

Inputs: path, depth, glob, includeHidden.

list_processesList processesB

List running processes, optionally filtered by name or listening port.

Inputs: name, port, limit.

list_tablesList tablesC

List tables in a configured database connection.

Inputs: connection, schema.

parse_openapiParse OpenAPIB

Parse an OpenAPI spec and return a summary of operations.

Inputs: path (required).

query_dbQuery databaseC

Execute a parameterized SQL query against a configured database connection. Read-only by default.

Inputs: sql (required), connection, params, timeoutMs, +1 more.

read_fileRead fileB

Read a text file inside the configured scope. Optionally restrict to a line range.

Inputs: path (required), startLine, endLine.

read_logsRead logsC

Read the tail of a configured log file with optional filter.

Inputs: path (required), tail, filter, jsonField.

run_commandRun commandC

Spawn a process from the configured allowedCommands list. Captures stdout/stderr with caps and a timeout.

Inputs: command (required), args, cwd, timeoutMs, +1 more.

search_filesSearch filesC

Search for a pattern (literal or regex) across files inside the configured scope.

Inputs: pattern (required), path, glob, regex, +4 more.

write_fileWrite fileA

Write a file atomically inside the configured scope (writes to a temp file then renames).

Inputs: path (required), content (required), encoding, createDirs.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool targets a distinct operation: database metadata vs query, file read vs write vs listing vs search, process listing vs command execution, API calling vs spec parsing, etc. No two tools have overlapping purposes.

    Naming Consistency5/5

    All tools follow a verb_noun pattern in snake_case (e.g., list_directory, read_file, query_db). The verbs vary but are appropriate for the action, and the naming is uniform throughout.

    Tool Count4/5

    15 tools is slightly broad for a devtools server covering databases, files, processes, APIs, logs, and environment variables, but each tool has a clear role and the count is not excessive for a general-purpose utility server.

    Completeness3/5

    Core developer utilities are covered (file ops, database queries, command execution, API handling), but there are gaps like no process kill, no file editing, no HTTP utilities, and database is read-only. The set feels like a curated collection rather than a comprehensive toolkit.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      Open-source, local macOS MCP server for AI agents. Automate background Safari/Chrome tabs, native apps, files and shell with scoped permissions, optional approvals and delegated coding agents.
      97
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives your AI assistant full awareness of your local dev environment — running processes, Docker containers, git state, open ports, log files, and more.
      8 npm
      1
      MIT