DevUtils MCP Server

36 everyday developer tools for any MCP-compatible AI assistant. Hashing, encoding, UUID generation, JWT decoding, JSON formatting, network tools, text utilities, and more — all local, no external APIs.

Think of it as busybox for developer tools — small, essential, and always useful.

Also available as a plugin: devutils-cursor-plugin — one-click install for Cursor and Claude Code.


Why?

Every developer needs to hash strings, encode/decode data, generate UUIDs, decode JWTs, format JSON, calculate CIDR ranges, and convert timestamps every day. DevUtils MCP Server brings all of these tools directly into your AI assistant — works with Claude, Cursor, VS Code, Windsurf, and any other MCP-compatible client.


Installation

Prerequisite: Node.js 18+ (Node 22 recommended). Verify with node -v.

One-click / plugin

Use the Add to Cursor / VS Code badges above, or install the plugin:

/plugin marketplace add paladini/devutils-cursor-plugin
/plugin install devutils-mcp@devutils-cursor-plugin

Cursor: Settings → Customize, or add from GitHub paladini/devutils-cursor-plugin.

npx (no install)

npx -y devutils-mcp-server

npm

npm install -g devutils-mcp-server
devutils-mcp-server

Docker

# Published image (when available)
docker run -i --rm ghcr.io/paladini/devutils-mcp-server

# Or build locally
docker build -t devutils-mcp-server .
docker run -i --rm devutils-mcp-server

# Or with Compose
docker compose build
docker compose run --rm -i devutils-mcp

Official MCP Registry

Listed as io.github.paladini/devutils-mcp-server. Search for io.github.paladini/devutils.

GitHub Packages

Releases are dual-published to npm and GitHub Packages as @paladini/devutils-mcp-server (see .github/workflows/release.yml). Prefer the public npm package for most installs; use GitHub Packages when you already authenticate against npm.pkg.github.com.

# After authenticating to npm.pkg.github.com for the @paladini scope:
npx -y @paladini/devutils-mcp-server

Smithery

Also available on Smithery.


Client setup

Cursor

One-click: use the Add to Cursor badge at the top of this README.

Plugin (recommended): Install DevUtils MCP from Cursor Settings → Customize.

Manual: Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "devutils": {
      "command": "npx",
      "args": ["-y", "devutils-mcp-server"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "devutils": {
      "command": "npx",
      "args": ["-y", "devutils-mcp-server"]
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "devutils": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/paladini/devutils-mcp-server"]
    }
  }
}

Claude Code

/plugin marketplace add paladini/devutils-cursor-plugin
/plugin install devutils-mcp@devutils-cursor-plugin

VS Code (GitHub Copilot)

One-click: use the VS Code badge at the top, or add to .vscode/mcp.json / user settings:

{
  "servers": {
    "devutils": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "devutils-mcp-server"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "devutils": {
      "command": "npx",
      "args": ["-y", "devutils-mcp-server"]
    }
  }
}

Docker MCP Toolkit (Docker Desktop)

If this server is available in the Docker MCP Catalog:

  1. Open Docker Desktop → MCP Toolkit
  2. Search for DevUtils
  3. Click Enable

Local development

npm install
npm run dev

Available tools (36)

Hash (6)

Tool Description
hash_md5 Generate MD5 hash
hash_sha1 Generate SHA-1 hash
hash_sha256 Generate SHA-256 hash
hash_sha512 Generate SHA-512 hash
hash_bcrypt Generate bcrypt hash (configurable rounds)
hash_bcrypt_verify Verify string against bcrypt hash

Encoding (8)

Tool Description
base64_encode Encode string to Base64
base64_decode Decode Base64 to string
url_encode URL-encode (percent-encoding)
url_decode Decode URL-encoded string
html_encode Encode HTML entities
html_decode Decode HTML entities
hex_encode Encode string to hex
hex_decode Decode hex to string

Generators (4)

Tool Description
generate_uuid Cryptographic UUID v4 (batch support)
generate_nanoid Compact URL-friendly ID (configurable length)
generate_password Secure password (configurable complexity)
generate_random_hex Random hex string (configurable length)

JWT (2)

Tool Description
jwt_decode Decode JWT header & payload (with human-readable dates)
jwt_validate Validate JWT structure & expiration

Formatters (3)

Tool Description
json_format Pretty-print or minify JSON
json_validate Validate JSON with error location
json_path_query Extract values using dot-notation path

Converters (5)

Tool Description
timestamp_to_date Unix timestamp → human date (timezone support)
date_to_timestamp Date string → Unix timestamp
number_base_convert Convert between bases (bin/oct/dec/hex/any)
color_convert Convert colors (HEX ↔ RGB ↔ HSL)
byte_convert Convert byte units (B/KB/MB/GB/TB/PB)

Network (2)

Tool Description
cidr_calculate CIDR → network, broadcast, mask, host range, host count
ip_validate Validate & classify IPv4/IPv6 address

Text (6)

Tool Description
text_stats Character/word/line/sentence count, reading time
lorem_ipsum Generate placeholder text
case_convert Convert between camelCase, snake_case, PascalCase, etc.
slugify Convert string to URL-friendly slug
regex_test Test regex pattern against input
text_diff Line-by-line diff between two texts

Architecture

src/
├── index.ts          # MCP server entry point (stdio transport)
└── tools/
    ├── hash.ts       # Cryptographic hash functions
    ├── encoding.ts   # Encode/decode utilities
    ├── generators.ts # ID and password generators
    ├── jwt.ts        # JWT decode and validation
    ├── formatters.ts # JSON formatting and querying
    ├── converters.ts # Data type and unit converters
    ├── network.ts    # Network calculation utilities
    └── text.ts       # Text analysis and manipulation

Tech stack: TypeScript + Node.js 22 · @modelcontextprotocol/sdk · bcryptjs · nanoid · zod

Zero external API dependencies. All tools run locally with no network calls.


Docker

The image uses a multi-stage build for minimal size:

  1. Build stage: Compiles TypeScript on Node 22 Alpine
  2. Runtime stage: Runs compiled JS on Node 22 Alpine as a non-root user
docker build -t devutils-mcp-server .

# Smoke-test with an MCP initialize request
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | docker run -i --rm devutils-mcp-server

FAQ & design philosophy

Why MCP, and not just a library?

Valid criticism: If you're writing Python scripts and need to hash something, hashlib is 2 lines of code. Why run MCP overhead?

Answer: This server is optimized for AI agents in multi-step workflows, not programmers writing code:

  1. AI hallucination cost >> MCP overhead — An AI model spending 50ms calling an MCP tool (vs. 1ms library call) is negligible when the alternative is the model making up a hash or using the wrong encoding.
  2. Reliable tool semantics — MCP enforces strict tool contracts. For example, jwt_decode always returns human-readable dates with timezone support.
  3. Universally accessible — Any MCP-compatible client can use these tools. A Python library only works if your agent is Python-based.
  4. Multi-tenant safety — MCP provides explicit tool whitelisting with input validation.

When to use DevUtils versus alternatives

Use DevUtils if:

  • You're using Claude, Cursor, VS Code Copilot, Windsurf, or any MCP-compatible AI assistant
  • You want reliable, validated utility operations in AI workflows
  • You need 36 tools in one package

Don't use DevUtils if:

  • You're writing regular application code (use native libraries)
  • You need extreme performance (direct library calls are faster)
  • Your AI client does not support MCP

Design philosophy

  • Small & focused: 36 utilities, zero external APIs, ~50MB container
  • Security-first: Non-root user, Alpine Linux, minimal attack surface
  • AI-friendly: Consistent naming (<domain>_<operation>), strict schemas, human-readable outputs
  • Client-agnostic: Works with any MCP-compatible client via stdio transport

Available on

Channel Link
Official MCP Registry io.github.paladini/devutils-mcp-serverregistry.modelcontextprotocol.io
npm devutils-mcp-server
GitHub Packages @paladini/devutils-mcp-server (dual-publish on release tags)
GHCR (Docker) ghcr.io/paladini/devutils-mcp-server
Glama glama.ai/mcp/servers/paladini/devutils-mcp-server
Smithery smithery.ai/server/devutils-mcp-server
Cursor / Claude plugin devutils-cursor-plugin

Contributing

Questions and ideas: GitHub Discussions

Security reports: see SECURITY.md.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feat/amazing-tool)
  3. Commit your changes (git commit -m 'feat: add amazing tool')
  4. Push to the branch (git push origin feat/amazing-tool)
  5. Open a Pull Request

See CHANGELOG.md.


License

MIT © Fernando Paladini