loading…
Search for a command to run...
loading…
Production-grade MCP server that gives AI agents safe access to your local dev environment: filesystem, databases, processes, and OpenAPI specs.
Production-grade MCP server that gives AI agents safe access to your local dev environment: filesystem, databases, processes, and OpenAPI specs.
npm version CI License: MIT Node.js
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.
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, 3 MCP Resources,
4 MCP Prompts, a Plugin API, two transport modes (stdio + HTTP
with auth), and an audit log — built on patterns refined in production
at DailyBot.
npx @oscarmarin/mcp-devtools
Add it to Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"devtools": {
"command": "npx",
"args": ["-y", "@oscarmarin/mcp-devtools"]
}
}
}
Or Cursor (~/.cursor/mcp.json): same block.
Create a mcp-devtools.json in your project root:
{
"transport": "http",
"port": 3333,
"auth": {
"token": "env:MCP_AUTH_TOKEN"
}
}
Then start the server:
npx @oscarmarin/mcp-devtools
The MCP endpoint will be available at http://localhost:3333.
| Group | Tools |
|---|---|
| Filesystem | read_file, write_file, list_directory, search_files, get_file_info |
| Database | query_db, list_tables, describe_table |
| Process | run_command, read_logs, get_env, list_processes |
| OpenAPI | parse_openapi, call_api |
Per-tool reference: docs/tools/.
The server exposes read-only data via MCP Resources:
| URI | Description |
|---|---|
devtools://tools |
Catalog of all registered tools with schemas |
devtools://server-info |
Server version, transport, scope, tool count |
Curated prompt templates for common development workflows:
| Prompt | Description |
|---|---|
debug_error |
Systematically debug an error using mcp-devtools tools |
code_review |
Review a file for bugs, security issues, and code quality |
explore_codebase |
Explore and understand a project's structure and conventions |
refactor_function |
Refactor a function for readability, performance, or testability |
Extend mcp-devtools with custom tools — no fork required.
Config-based (load at startup):
{
"plugins": ["./my-tools.js", "@scope/mcp-plugin-foo"]
}
Each plugin module default-exports an array of tool definitions:
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() },
}),
}),
];
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 @oscarmarin/mcp-devtools with no config uses
schema defaults (RNF-05).
Four non-bypassable controls:
config.scope. Symlinks that escape scope throw
SCOPE_VIOLATION.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.readOnly: true, all SQL is parsed and
INSERT/UPDATE/DELETE/DROP/CREATE/GRANT are rejected. Queries run in
BEGIN READ ONLY ... ROLLBACK on PostgreSQL.auth.token is configured, every HTTP request
must include Authorization: Bearer <token>. Comparison uses
crypto.timingSafeEqual to prevent timing attacks.Additional safety measures:
get_env automatically masks values matching common
secret patterns (SECRET, TOKEN, PASSWORD, KEY, etc.).call_api only sends requests to hosts listed
in the spec's servers array.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 .
See CONTRIBUTING.md for the full workflow and CODE_OF_CONDUCT.md for community guidelines.
MIT © Oscar Humberto Marin Molina — oscarmarindev.com
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"mcp-devtools": {
"command": "npx",
"args": []
}
}
}