mcp-devtools

AI-native developer tools via Model Context Protocol.
A production-grade MCP server that gives AI agents (Claude, Cursor, Copilot, Continue, …)
safe, scoped access to your local development environment.
⚠️ Status: Phase 0 — pre-MVP scaffolding. v0.1.0 is targeted for Phase 2.
Tool implementations land in Phase 1.
Why
The MCP ecosystem is full of single-purpose tutorials and vendor-locked
adapters. There is no well-maintained, multi-tool, framework-agnostic,
production-quality MCP package for everyday developer tooling.
mcp-devtools fills that gap with 14 tools across 4 categories (filesystem,
database, process, OpenAPI), built on patterns refined in production at
DailyBot: retry with jitter, structured logging,
typed error taxonomy, version stamps, exponential backoff.
Quick start
Phase 0 stub — the server is wired end-to-end but tool implementations are
still in progress.
npx mcp-devtools
Add it to Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"devtools": {
"command": "npx",
"args": ["-y", "mcp-devtools"]
}
}
}
Or Cursor (~/.cursor/mcp.json): same block.
Tools
| Filesystem | read_file, write_file, list_directory, search_files, get_file_info | stubbed |
| Database | query_db, list_tables, describe_table | stubbed |
| Process | run_command, read_logs, get_env | stubbed |
| OpenAPI | parse_openapi, call_api | stubbed |
Per-tool reference: docs/tools/.
Configuration
Configuration is loaded by cosmiconfig
from mcp-devtools.json, .mcp-devtoolsrc, or the mcpDevtools key in
package.json. See mcp-devtools.example.json
and docs/configuration.md for the full schema.
Zero-config is supported: running npx mcp-devtools with no config uses
schema defaults (RNF-05).
Security
Three non-bypassable controls:
- Filesystem scope boundary. Every path is resolved to an absolute and
compared against
config.scope. Symlinks that escape scope throw
SCOPE_VIOLATION.
- Command allowlist.
run_command only executes binaries whose basename
is in allowedCommands. Invocation uses spawn(file, args) (no shell), so
shell-injection via the command argument is structurally impossible.
- Database read-only mode. When
readOnly: true, all SQL is parsed and
INSERT/UPDATE/DELETE/DROP/CREATE/GRANT are rejected. Result sets are
capped (default 200 rows). Queries run in BEGIN READ ONLY ... ROLLBACK
on PostgreSQL.
Development
nvm use
npm install
cp .env.example .env
npm run dev
npm run test
npm run typecheck
npm run lint
See CONTRIBUTING.md for the full workflow.
License
MIT © Oscar Humberto Marín Molina —
oscarmarindev.com