Skip to content
VoxaDocs
Navigation
Open console →

MCP server

Connect an MCP client

Add Voxa's MCP server to your assistant, sign in once in the browser, and check the connection with a first prompt.

The server URL is the same everywhere:

https://voxa.abhinavyadav.in/mcp

Each client below connects with OAuth: it opens a Voxa page where you sign in and choose Allow. If you belong to more than one workspace, pick the one to connect on that page.

Claude Code

claude mcp add --transport http voxa https://voxa.abhinavyadav.in/mcp

Then run /mcp inside Claude Code, pick voxa and choose Authenticate. Your browser opens the Voxa consent page.

To use an API key instead of signing in:

claude mcp add --transport http voxa https://voxa.abhinavyadav.in/mcp \
  --header "Authorization: Bearer $VOXA_API_KEY"

Claude Desktop and claude.ai

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name it Voxa and paste https://voxa.abhinavyadav.in/mcp as the URL.
  3. Choose Connect. Sign in to Voxa in the window that opens and choose Allow.

Custom connectors sign in with OAuth only; they can’t send an API key.

Cursor

Add Voxa to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "voxa": {
      "url": "https://voxa.abhinavyadav.in/mcp"
    }
  }
}

Open Cursor Settings → MCP. Voxa shows a Login button the first time; it opens the consent page.

With an API key instead, add "headers": { "Authorization": "Bearer vx_your_key" } next to url.

VS Code (GitHub Copilot)

Add a .vscode/mcp.json to your project:

{
  "servers": {
    "voxa": {
      "type": "http",
      "url": "https://voxa.abhinavyadav.in/mcp"
    }
  }
}

Start the server from the file (or MCP: List Servers in the command palette). VS Code asks you to sign in to Voxa in the browser.

Windsurf

Add Voxa to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "voxa": {
      "serverUrl": "https://voxa.abhinavyadav.in/mcp"
    }
  }
}

Any other client

Point it at https://voxa.abhinavyadav.in/mcp with the Streamable HTTP transport. Clients that follow the MCP authorization spec find everything on their own from the 401 response:

EndpointURL
Protected resource metadatahttps://voxa.abhinavyadav.in/.well-known/oauth-protected-resource/mcp
Authorization server metadatahttps://voxa.abhinavyadav.in/.well-known/oauth-authorization-server
Authorization (consent page)https://voxa.abhinavyadav.in/oauth/authorize
Tokenhttps://voxa.abhinavyadav.in/api/oauth/token
Client registrationhttps://voxa.abhinavyadav.in/api/oauth/register
Revocationhttps://voxa.abhinavyadav.in/api/oauth/revoke

Voxa supports the authorization code grant with PKCE (S256 only), refresh tokens, and open dynamic client registration. Redirect URIs must be https, http on localhost/127.0.0.1, or an app’s own scheme (for example cursor://).

A client that can’t register itself (some connector forms ask for a client ID up front) can register once by hand:

curl -X POST https://voxa.abhinavyadav.in/api/oauth/register \
  -H "Content-Type: application/json" \
  -d '{"client_name": "My agent", "redirect_uris": ["https://my-agent.example.com/oauth/callback"],
       "token_endpoint_auth_method": "client_secret_post"}'

The response holds the client_id (and a client_secret, shown once) to paste into the form.

To try the server by hand, run the MCP Inspector and connect it to the URL above:

npx @modelcontextprotocol/inspector

Check the connection

Ask your assistant:

List my Voxa agents and tell me which voice and model each one uses.

It calls list_agents and answers from your workspace. If it says it isn’t signed in, run the client’s sign-in step again; if the token was revoked under Settings → Connected apps, connect it again.

Troubleshooting

What you seeWhat to do
The browser never opensThe client may not support OAuth. Use an API key header, or another client.
“Can’t connect this app” on the consent pageThe app’s registration is missing or its return address doesn’t match. Remove the server in the client and add it again.
“choose an active workspace first”Your workspace is still in onboarding. Finish KYC, then connect.
401 after it worked beforeThe connection was disconnected, or you left the workspace. Connect again.
HTTP 403: your role cannot do this from a toolYour role can’t make that change (viewers only read). Ask an owner or admin.
Esc