# I built a self-hosted MCP server registry and proxy in TypeScript

> Source: <https://dev.to/diya730/i-built-a-self-hosted-mcp-server-registry-and-proxy-in-typescript-12b>
> Published: 2026-06-13 16:01:36+00:00

The official MCP registry is written in Go and cloud-hosted.

I wanted something I could self-host, written in TypeScript,

that my team could run inside our own infra.

So I built **mcp-hub**.

Register a server once:

```
curl -X POST http://localhost:3000/api/v1/servers \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "github-mcp",
    "url": "http://my-mcp-server:8080",
    "transport": "http"
  }'
```

Then proxy any tool call through mcp-hub:

```
curl -X POST http://localhost:3000/api/v1/proxy/{serverId}/call \
  -H 'Content-Type: application/json' \
  -d '{ "tool": "create_issue", "input": { "title": "Bug" } }'
```

Every call is logged to PostgreSQL and streamed live over WebSocket.

```
git clone https://github.com/DIYA73/mcp-hub
cd mcp-hub
cp .env.example .env
docker compose up
```

API at `http://localhost:3000/api/v1`

WebSocket at `ws://localhost:3000/logs`

I'm running multiple MCP servers locally and needed a central

place to register them, forward calls, and see what's happening

in real time. Nothing TypeScript-native existed.

GitHub: [https://github.com/DIYA73/mcp-hub](https://github.com/DIYA73/mcp-hub)

Feedback welcome — especially if you're running MCP servers in prod.
