Inspiration
The Model Context Protocol (MCP) unlocked a new class of integrations between AI agents and external systems. But the ecosystem was missing a set of reliable, production-grade utility servers that every agent workflow needs: auth, storage, scheduling, validation, search, and observability. I built mcp-stack to fill that gap — 14 servers, all published to npm and registered in the official MCP Registry.
What it does
mcp-stack is a collection of 14 MCP servers, each handling a distinct cross-cutting concern for AI agent workflows:
| Server | Role |
|---|---|
| mcp-auth-server | JWT / API-key auth middleware |
| mcp-storage-server | Object storage abstraction (S3-compatible) |
| mcp-scheduler-server | Cron + one-shot job scheduling |
| mcp-validator-server | JSON Schema input validation |
| mcp-search-server | Full-text and semantic search |
| mcp-notification-server | Multi-channel alert dispatch |
| mcp-cache-server | TTL-aware result caching |
| mcp-logger-server | Structured agent event logging |
| mcp-rate-limiter-server | Token bucket rate limiting |
| mcp-transformer-server | Data format transformation |
| mcp-monitor-server | Health checks + uptime monitoring |
| mcp-config-server | Runtime configuration management |
| mcp-audit-server | Tamper-evident audit trail |
| mcp-gateway-server | Unified entry point + routing |
Every server follows the same pattern: TypeScript, MCP SDK, Zod-validated inputs, zero mandatory cloud dependency, offline-testable stubs.
How I built it
- MCP SDK (
@modelcontextprotocol/sdk) forMcpServer+StdioServerTransport - Zod for schema-first tool input validation on every server
- TypeScript with strict mode; compiled to ESM
- All 14 packages published to npm under the
@mukundakattascope - Each server registered in the official MCP Registry (registry.smithery.ai)
Challenges
- Designing a consistent API surface across 14 different domains while keeping each server independently deployable
- Making every server work in offline/stub mode so CI passes without live credentials
- Fitting the full server lifecycle (stdio transport, graceful shutdown, error propagation) into a pattern small enough to clone across 14 packages without drift
What I learned
MCP's stdio transport is elegant — each server is a tiny process that any host (Claude Desktop, a custom agent loop, an IDE plugin) can spawn. The registry makes discovery easy. The real work is in designing good tool schemas: the input validation layer is what makes these servers trustworthy in agentic contexts where the LLM generates the args.
Built With
- mcp
- model-context-protocol
- node.js
- npm
- typescript
- zod

Log in or sign up for Devpost to join the conversation.