devutils-mcp-server

An open-source DevUtils MCP Server β€” a comprehensive developer utilities toolkit for the Docker MCP Catalog. It provides 36 tools across 8 categories that AI assistants can invoke directly.

πŸ› οΈ 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.

License: MIT MCP Docker npm Glama smithery badge


🎯 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.

Think of it as busybox for developer tools β€” small, essential, and always useful.


πŸ“¦ Quick Start

Option 1 β€” npx (no install)

npx devutils-mcp-server

Option 2 β€” Docker

# Pull and run
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

Option 3 β€” Local install

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

βš™οΈ Client Setup

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": ["devutils-mcp-server"]
    }
  }
}

Or with Docker:

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

Cursor

Add to your Cursor MCP settings (~/.cursor/mcp.json):

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

VS Code (GitHub Copilot)

Add to your .vscode/mcp.json in the workspace, or to your user settings:

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

Windsurf

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

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

Docker MCP Toolkit (Docker Desktop)

If this server is available in the Docker MCP Catalog, you can enable it directly from Docker Desktop:

  1. Open Docker Desktop β†’ MCP Toolkit
  2. Search for DevUtils
  3. Click Enable

Local Development

npm install
npm run dev

πŸ”§ Available Tools (36 total)

πŸ” Hash Tools (6)

ToolDescription
hash_md5Generate MD5 hash
hash_sha1Generate SHA-1 hash
hash_sha256Generate SHA-256 hash
hash_sha512Generate SHA-512 hash
hash_bcryptGenerate bcrypt hash (configurable rounds)
hash_bcrypt_verifyVerify string against bcrypt hash

πŸ”„ Encoding Tools (8)

ToolDescription
base64_encodeEncode string to Base64
base64_decodeDecode Base64 to string
url_encodeURL-encode (percent-encoding)
url_decodeDecode URL-encoded string
html_encodeEncode HTML entities
html_decodeDecode HTML entities
hex_encodeEncode string to hex
hex_decodeDecode hex to string

🎲 Generator Tools (4)

ToolDescription
generate_uuidCryptographic UUID v4 (batch support)
generate_nanoidCompact URL-friendly ID (configurable length)
generate_passwordSecure password (configurable complexity)
generate_random_hexRandom hex string (configurable length)

πŸ”‘ JWT Tools (2)

ToolDescription
jwt_decodeDecode JWT header & payload (with human-readable dates)
jwt_validateValidate JWT structure & expiration

πŸ“ Formatter Tools (3)

ToolDescription
json_formatPretty-print or minify JSON
json_validateValidate JSON with error location
json_path_queryExtract values using dot-notation path

πŸ”’ Converter Tools (5)

ToolDescription
timestamp_to_dateUnix timestamp β†’ human date (timezone support)
date_to_timestampDate string β†’ Unix timestamp
number_base_convertConvert between bases (bin/oct/dec/hex/any)
color_convertConvert colors (HEX ↔ RGB ↔ HSL)
byte_convertConvert byte units (B/KB/MB/GB/TB/PB)

🌐 Network Tools (2)

ToolDescription
cidr_calculateCIDR β†’ network, broadcast, mask, host range, host count
ip_validateValidate & classify IPv4/IPv6 address

✏️ Text Tools (6)

ToolDescription
text_statsCharacter/word/line/sentence count, reading time
lorem_ipsumGenerate placeholder text
case_convertConvert between camelCase, snake_case, PascalCase, etc.
slugifyConvert string to URL-friendly slug
regex_testTest regex pattern against input
text_diffLine-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 β€” Official MCP SDK
  • bcryptjs β€” Password hashing
  • nanoid β€” Compact ID generation
  • zod β€” Input validation

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 non-root user
# Build
docker build -t devutils-mcp-server .

# Test (send 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. A wrong hash β†’ debugging time β†’ 1000x worse than overhead.

  2. Reliable tool semantics
    Libraries let the model do anything (import, call, write loops). MCP enforces strict tool contracts. For example, jwt_decode always returns human-readable dates with timezone support β€” no model confusion about Unix epoch interpretation.

  3. Universally accessible
    Any MCP-compatible client (Claude, Cursor, VS Code Copilot, Windsurf, and more) can use these tools. A Python library only works if your agent is Python-based.

  4. Multi-tenant safety
    In production systems, letting AI agents run arbitrary library code is a security risk. 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 your AI workflows
  • You need 36+ tools in one package (vs. learning 8 different tool specs)
  • You want educational reference implementations of common algorithms

Don't use DevUtils if:

  • You're writing regular Python/Node/Go code (use native libraries like hashlib, crypto)
  • You need extreme performance (direct library calls are 1000x 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
  • Battle-tested: Each tool references standard implementations (zod validation, bcryptjs hashing, etc.)

πŸ“ Contributing

  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

πŸ“„ License

MIT Β© Fernando Paladini

Related Servers