Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server + Private RegistryFetch the content from https://api.github.com/repos/modelcontextprotocol/sdk"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server + Private Registry
A TypeScript project with two components:
MCP Server — a
fetch_urltool that lets AI clients make HTTP requestsPrivate MCP Registry — a REST API implementing the official MCP Registry OpenAPI spec for hosting your own server metadata
Setup
Requires conda and Node.js 22 (provided via the conda environment).
conda env create -f environment.yml
conda activate mcp
npm install
npm run buildMCP Server
A simple MCP server exposing one tool: fetch_url.
Tool: fetch_url
Parameter | Type | Required | Description |
| string (URL) | Yes | The URL to fetch |
|
| No | HTTP method (default: GET) |
| object | No | Key-value request headers |
| string | No | Request body (POST only) |
Run:
npm startTest with MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.js
# Open http://localhost:6274Add to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"fetch": {
"command": "node",
"args": ["/path/to/mcp/dist/index.js"]
}
}
}Note: Logs go to stderr — never stdout — to avoid corrupting the stdio JSON-RPC channel.
Private MCP Registry
A Hono-based HTTP server implementing the MCP Registry OpenAPI spec. Stores server metadata in a local SQLite database (via Node.js 22's built-in node:sqlite).
Environment Variables
Variable | Required | Description |
| Yes | Secret used to sign/verify JWT tokens |
| No | HTTP port (default: |
| No | SQLite file path (default: |
Quick Start
# 1. Generate an admin token (save this securely)
REGISTRY_JWT_SECRET=your-secret npm run generate-token
# 2. Start the registry
REGISTRY_JWT_SECRET=your-secret npm run registryAPI Endpoints
Method | Path | Auth | Description |
GET |
| No | Health check |
GET |
| No | List/search servers |
GET |
| No | List all versions of a server |
GET |
| No | Get a specific version ( |
POST |
| JWT | Publish or update a server |
PUT |
| JWT | Upsert a specific version |
DELETE |
| JWT | Delete a version |
Query params for GET /v0.1/servers: search, cursor, limit, updated_since
Example Usage
TOKEN="<your-generated-token>"
# Publish a server
curl -X POST http://localhost:3000/v0.1/publish \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "io.example/fetch-server",
"version": "1.0.0",
"description": "HTTP fetch MCP server",
"repository": "https://github.com/example/fetch-server"
}'
# List all servers
curl http://localhost:3000/v0.1/servers
# Get latest version (/ in name must be URL-encoded as %2F)
curl "http://localhost:3000/v0.1/servers/io.example%2Ffetch-server/versions/latest"
# Search
curl "http://localhost:3000/v0.1/servers?search=fetch"
# Delete a version
curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"http://localhost:3000/v0.1/servers/io.example%2Ffetch-server/versions/1.0.0"Server Name Format
Server names follow reverse-DNS convention: io.github.username/server-name or com.example/server-name. When used in URL path parameters, the / must be encoded as %2F.
Project Structure
src/
├── index.ts # MCP server entry point
└── registry/
├── index.ts # Registry HTTP server entry point
├── db.ts # SQLite schema and query helpers
├── auth.ts # JWT Bearer middleware
├── types.ts # TypeScript types (OpenAPI spec)
├── generate-token.ts # Admin JWT generator
└── routes/
├── servers.ts # GET endpoints
└── publish.ts # POST / PUT / DELETE endpoints
plans/
└── PLAN.md # Implementation planTech Stack
Runtime: Node.js 22 (via conda)
Language: TypeScript 5
MCP SDK:
@modelcontextprotocol/sdkHTTP Framework: Hono
Database:
node:sqlite(Node.js 22 built-in, experimental)Auth:
jose(JWT HS256)
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.