1. Updates docs to prefer `uv run server.py` instead of `arcade mcp` or `python -m arcade_mcp_server` 2. Found a bug with running stdio servers while updating the docs, so i snuck that in this PR
180 lines
4.7 KiB
Markdown
180 lines
4.7 KiB
Markdown
# Sharing Your MCP Server
|
|
|
|
Make your MCP server accessible to others by exposing it through a secure tunnel and registering it with Arcade. This allows remote users and services to interact with your tools without deploying to a cloud platform.
|
|
|
|
## Overview
|
|
|
|
By default, your MCP server runs locally on `localhost:8000`. To share it:
|
|
1. Run your server with HTTP transport
|
|
2. Create a secure tunnel to expose it publicly
|
|
3. Register your server in Arcade
|
|
4. Share the tools with others
|
|
|
|
## Step 1: Run Your Server
|
|
|
|
First, start your MCP server with HTTP transport:
|
|
|
|
```bash
|
|
# Navigate to your server directory
|
|
cd my_server
|
|
|
|
# Run with HTTP transport (default)
|
|
uv run server.py
|
|
uv run server.py http
|
|
```
|
|
|
|
Your server will start on `http://localhost:8000`. Keep this terminal running.
|
|
|
|
## Step 2: Create a Secure Tunnel
|
|
|
|
Open a **separate terminal** and create a tunnel using one of these options:
|
|
|
|
### Option A: ngrok (Recommended for Getting Started)
|
|
|
|
[ngrok](https://ngrok.com) is easy to set up and works across all platforms.
|
|
|
|
1. **Install ngrok:**
|
|
```bash
|
|
# macOS
|
|
brew install ngrok
|
|
|
|
# Or download from https://ngrok.com/download
|
|
```
|
|
|
|
2. **Create a tunnel:**
|
|
```bash
|
|
ngrok http 8000
|
|
```
|
|
|
|
3. **Copy your URL:**
|
|
Look for the "Forwarding" line in the ngrok output:
|
|
```
|
|
Forwarding https://abc123.ngrok-free.app -> http://localhost:8000
|
|
```
|
|
|
|
Copy the `https://abc123.ngrok-free.app` URL - this is your public URL.
|
|
|
|
**Pros:**
|
|
- Quick setup, no account required for basic use
|
|
- Automatic HTTPS
|
|
- Web dashboard to inspect requests
|
|
|
|
**Cons:**
|
|
- Free tier URLs change on each restart
|
|
- May show interstitial page for free tier
|
|
|
|
### Option B: Cloudflare Tunnel
|
|
|
|
[Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/) provides persistent URLs and advanced features.
|
|
|
|
1. **Install cloudflared:**
|
|
```bash
|
|
# macOS
|
|
brew install cloudflare/cloudflare/cloudflared
|
|
|
|
# Or download from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/
|
|
```
|
|
|
|
2. **Create a tunnel:**
|
|
```bash
|
|
cloudflared tunnel --url http://localhost:8000
|
|
```
|
|
|
|
3. **Copy your URL:**
|
|
Look for the "Your quick Tunnel has been created" message with your URL.
|
|
|
|
**Pros:**
|
|
- Free tier includes persistent URLs (with setup)
|
|
- Built-in DDoS protection
|
|
- Access control features
|
|
|
|
**Cons:**
|
|
- Requires Cloudflare account for persistent URLs
|
|
- More complex setup for advanced features
|
|
|
|
### Option C: Tailscale Funnel
|
|
|
|
[Tailscale Funnel](https://tailscale.com/kb/1223/tailscale-funnel) is ideal for sharing within a team or organization.
|
|
|
|
1. **Install Tailscale:**
|
|
```bash
|
|
# macOS
|
|
brew install tailscale
|
|
|
|
# Or download from https://tailscale.com/download
|
|
```
|
|
|
|
2. **Authenticate:**
|
|
```bash
|
|
tailscale up
|
|
```
|
|
|
|
3. **Create a funnel:**
|
|
```bash
|
|
tailscale funnel 8000
|
|
```
|
|
|
|
4. **Get your URL:**
|
|
Tailscale will display your funnel URL (e.g., `https://my-machine.tail-scale.ts.net`)
|
|
|
|
**Pros:**
|
|
- Persistent URLs tied to your machine
|
|
- Private by default (only shared with specified users)
|
|
- No bandwidth limits
|
|
|
|
**Cons:**
|
|
- Requires Tailscale account
|
|
- Best for team/organization use cases
|
|
|
|
## Step 3: Register Your MCP Server in Arcade
|
|
|
|
Once you have a public URL, register your MCP server in the Arcade dashboard to make it accessible through the Arcade API.
|
|
|
|
### Register Your Server
|
|
|
|
1. **Navigate to the MCP Servers page** in your [Arcade dashboard](https://api.arcade.dev/dashboard/servers)
|
|
|
|
2. **Click "Add Server"**
|
|
|
|
3. **Fill in the registration form:**
|
|
- **ID**: Choose a unique identifier (e.g., `my-mcp-server`)
|
|
- **Server Type**: Select "HTTP/SSE"
|
|
- **URL**: Enter your public tunnel URL from Step 2 with `/mcp` appended
|
|
- Example: `https://abc123.ngrok-free.app/mcp`
|
|
- Example: `https://my-tunnel.trycloudflare.com/mcp`
|
|
- Example: `https://my-machine.tail-scale.ts.net/mcp`
|
|
- **Secret**: Enter a secret for your server (or use `dev` for testing)
|
|
- **Timeout**: Configure request timeout (default: 30s)
|
|
- **Retry**: Configure retry attempts (default: 3)
|
|
|
|
4. **Click "Create"**
|
|
|
|
### Configuration Example
|
|
|
|
```yaml
|
|
ID: my-mcp-server
|
|
Server Type: HTTP/SSE
|
|
URL: https://abc123.ngrok-free.app
|
|
Secret: my-secure-secret-123
|
|
Timeout: 30s
|
|
Retry: 3
|
|
```
|
|
|
|
## Step 4: Test Your MCP Server
|
|
|
|
Verify that your server is accessible and working correctly.
|
|
|
|
### Using the Arcade Playground
|
|
|
|
1. **Go to the [Arcade Playground](https://api.arcade.dev/dashboard/playground/chat)**
|
|
|
|
2. **Select your MCP server** from the dropdown
|
|
|
|
3. **Choose a tool** from your server
|
|
|
|
4. **Execute the tool** with test parameters
|
|
|
|
5. **Verify the response:**
|
|
- Check that the response is correct
|
|
- View request logs in your local server terminal
|
|
- Inspect the tunnel dashboard for request details
|