# MCP Relay Server
A lightweight MCP server that exposes provider-specific tools and relays HTTP requests to configured providers (Supabase, Vercel, Context7, etc.).
## Quick start
1) Install dependencies
```
npm install
```
2) Set up environment variables
Set environment variables for provider auth tokens (locally or in your host settings):
```
CONTEXT7_API_KEY=your-token-here
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-key-here
```
Example for your shell:
- PowerShell: `$env:CONTEXT7_API_KEY = "your-token"`
- Bash: `export CONTEXT7_API_KEY="your-token"`
3) Add a provider
```
npm run build
node dist/cli.js add
```
4) Run the relay (stdio transport)
```
node dist/index.js
```
5) Run the relay (HTTP transport)
```
node dist/httpServer.js
```
## Provider config
Provider configs live in `providers/*.json`.
Example:
```
{
"name": "supabase",
"type": "http",
"baseUrl": "https://YOUR_PROJECT.supabase.co",
"description": "Supabase REST API",
"auth": {
"type": "bearer",
"env": "SUPABASE_TOKEN"
},
"defaultHeaders": {
"apikey": "${SUPABASE_ANON_KEY}"
},
"allowMethods": ["GET", "POST"],
"allowPaths": ["/rest/v1/"]
}
```
Note: set any secrets via environment variables (locally or in your host). `${ENV_VAR}` placeholders in `baseUrl` and `defaultHeaders` are expanded at runtime.
Presets: `providers/vercel.json` uses `VERCEL_TOKEN`. `providers/supabase.json` uses `SUPABASE_URL` and `SUPABASE_ANON_KEY`.
## Tools
Each provider creates a tool named:
- `provider.<name>.request`
Inputs:
- `path`: path starting with `/`
- `method`: HTTP method
- `headers`: additional headers
- `query`: query params
- `body`: string or JSON
Optional provider fields:
- `allowMethods`: restricts allowed HTTP methods.
- `allowPaths`: list of allowed path prefixes.
The server also exposes:
- `relay.list_providers`
## CLI flags
```
node dist/cli.js add --name supabase --base-url https://xyz.supabase.co --auth bearer --auth-env SUPABASE_TOKEN
```
## One-click deploy
Replace `YOUR_REPO_URL` with your GitHub repo URL.
- Vercel (serverless, stateless MCP HTTP at `/mcp`):
[](https://vercel.com/new/clone?repository-url=YOUR_REPO_URL&env=VERCEL_TOKEN,CONTEXT7_API_KEY,SUPABASE_URL,SUPABASE_ANON_KEY)
- Render (long-running HTTP server on `/mcp`):
[](https://render.com/deploy?repo=YOUR_REPO_URL)
Set env vars in your hosting dashboard for any providers you configure (for example `VERCEL_TOKEN`, `CONTEXT7_API_KEY`, `SUPABASE_URL`, `SUPABASE_ANON_KEY`).
## HTTP settings
- `PORT`: port for the HTTP server (default: `3000`).
- `HOST`: bind address for the HTTP server (default: `0.0.0.0`).
- `MCP_PATH`: HTTP path for MCP (default: `/mcp`).
## Build
```
npm run build
```