Build Once. Deploy Everywhere. Discover Globally.
Self-host, deploy, and register MCP servers with confidence using HAPI CLI, Docker, or Cloudflare Workers.
Website ยท Docs ยท MCP Registry ยท Run MCP ยท HAPI CLI
Register it in the official MCP registry to make it discoverable by the community. Follow the steps below to deploy and register your MCP server.
This repository is home to a growing collection of production-ready MCP servers that can be:
- Self-hosted locally or on your infrastructure
- Deployed to the cloud (Cloudflare Workers, Fly.io, or your own)
- Registered globally in the official MCP registry for discovery
- Freely accessed by anyone building with MCP
Each server follows best practices for security, scalability, and auditability.
-
Install HAPI
# Linux / macOS curl -fsSL https://get.mcp.com.ai/hapi.sh | bash # Windows (PowerShell) iwr -useb https://get.mcp.com.ai/hapi.ps1 | iex
-
Serve your MCP
hapi serve <PROJECT_NAME> \ --port 3030 \ --headless \ --url <BACKEND_URL> \ --openapi <OPENAPI_URL>
-
Verify it works
curl -s http://localhost:3030/health curl -s -X POST http://localhost:3030/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"ping"}'
docker run -p 3030:3030 \
-v ~/.hapi:/app/.hapi \
hapimcp/hapi-cli:latest \
serve <PROJECT_NAME> \
--port 3030 \
--headless \
--url <BACKEND_URL>hapi login
hapi deploy \
--name mcp-<PROJECT_NAME> \
--project <PROJECT_NAME> \
--openapi <OPENAPI_URL> \
--url <BACKEND_URL><PROJECT_NAME>: Name of the MCP project to serve (e.g.,petstore,my-api)<BACKEND_URL>: Base URL of the backend API (e.g.,https://api.example.com)<OPENAPI_URL>: URL or path to your OpenAPI v3 spec (optional if saved locally in~/.hapi/specs/)--port: Port number (default: 3000 for CLI, 3030 for Docker)--headless: Run without UIโuseful for production and legacy APIs
hapi register --name <SERVER_NAME|ID>- Prepare your server metadata (name, description, OpenAPI URL)
- Follow the official MCP registry documentation
- Submit a PR to the registry with your server entry
When deploying MCP servers:
- Authenticate all requests to your backend API
- Limit exposure of sensitive endpoints
- Monitor & log all tool invocations
- Use HTTPS in production
- Isolate secrets in environment variables or credential stores
Local: Great for development, testing, and integration. Runs on your machine or internal infrastructure. Still, HAPI MCP Servers are remote-only (HTTP Streamable).
Production: Deployed to Cloudflare Workers, Fly.io, or your own cloudโavailable globally or to your team, with monitoring and security hardening.
Yes. The same OpenAPI spec and HAPI configuration work on HAPI CLI, Docker, and Cloudflare Workers. Just adjust deployment flags.
Recommended, especially if exposed publicly. Use OAuth2, API keys, or mutual TLS. HAPI can supports auth directly from your OpenAPI spec. Dynamic Client Registration is also supported.
Use the MCP Server Evaluations skill, or manually test with curl:
curl -X POST http://localhost:3030/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Convert it to OpenAPI v3.x first. Tools like API Transformer can help.
Yes. Use rolling deployments (Cloudflare Workers, Fly.io) or update your Docker image and restart with orchestration tools.
Register it in the official MCP registry. Include clear naming, descriptions, and use standard operation names from your OpenAPI spec.
HAPI MCP Servers have a flexible pricing with a free tier to get started and pay-as-you-go for scale.
Cloud providers may have their own costs:
- Cloudflare Workers: Pay per request and bandwidth.
- Fly.io: Based on resource usage (CPU, memory, bandwidth).
- Self-hosted: Depends on your hosting choice (Docker on VPS, Kubernetes, etc.).
Any cloud provider fees are separate from HAPI MCP Server costs.
Yes. HAPI's Streamable HTTP transport supports both for real-time communication.
Use HAPI's built-in logging (stdout, files) and integrate with APM tools (Datadog, New Relic, etc.), OpenTelemetry. Log JSON-RPC calls for audit trails.