{
  "markdown": "<p align=\"center\">\n  <a href=\"https://paladini.io/harness-score/guide/maturity-model#l0-%C2%B7-unharnessed\" title=\"Harness Score — AI coding harness maturity\"><img alt=\"Harness Score L0 (Unharnessed): measures AI-assisted development harness maturity with harness-score\" src=\"https://paladini.github.io/harness-score/maturity/badge-l0.svg\" height=\"20\"></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/logo.svg\" alt=\"DevUtils MCP Server logo\" width=\"96\">\n</p>\n\n# DevUtils MCP Server\n\n**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.\n\nThink of it as **`busybox` for developer tools** — small, essential, and always useful.\n\n<p align=\"center\">\n  <a href=\"https://opensource.org/licenses/MIT\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"></a>\n  <a href=\"https://modelcontextprotocol.io\"><img alt=\"MCP\" src=\"https://img.shields.io/badge/MCP-compatible-green\"></a>\n  <a href=\"https://www.npmjs.com/package/devutils-mcp-server\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/devutils-mcp-server.svg\"></a>\n  <a href=\"https://github.com/paladini/devutils-mcp-server/blob/main/Dockerfile\"><img alt=\"Docker\" src=\"https://img.shields.io/badge/Docker-ready-blue\"></a>\n  <a href=\"https://glama.ai/mcp/servers/paladini/devutils-mcp-server\"><img alt=\"Glama\" src=\"https://glama.ai/mcp/servers/paladini/devutils-mcp-server/badges/score.svg\"></a>\n  <a href=\"https://smithery.ai/server/devutils-mcp-server\"><img alt=\"Smithery\" src=\"https://smithery.ai/badge/devutils-mcp-server\"></a>\n  <a href=\"https://registry.modelcontextprotocol.io\"><img alt=\"MCP Registry\" src=\"https://img.shields.io/badge/MCP_Registry-io.github.paladini%2Fdevutils--mcp--server-blue\"></a>\n  <a href=\"https://github.com/paladini/devutils-mcp-server/stargazers\"><img alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/paladini/devutils-mcp-server?style=social\"></a>\n</p>\n\n**Also available as a plugin:** [devutils-cursor-plugin](https://github.com/paladini/devutils-cursor-plugin) — one-click install for Cursor and Claude Code.\n\n<p align=\"center\">\n  <a href=\"https://cursor.com/install-mcp?name=devutils&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImRldnV0aWxzLW1jcC1zZXJ2ZXIiXX0=\">\n    <img src=\"https://cursor.com/deeplink/mcp-install-dark.svg\" alt=\"Add DevUtils to Cursor\" height=\"32\">\n  </a>\n  &nbsp;&nbsp;\n  <a href=\"vscode:mcp/install?%7B%22name%22%3A%22devutils%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22devutils-mcp-server%22%5D%7D\">\n    <img src=\"https://img.shields.io/badge/VS_Code-Install_MCP-007ACC?style=for-the-badge&logo=visualstudiocode\" alt=\"Install DevUtils in VS Code\" height=\"32\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/demo.gif\" alt=\"DevUtils MCP Server demo — UUID generation, JWT decode, JSON validation\" width=\"720\">\n</p>\n\n---\n\n## Why?\n\nEvery 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.\n\n---\n\n## Installation\n\n> **Prerequisite:** [Node.js](https://nodejs.org/) 18+ (Node 22 recommended). Verify with `node -v`.\n\n### One-click / plugin\n\nUse the **Add to Cursor** / **VS Code** badges above, or install the plugin:\n\n```text\n/plugin marketplace add paladini/devutils-cursor-plugin\n/plugin install devutils-mcp@devutils-cursor-plugin\n```\n\nCursor: **Settings → Customize**, or add from GitHub `paladini/devutils-cursor-plugin`.\n\n### npx (no install)\n\n```bash\nnpx -y devutils-mcp-server\n```\n\n### npm\n\n```bash\nnpm install -g devutils-mcp-server\ndevutils-mcp-server\n```\n\n### Docker\n\n```bash\n# Published image (when available)\ndocker run -i --rm ghcr.io/paladini/devutils-mcp-server\n\n# Or build locally\ndocker build -t devutils-mcp-server .\ndocker run -i --rm devutils-mcp-server\n\n# Or with Compose\ndocker compose build\ndocker compose run --rm -i devutils-mcp\n```\n\n### Official MCP Registry\n\nListed as [`io.github.paladini/devutils-mcp-server`](https://registry.modelcontextprotocol.io). Search for `io.github.paladini/devutils`.\n\n### GitHub Packages\n\nReleases are dual-published to npm and GitHub Packages as [`@paladini/devutils-mcp-server`](https://github.com/paladini/devutils-mcp-server/pkgs/npm/devutils-mcp-server) (see [`.github/workflows/release.yml`](.github/workflows/release.yml)). Prefer the public npm package for most installs; use GitHub Packages when you already authenticate against `npm.pkg.github.com`.\n\n```bash\n# After authenticating to npm.pkg.github.com for the @paladini scope:\nnpx -y @paladini/devutils-mcp-server\n```\n\n### Smithery\n\nAlso available on [Smithery](https://smithery.ai/server/devutils-mcp-server).\n\n---\n\n## Client setup\n\n### Cursor\n\n**One-click:** use the **Add to Cursor** badge at the top of this README.\n\n**Plugin (recommended):** Install [DevUtils MCP](https://github.com/paladini/devutils-cursor-plugin) from **Cursor Settings → Customize**.\n\n**Manual:** Add to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"devutils\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"devutils-mcp-server\"]\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"devutils\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"devutils-mcp-server\"]\n    }\n  }\n}\n```\n\nOr with Docker:\n\n```json\n{\n  \"mcpServers\": {\n    \"devutils\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"ghcr.io/paladini/devutils-mcp-server\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```text\n/plugin marketplace add paladini/devutils-cursor-plugin\n/plugin install devutils-mcp@devutils-cursor-plugin\n```\n\n### VS Code (GitHub Copilot)\n\n**One-click:** use the VS Code badge at the top, or add to `.vscode/mcp.json` / user settings:\n\n```json\n{\n  \"servers\": {\n    \"devutils\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"devutils-mcp-server\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"devutils\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"devutils-mcp-server\"]\n    }\n  }\n}\n```\n\n### Docker MCP Toolkit (Docker Desktop)\n\nIf this server is available in the [Docker MCP Catalog](https://hub.docker.com/mcp):\n\n1. Open **Docker Desktop → MCP Toolkit**\n2. Search for **DevUtils**\n3. Click **Enable**\n\n### Local development\n\n```bash\nnpm install\nnpm run dev\n```\n\n---\n\n## Available tools (36)\n\n### Hash (6)\n\n| Tool | Description |\n|------|-------------|\n| `hash_md5` | Generate MD5 hash |\n| `hash_sha1` | Generate SHA-1 hash |\n| `hash_sha256` | Generate SHA-256 hash |\n| `hash_sha512` | Generate SHA-512 hash |\n| `hash_bcrypt` | Generate bcrypt hash (configurable rounds) |\n| `hash_bcrypt_verify` | Verify string against bcrypt hash |\n\n### Encoding (8)\n\n| Tool | Description |\n|------|-------------|\n| `base64_encode` | Encode string to Base64 |\n| `base64_decode` | Decode Base64 to string |\n| `url_encode` | URL-encode (percent-encoding) |\n| `url_decode` | Decode URL-encoded string |\n| `html_encode` | Encode HTML entities |\n| `html_decode` | Decode HTML entities |\n| `hex_encode` | Encode string to hex |\n| `hex_decode` | Decode hex to string |\n\n### Generators (4)\n\n| Tool | Description |\n|------|-------------|\n| `generate_uuid` | Cryptographic UUID v4 (batch support) |\n| `generate_nanoid` | Compact URL-friendly ID (configurable length) |\n| `generate_password` | Secure password (configurable complexity) |\n| `generate_random_hex` | Random hex string (configurable length) |\n\n### JWT (2)\n\n| Tool | Description |\n|------|-------------|\n| `jwt_decode` | Decode JWT header & payload (with human-readable dates) |\n| `jwt_validate` | Validate JWT structure & expiration |\n\n### Formatters (3)\n\n| Tool | Description |\n|------|-------------|\n| `json_format` | Pretty-print or minify JSON |\n| `json_validate` | Validate JSON with error location |\n| `json_path_query` | Extract values using dot-notation path |\n\n### Converters (5)\n\n| Tool | Description |\n|------|-------------|\n| `timestamp_to_date` | Unix timestamp → human date (timezone support) |\n| `date_to_timestamp` | Date string → Unix timestamp |\n| `number_base_convert` | Convert between bases (bin/oct/dec/hex/any) |\n| `color_convert` | Convert colors (HEX ↔ RGB ↔ HSL) |\n| `byte_convert` | Convert byte units (B/KB/MB/GB/TB/PB) |\n\n### Network (2)\n\n| Tool | Description |\n|------|-------------|\n| `cidr_calculate` | CIDR → network, broadcast, mask, host range, host count |\n| `ip_validate` | Validate & classify IPv4/IPv6 address |\n\n### Text (6)\n\n| Tool | Description |\n|------|-------------|\n| `text_stats` | Character/word/line/sentence count, reading time |\n| `lorem_ipsum` | Generate placeholder text |\n| `case_convert` | Convert between camelCase, snake_case, PascalCase, etc. |\n| `slugify` | Convert string to URL-friendly slug |\n| `regex_test` | Test regex pattern against input |\n| `text_diff` | Line-by-line diff between two texts |\n\n---\n\n## Architecture\n\n```\nsrc/\n├── index.ts          # MCP server entry point (stdio transport)\n└── tools/\n    ├── hash.ts       # Cryptographic hash functions\n    ├── encoding.ts   # Encode/decode utilities\n    ├── generators.ts # ID and password generators\n    ├── jwt.ts        # JWT decode and validation\n    ├── formatters.ts # JSON formatting and querying\n    ├── converters.ts # Data type and unit converters\n    ├── network.ts    # Network calculation utilities\n    └── text.ts       # Text analysis and manipulation\n```\n\n**Tech stack:** TypeScript + Node.js 22 · [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk) · `bcryptjs` · `nanoid` · `zod`\n\n**Zero external API dependencies.** All tools run locally with no network calls.\n\n---\n\n## Docker\n\nThe image uses a multi-stage build for minimal size:\n\n1. **Build stage:** Compiles TypeScript on Node 22 Alpine\n2. **Runtime stage:** Runs compiled JS on Node 22 Alpine as a non-root user\n\n```bash\ndocker build -t devutils-mcp-server .\n\n# Smoke-test with an MCP initialize request\necho '{\"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\n```\n\n---\n\n## FAQ & design philosophy\n\n### Why MCP, and not just a library?\n\n**Valid criticism:** If you're writing Python scripts and need to hash something, `hashlib` is 2 lines of code. Why run MCP overhead?\n\n**Answer:** This server is optimized for **AI agents** in multi-step workflows, not programmers writing code:\n\n1. **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.\n2. **Reliable tool semantics** — MCP enforces strict tool contracts. For example, `jwt_decode` *always* returns human-readable dates with timezone support.\n3. **Universally accessible** — Any MCP-compatible client can use these tools. A Python library only works if your agent is Python-based.\n4. **Multi-tenant safety** — MCP provides explicit tool whitelisting with input validation.\n\n### When to use DevUtils versus alternatives\n\n**Use DevUtils if:**\n- You're using Claude, Cursor, VS Code Copilot, Windsurf, or any MCP-compatible AI assistant\n- You want reliable, validated utility operations in AI workflows\n- You need 36 tools in one package\n\n**Don't use DevUtils if:**\n- You're writing regular application code (use native libraries)\n- You need extreme performance (direct library calls are faster)\n- Your AI client does not support MCP\n\n### Design philosophy\n\n- **Small & focused:** 36 utilities, zero external APIs, ~50MB container\n- **Security-first:** Non-root user, Alpine Linux, minimal attack surface\n- **AI-friendly:** Consistent naming (`<domain>_<operation>`), strict schemas, human-readable outputs\n- **Client-agnostic:** Works with any MCP-compatible client via stdio transport\n\n---\n\n## Available on\n\n| Channel | Link |\n| --- | --- |\n| **Official MCP Registry** | `io.github.paladini/devutils-mcp-server` — [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io) |\n| **npm** | [devutils-mcp-server](https://www.npmjs.com/package/devutils-mcp-server) |\n| **GitHub Packages** | [`@paladini/devutils-mcp-server`](https://github.com/paladini/devutils-mcp-server/pkgs/npm/devutils-mcp-server) (dual-publish on release tags) |\n| **GHCR (Docker)** | `ghcr.io/paladini/devutils-mcp-server` |\n| **Glama** | [glama.ai/mcp/servers/paladini/devutils-mcp-server](https://glama.ai/mcp/servers/paladini/devutils-mcp-server) |\n| **Smithery** | [smithery.ai/server/devutils-mcp-server](https://smithery.ai/server/devutils-mcp-server) |\n| **Cursor / Claude plugin** | [devutils-cursor-plugin](https://github.com/paladini/devutils-cursor-plugin) |\n\n---\n\n## Contributing\n\nQuestions and ideas: [GitHub Discussions](https://github.com/paladini/devutils-mcp-server/discussions)\n\nSecurity reports: see [SECURITY.md](SECURITY.md).\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feat/amazing-tool`)\n3. Commit your changes (`git commit -m 'feat: add amazing tool'`)\n4. Push to the branch (`git push origin feat/amazing-tool`)\n5. Open a Pull Request\n\nSee [CHANGELOG.md](CHANGELOG.md).\n\n---\n\n## License\n\nMIT © [Fernando Paladini](https://github.com/paladini)\n",
  "bytes": 13639,
  "sha": "4ba4818fc08b891097fc1171f25bff288b8b31b6891648fc22833c96238e111c",
  "repo_slug": "paladini/devutils-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_paladini_devutils_mcp_server_7c4240c0/readme"
}