Hosted Setup (SSE)
Connect to the VelaFlows MCP server remotely via Server-Sent Events (SSE). This is required for desktop apps like Claude Desktop and ChatGPT Desktop that can’t run local processes.
Server URL
https://mcp-server-production-c72e.up.railway.app/sseHealth check:
curl https://mcp-server-production-c72e.up.railway.app/health
# {"status":"ok","service":"velaflows-mcp","connections":0}Prerequisites
- A VelaFlows API token (
sk_live_...) — create one in your dashboard under Developer → API Tokens - Claude Desktop or ChatGPT Desktop installed
Step 1: Get Your API Token
- Go to your VelaFlows dashboard
- Navigate to Developer → API Tokens
- Click + Create Token
- Name it (e.g., “MCP Server - Desktop”)
- Select scopes (or all for full access)
- Click Create — copy the token immediately
Step 2: Configure Your Desktop App
Claude Desktop
- Open Claude Desktop
- Go to Settings → Developer → MCP Servers
- Click Edit Config (opens
claude_desktop_config.json) - Add the VelaFlows server:
{
"mcpServers": {
"velaflows": {
"url": "https://mcp-server-production-c72e.up.railway.app/sse",
"headers": {
"Authorization": "Bearer sk_live_your_token_here"
}
}
}
}- Save the file and restart Claude Desktop
ChatGPT Desktop
- Open ChatGPT Desktop
- Go to Settings → MCP Servers (or Connections)
- Add a new MCP server:
- Name: VelaFlows
- URL:
https://mcp-server-production-c72e.up.railway.app/sse - Headers:
Authorization: Bearer sk_live_your_token_here
- Save and restart
Any SSE-Compatible Client
The server exposes two endpoints:
| Endpoint | Method | Purpose |
|---|---|---|
/sse | GET | SSE event stream — client connects here |
/messages | POST | Client-to-server RPC messages |
/health | GET | Health check |
Connection flow:
- Client opens SSE connection to
GET /ssewithAuthorization: Bearer sk_live_...header - Server sends a
sessionIdin the SSE stream - Client sends JSON-RPC requests to
POST /messages?sessionId={id} - Server responds via the SSE stream
Step 3: Verify It Works
After configuring and restarting your desktop app:
- Try: “List all VelaFlows services” — should return 34 services with endpoint counts
- Try: “What workflow nodes are available for sending messages?” — should search the node catalog
- Try: “List my inbox conversations” — should make a live API call (requires valid token)
How Authentication Works
Desktop App → SSE Connection → MCP Server → VelaFlows API
│ │
│ Authorization: │ Authorization:
│ Bearer sk_live_... │ Bearer sk_live_...
│ │
│ (token passed through) │ (same token forwarded)- Your API token is sent as a header when the SSE connection is established
- The MCP server extracts it and uses it for all live API calls
- Reference tools (search, list, get details) work even without a token — they use bundled data
- Live API tools and workflow tools require a valid token
Without a Token
You can connect without a token to use reference tools only:
{
"mcpServers": {
"velaflows": {
"url": "https://mcp-server-production-c72e.up.railway.app/sse"
}
}
}This gives you read-only access to:
- Search across 1,093 API endpoints
- Browse 464 workflow node definitions
- Explore 392 subscribable events
- Read authentication and workflow guides
Live API calls and workflow building will return an error asking you to provide a token.
Troubleshooting
”Connection refused” or timeout
- Check the server is healthy:
curl https://mcp-server-production-c72e.up.railway.app/health - If it returns an error, the server may be restarting — wait 30 seconds and try again
”Session not found” errors
This happens if the SSE connection was dropped and the client is trying to send messages on a stale session. Fix: restart your desktop app to establish a fresh connection.
Tools work but API calls fail
- Verify your token: try it with cURL:
curl -H "Authorization: Bearer sk_live_your_token" \ -H "x-workspace-id: your_workspace_id" \ https://api.velaflows.com/api/v1/auth/me - Check the token hasn’t been revoked in your dashboard
- Check the token has the required scopes
”Unauthorized” from the AI tool
Make sure the Authorization header is set correctly in your MCP config:
- Must be
Bearer sk_live_...(with theBearerprefix) - Must be in the
headersobject, not inenv
Security Notes
- The hosted MCP server does not store your token — it’s held in memory for the duration of your SSE session and discarded on disconnect
- Each SSE connection creates an isolated session — your token is never shared with other connections
- All communication uses HTTPS
- The server is stateless — no data persists between sessions