# ElevenLabs MCP MCP Server

> **ElevenLabs MCP MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to ElevenLabs MCP.
>
> MewCP takes care of all MCP infrastructure for you — credential storage, OAuth flows,
> token refresh, and production-grade auto-scaling — so your AI agents can connect to
> third-party services and run freely without you managing any MCP server yourself.
>
> Server page:  https://mewcp.com/mcp/elevenlabs-mcp
> MewCP docs:   https://docs.mewcp.com
> Full catalog: https://mewcp.com/llms.txt

---

## About

ElevenLabs enables AI agents to create, configure, and manage conversational voice agents, inspect conversation transcripts, manage knowledge bases and tools, run evaluations, review support tickets, estimate usage costs, and generate speech audio from text.

---

## Details

- Server ID: `elevenlabs-mcp`
- Version: 0.1.0
- Tools: 160
- Authentication: OAuth, managed by MewCP
- Transport: http

---

## Access

The gateway URL below serves your **entire MewCP toolset**, not this server on its
own. Pasting a config snippet is not enough — ElevenLabs MCP has to be in the toolset
first. In order:

1. Add ElevenLabs MCP to your toolset at https://mewcp.com/mcp/elevenlabs-mcp
2. Connect your ElevenLabs MCP account (OAuth); MewCP stores the credential and attaches it to each call
3. Copy your MewCP API key from the dashboard (Developer)
4. Configure your client with the snippet for it below

Once connected, an agent does **not** see this server's tools as top-level tools.
It sees four meta-tools and reaches everything through them:

- `search(query)` — find tools by keyword across the toolset
- `get_schema(tools)` — full description and arguments for the tools you picked
- `list_accounts(provider)` — only when one app has several connected accounts
- `call_tool(server_maskedId, tool_name, args)` — execute

So the list below is what `search` can return for this server, not a set of
callable tool names on their own.

---

## Tools (160)

Descriptions are truncated to 160 characters; call `get_schema`
for the full text and the argument schema. Where a tool is annotated, its type
is shown — treat `destructive` as irreversible.

- `agents_list` _(read)_ — List ElevenLabs Agents in the authenticated workspace.
- `agents_get` _(read)_ — Get the full configuration for an ElevenLabs Agent. Defaults to the latest version on the agent's main branch; pass branch_id to read another branch's latest…
- `agents_get_summaries` _(read)_ — Get lightweight summaries for one or more ElevenLabs Agents.
- `agents_get_widget` _(read)_ — Get widget configuration for an ElevenLabs Agent.
- `agents_get_link` _(read)_ — Get the shareable link for an ElevenLabs Agent.
- `agents_get_knowledge_size` _(read)_ — Get the size of an ElevenLabs Agent's knowledge base.
- `agents_calculate_llm_usage` _(read)_ — Calculate expected LLM usage for an ElevenLabs Agent. API reference: https://elevenlabs.io/docs/api-reference/agents/calculate
- `agents_list_conversations` _(read)_ — List conversations for the authenticated workspace, optionally filtered to a specific agent via agent_id.
- `agents_get_conversation` _(read)_ — Get the details of a conversation, including its transcript and analysis results.
- `agents_get_conversation_summary` _(read)_ — Get a lightweight summary of a conversation: its title, the generated transcript summary, whether the call was successful, and the plain chat messages when the…
- `agents_duplicate` _(write)_ — Duplicate an existing ElevenLabs Agent. API reference: https://elevenlabs.io/docs/api-reference/agents/duplicate
- `agents_delete` _(destructive)_ — Permanently delete an ElevenLabs Agent together with all of its conversations. This cannot be undone. To hide an agent while keeping it and its history,…
- `agents_search_conversation_messages` _(read)_ — Search the text of conversation transcripts and return the matching messages, each with its conversation_id, transcript_index, message text, and relevance…
- `agents_semantic_search_conversation_messages` _(read)_ — Search conversation transcripts by meaning rather than exact words, returning the most relevant messages with their conversation_id. Use it for questions…
- `agents_resolve_conversation` _(read)_ — Resolve a conversation reference (e.g. a dashboard URL or share link) to its conversation.
- `agents_get_topics` _(read)_ — Get the conversation topics surfaced for an ElevenLabs Agent.
- `agents_list_branches` _(read)_ — List the branches of an ElevenLabs Agent, main first, each with its name, parent_branch_id, last_committed_at, and current_live_percentage (its share of live…
- `agents_get_branch` _(read)_ — Get a single branch of an ElevenLabs Agent, including its full commit history. Use this to see how a branch evolved: most_recent_versions lists every version…
- `agents_update_branch` _(write)_ — Update a branch of an ElevenLabs Agent.
- `agents_get_version` _(read)_ — Get metadata for a specific version of an ElevenLabs Agent: its branch_id, commit message (version_description), seq_no_in_branch, time_committed_secs, and…
- `agents_merge_branch_preview` _(read)_ — Preview the changes that merging a source branch would apply, without mutating anything.
- `agents_merge_branch` _(destructive)_ — Merge a source branch into its target branch.
- `agents_create_merge_proposal` _(write)_ — Open a merge proposal asking to merge a source branch into a target branch, for someone with write access to the target to review and merge.
- `agents_list_merge_proposals` _(read)_ — List the merge proposals for an agent, newest first.
- `agents_get_merge_proposal` _(read)_ — Get a single merge proposal.
- `agents_update_merge_proposal` _(write)_ — Edit an open merge proposal: change its title or description, replace the list of users asked to review it (requested_reviewer_user_ids), or close it without…
- `agents_review_merge_proposal` _(write)_ — Approve a merge proposal or request changes on it. A user's latest review replaces their previous one.
- `agents_comment_on_merge_proposal` _(write)_ — Leave a comment on a merge proposal without recording a review verdict.
- `agents_merge_merge_proposal` _(destructive)_ — Execute the merge for an approved merge proposal. The caller must have write access to the target branch.
- `agents_create_deployment` _(destructive)_ — Create or update the live traffic split across an ElevenLabs Agent's branches. Each call replaces the whole split, so include every branch that should keep…
- `agents_create_draft` _(write)_ — Create a draft for an ElevenLabs Agent.
- `agents_delete_draft` _(destructive)_ — Delete the draft of an ElevenLabs Agent.
- `agents_create_procedure` _(write)_ — Create a procedure on an agent branch. A procedure is a standard operating procedure the agent follows for one specific task: trigger says when the agent…
- `agents_list_procedures` _(read)_ — List the procedures on an agent branch with their name, type and trigger. Does not return procedure content; call agents_get_procedure to read a body. A…
- `agents_get_procedure` _(read)_ — Get a single procedure on an agent branch, including its full content. Use it to check what a procedure actually handles; agents_list_procedures only returns…
- `agents_delete_procedure` _(destructive)_ — Remove a procedure from an agent branch.
- `agents_get_procedure_draft` _(read)_ — Get the draft of a procedure on an agent branch.
- `agents_update_procedure_draft` _(write)_ — Update the draft of a procedure on an agent branch. Send name, content, type and trigger in full. type must be the procedure's existing type: a procedure's…
- `agents_delete_procedure_draft` _(destructive)_ — Delete the draft of a procedure on an agent branch.
- `agents_list_knowledge_base` _(read)_ — List the documents in the workspace knowledge base.
- `agents_get_kb_document` _(read)_ — Get a single knowledge base document.
- `agents_create_kb_text` _(write)_ — Create a knowledge base document from raw text.
- `agents_create_kb_url` _(write)_ — Create a knowledge base document from a URL.
- `agents_create_kb_folder` _(write)_ — Create a folder in the knowledge base.
- `agents_update_kb_document` _(write)_ — Update a knowledge base document's name and/or content.
- `agents_delete_kb_document` _(destructive)_ — Delete a knowledge base document.
- `agents_bulk_delete_knowledge_base` _(destructive)_ — Delete multiple knowledge base documents at once.
- `agents_bulk_move_knowledge_base` _(write)_ — Move multiple knowledge base items into a folder.
- `agents_search_knowledge_base` _(read)_ — Search the workspace knowledge base by content.
- `agents_query_knowledge_base_rag` _(read)_ — Run a RAG query against an ElevenLabs Agent's knowledge base.
- `agents_get_kb_dependents` _(read)_ — List the agents that depend on a knowledge base document.
- `agents_create_kb_crawl` _(write)_ — Start a crawl job that follows links from a URL (or reads the given sitemap_urls) and adds each crawled page to the knowledge base as a document, inside a new…
- `agents_get_kb_rag_indexes` _(read)_ — List the RAG indexes of a knowledge base document, with each index's embedding model, status (e.g. created, processing, succeeded, failed), and progress. An…
- `agents_compute_kb_rag_index` _(write)_ — Start RAG indexing of a knowledge base document for an embedding model, or return the current status if an index for that model already exists. Pass the model…
- `agents_create_tool` _(write)_ — Create an ElevenLabs Agent tool (client, webhook, or other type per the request body).
- `agents_list_tools` _(read)_ — List the ElevenLabs Agent tools in the workspace.
- `agents_get_tool` _(read)_ — Get a single ElevenLabs Agent tool.
- `agents_update_tool` _(write)_ — Update an ElevenLabs Agent tool.
- `agents_delete_tool` _(destructive)_ — Delete an ElevenLabs Agent tool.
- `agents_get_tool_dependents` _(read)_ — List the agents that depend on a tool.
- `agents_get_tool_executions` _(read)_ — Get the execution history for a tool.
- `agents_create_mcp_server` _(write)_ — Register an MCP server that agents can use as a tool source.
- `agents_list_mcp_servers` _(read)_ — List the MCP servers registered in the workspace.
- `agents_get_mcp_server` _(read)_ — Get a single registered MCP server.
- `agents_update_mcp_server` _(write)_ — Update the configuration of a registered MCP server.
- `agents_delete_mcp_server` _(destructive)_ — Delete a registered MCP server.
- `agents_list_mcp_server_tools` _(read)_ — List the tools exposed by a registered MCP server.
- `agents_list_secrets` _(read)_ — List the workspace secrets that agent tools, MCP servers, and integrations can reference, with each secret's id, name, and the resources that use it. Secret…
- `agents_create_test` _(write)_ — Create an agent response test.
- `agents_list_tests` _(read)_ — List the agent response tests in the workspace.
- `agents_get_test` _(read)_ — Get a single agent response test.
- `agents_delete_test` _(destructive)_ — Delete an agent response test.
- `agents_update_test` _(write)_ — Replace an agent response test's definition. This is a full replacement, not a patch: read the current test first, change the fields you need, and send the…
- `agents_create_test_folder` _(write)_ — Create a folder for organizing agent tests, optionally inside parent_folder_id.
- `agents_move_tests` _(write)_ — Move tests or test folders (entity_ids) into the folder move_to, or to the root when move_to is omitted.
- `agents_run_tests` _(write)_ — Run a suite of tests against an ElevenLabs Agent.
- `agents_list_test_runs` _(read)_ — List test-suite invocations (test runs) in the workspace.
- `agents_get_test_run` _(read)_ — Get the details of a single test-suite invocation (test run).
- `agents_list_phone_numbers` _(read)_ — List the phone numbers in the workspace.
- `agents_get_phone_number` _(read)_ — Get a single phone number.
- `agents_update_phone_number` _(write)_ — Update a phone number (e.g. assign it to an agent).
- `agents_delete_phone_number` _(destructive)_ — Delete a phone number from the workspace.
- `agents_list_triage_tickets` _(read)_ — List an agent's conversation triage tickets, ordered by most recently created first. These are tickets about the agent's own performance on a conversation (for…
- `agents_create_manual_triage_ticket` _(write)_ — Manually raise a follow-up ticket against an agent, not tied to any conversation (for example a task like 'add the KB about X').
- `agents_get_triage_ticket_assignable_users` _(read)_ — List workspace members who can be assigned a conversation triage ticket for an agent, flagged with whether they currently have at least viewer access to the…
- `agents_get_triage_ticket` _(read)_ — Get a conversation triage ticket by ID.
- `agents_create_triage_ticket` _(write)_ — Raise a ticket about an agent's performance on a conversation, for triage with Architect. Provide an overall comment and/or turn-level comments describing what…
- `agents_update_triage_ticket` _(write)_ — Update a conversation triage ticket's comment, status, priority, and/or assignee.
- `agents_add_triage_ticket_comment` _(write)_ — Append a comment discussing how to resolve a conversation triage ticket.
- `agents_add_triage_ticket_turn_comment` _(write)_ — Append a turn-level comment to a conversation triage ticket.
- `agents_delete_triage_ticket` _(destructive)_ — Delete a conversation triage ticket. Restricted to the ticket creator or a workspace admin.
- `agents_update` _(write)_ — Rename an ElevenLabs Agent, replace its tag list, or label the version this change publishes. Metadata only: everything about what the agent says or how it…
- `agents_update_agent_behavior` _(write)_ — Set how an ElevenLabs Agent conducts a conversation: its first message and whether callers may interrupt it, the spoken language, Hinglish mode, dynamic…
- `agents_update_prompt_settings` _(write)_ — Set the system prompt of an ElevenLabs Agent and the model that runs it: prompt text, LLM choice, temperature, token limit, reasoning effort and thinking…
- `agents_update_end_call_tool` _(write)_ — Configure the built-in end call tool on an ElevenLabs Agent, which lets the agent hang up on its own once the conversation is finished. Read the agent's…
- `agents_update_transfer_to_agent_tool` _(write)_ — Configure the built-in transfer to agent tool on an ElevenLabs Agent, which hands the conversation to another agent along one of the transfer rules in…
- `agents_update_language_detection_tool` _(write)_ — Configure the built-in language detection tool on an ElevenLabs Agent, which lets the agent switch to a language the caller speaks, optionally only at the…
- `agents_update_transfer_to_number_tool` _(write)_ — Configure the built-in transfer to number tool on an ElevenLabs Agent, which forwards a phone call to a human on one of the numbers in params.transfers. Read…
- `agents_update_skip_turn_tool` _(write)_ — Configure the built-in skip turn tool on an ElevenLabs Agent, which lets the agent stay silent when the caller has asked for a moment to think. Read the…
- `agents_update_keypad_tone_tool` _(write)_ — Configure the built-in play keypad touch tone tool on an ElevenLabs Agent, which plays DTMF tones so the agent can navigate an automated phone menu. Read the…
- `agents_update_voicemail_detection_tool` _(write)_ — Configure the built-in voicemail detection tool on an ElevenLabs Agent, which recognizes when an outbound call reached a voicemail system and optionally leaves…
- `agents_update_speech_recognition` _(write)_ — Set how an ElevenLabs Agent hears incoming audio: the speech-to-text quality tier, input audio format and sample rate, the user input audio transcription…
- `agents_update_turn_taking` _(write)_ — Set how an ElevenLabs Agent decides when to speak: turn timeouts, silence and end-call thresholds, the turn detection mode and eagerness, backchannelling, and…
- `agents_update_voice` _(write)_ — Set the voice an ElevenLabs Agent speaks with: voice ID, TTS model, output format, stability, speed and similarity, pronunciation dictionaries,…
- `agents_update_conversation` _(write)_ — Set the session-level limits and modalities of an ElevenLabs Agent: maximum conversation duration, which text and audio modalities are accepted, client events…
- `agents_update_language_presets` _(write)_ — Set the per-language overrides an ElevenLabs Agent applies when a conversation runs in a language other than its default: translated first message and system…
- `agents_update_widget` _(write)_ — Restyle the embeddable chat widget of an ElevenLabs Agent: colors, radii, placement and size, avatar, the button and expandable variants, on-screen copy and…
- `agents_update_analysis` _(write)_ — Set what an ElevenLabs Agent extracts from finished conversations: evaluation criteria, analysis items, data collection fields and their scopes, the LLM used…
- `agents_update_operations` _(write)_ — Set the operational policy of an ElevenLabs Agent: authentication and allowed origins, privacy and retention, concurrency and daily call limits, call queueing,…
- `agents_update_client_overrides` _(write)_ — Choose which parts of an ElevenLabs Agent's configuration a client may override when it starts a conversation, and which of those the workspace allows at all.…
- `agents_update_guardrails` _(write)_ — Set the content guardrails an ElevenLabs Agent enforces on a conversation: which categories are blocked, how strictly, and what the agent does when a guardrail…
- `agents_create_branch` _(write)_ — Create a new working branch for an ElevenLabs Agent, forked from an existing version. The branch starts as a copy of that version; change its configuration…
- `agents_create` _(write)_ — Create a new ElevenLabs Conversational AI agent from a compact set of common fields. Use this for normal agent creation, then refine the result with the…
- `agents_disable_built_in_tool` _(write)_ — Take one of the built-in system tools away from an ElevenLabs Agent, so it can no longer end the call, transfer, detect language and so on. The matching…
- `agents_update_workflow` _(write)_ — Replace the whole conversation workflow graph of an ElevenLabs Agent. This tool takes the graph as an opaque object and does not describe its shape, so it is…
- `agents_create_code_tool` _(write)_ — Create a code tool: runs custom JavaScript in a sandboxed environment, for logic a webhook can't express. Requires an Enterprise workspace plan -- the…
- `agents_update_code_tool` _(write)_ — Update a code tool. This PATCH replaces the whole tool config, so supply either `body` (the full replacement config) or all of name/description/source_code --…
- `creative_generate_image` _(write)_ — Generate an image from a text prompt. This is the tool for any request to create an image. Returns at once with flow_id, node_id and session_ids, plus a url…
- `creative_generate_video` _(write)_ — Generate a video from a text prompt. This is the tool for any request to create a video. Returns at once with flow_id, node_id and session_ids, plus a url the…
- `creative_generate_speech` _(write)_ — Generate speech from a text prompt. This is the tool for any request to create speech. Returns at once with flow_id, node_id and session_ids, plus a url the…
- `creative_edit_image` _(write)_ — Edit an existing image already on this flow: pass its node_id as connect_from and it starts at once. That node can be one an earlier creative_generate_image…
- `creative_transcribe_audio` _(write)_ — Transcribe speech in an audio file into text. This is the tool for any request to transcribe, caption or "what does this audio say". Pass connect_from with the…
- `creative_generate_in_flow` _(write)_ — Generate an image, video or speech in one call: creates a flow when flow_id is omitted, adds the node, and starts the generation. Returns flow_id, node_id and…
- `creative_create_flow` _(write)_ — Create an empty flow on the user's canvas and return its flow_id. Call this FIRST whenever the request combines generations — lipsync, a video with a…
- `creative_get_flow` _(read)_ — Read a flow's nodes, connections and per-node run state, so an existing flow can be inspected before it is changed.
- `creative_get_flow_node` _(read)_ — Read one node's full settings without changing it: prompt, model_id, model_parameters, and every input port with the nodes connected to it (an empty…
- `creative_get_flow_node_types` _(read)_ — List the node types and models this workspace can actually run in its region, with their default model. Call this before adding a node rather than guessing a…
- `creative_add_flow_node` _(write)_ — Add one node to a flow without running it. Use connect_from to feed an earlier node's output into this node, which is how a multi-step flow is built. Creates a…
- `creative_add_flow_asset_node` _(write)_ — Put an existing asset or a previous generation on the flow as a node, so it can be wired into another node's reference input with creative_connect_flow_nodes.…
- `creative_upload_flow_reference` _(write)_ — Use this when the user wants a file from their own machine as a reference for a generation — for example "change the cat to a dog in this image". Returns at…
- `creative_connect_flow_nodes` _(write)_ — Wire an edge between two nodes that already exist on a flow. Unlike creative_add_flow_node's connect_from, which only wires a node as it is created, this…
- `creative_disconnect_flow_nodes` _(write)_ — Remove the edges between pairs of nodes on a flow, the reverse of creative_connect_flow_nodes. Both nodes stay on the canvas. If any pair has no edge between…
- `creative_delete_flow_nodes` _(destructive)_ — Delete nodes from a flow, along with every edge into or out of them. The batch is all or nothing. Their past generations stay in the user's history. Only…
- `creative_update_node` _(write)_ — Update an existing node's model, parameters, prompt, or label. A static asset node takes only a label change. BEFORE passing model_parameters or model_id: call…
- `creative_update_flow_nodes` _(write)_ — Apply creative_update_node to up to 50 nodes on one flow in a single call, in order. Returns only each node's success or error, not the updated nodes, so a…
- `creative_run_flow_nodes` _(write)_ — Start generating on nodes that already exist. Charges the workspace, so poll creative_get_flow_run_status rather than calling this again.
- `creative_get_flow_run_status` _(read)_ — Check whether a run has finished and read its generations, without showing anything to the user — this never renders a view. Poll it with the flow_id and…
- `creative_show_flow_results` _(read)_ — Put a run's generations back in front of the user, rendering the same view a run starts with. Use this when the user should see results that are not already…
- `creative_get_model_guide` _(read)_ — Read prompting guidance for a specific model. Worth calling before writing a prompt for an unfamiliar model, since guidance differs a lot between them.
- `creative_get_model_schema` _(read)_ — Read a model's configurable parameters — names, types, and allowed values — without changing anything. Call this for the effective model_id before passing…
- `creative_list_voices` _(read)_ — Search the voices this workspace can speak with, to choose one for a speech node instead of asking the user for a voice id. Combine the free-text search with…
- `creative_design_voice` _(write)_ — Design a brand-new voice from a text description. Not for picking a voice that already exists — use creative_list_voices for that. Needs two things from the…
- `creative_save_designed_voice` _(write)_ — Save one preview from creative_design_voice into the workspace's voice library, returning a voice_id usable with creative_generate_speech. Call this only once…
- `creative_get_voice_design_previews` _(read)_ — Reads back the previews of an earlier creative_design_voice round from its previews[].generated_voice_ids. Preview URLs are short-lived and expire, so this is…
- `creative_get_view_state` _(read)_ — For the view to call when it mounts, not for you — never call this yourself. Reads back the state a view previously saved under view_state_id, so a view…
- `creative_save_view_state` _(write)_ — For the view to call as its state changes, not for you — never call this yourself. Persists opaque UI state under view_state_id so a view reopened in an old…
- `creative_get_available_assets` _(read)_ — Search the assets already in this workspace's library, so an existing upload can be used as a reference instead of asking the user to upload one again. Pass…
- `creative_create_asset_upload` _(write)_ — Returns an upload_url; send the file's bytes there with a single HTTP PUT whose Content-Type matches mime_type exactly, then call…
- `creative_finalize_asset_upload` _(write)_ — Call after the PUT to the upload_url succeeds; verifies the bytes landed and makes the asset usable as a reference. Pass flow_id to place the uploaded file on…
- `creative_attach_reference_file` _(write)_ — Use this when the file the user wants as a reference is already reachable — attached to this conversation, or at a direct https URL they gave you. We fetch it…
- `creative_list_brand_kits` _(read)_ — List the brand kits in this workspace, with a one-line summary of what each holds. Use it when the user refers to their brand, their logo or their style guide,…
- `creative_get_brand_kit` _(read)_ — Read everything inside one brand kit: its colors, typefaces, dos and don'ts, guideline summaries, brand voice, and its logos and reference media. Call it…
- `creative_create_brand_kit` _(write)_ — Create a brand kit from the colors, typography, rules, voice and workspace media you already know. Gather the brand facts first and create the kit in one call…
- `creative_update_brand_kit` _(write)_ — Change a brand kit's name or description without changing its items.
- `creative_delete_brand_kit` _(destructive)_ — Delete a whole brand kit. Use creative_delete_brand_kit_item instead when the user only wants one item removed. This cannot be undone, so confirm with the user…
- `creative_add_brand_kit_item` _(write)_ — Add one logo, font, document, image, video, color palette, rules entry, or voice to an existing brand kit. A media item (logo, font, document, image, video)…
- `creative_update_brand_kit_item` _(write)_ — Replace one brand-kit item wholesale. Read the kit with creative_get_brand_kit first and resend every field that should be kept; the item's type cannot change.
- `creative_delete_brand_kit_item` _(destructive)_ — Remove one item from a brand kit while leaving the rest in place.
- `creative_create_brand_kit_from_website` _(write)_ — Build a new brand kit by reading a public website the user named: its logo, colors, typography and tone. Extraction is best-effort and takes a while; use the…
- `get_more_tools` _(read)_ — Call this when the user's request cannot be completed with any of the available tools. Describe the capability you were looking for, so it can inform which…

---

## Connect

Gateway URL: https://gateway.mewcp.com/personal/mcp

Every request carries one header:

    Authorization: Bearer <API_KEY>

Replace `API_KEY` with your own key from the dashboard (Developer).

## Apps

### Claude Desktop

Mac & Windows app

- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://gateway.mewcp.com/personal/mcp",
        "--header",
        "Authorization: Bearer API_KEY"
      ]
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open Claude Desktop → Settings → Developer → "Edit Config"
2. Paste the snippet inside the outer { } of the config file (merge with your existing "mcpServers" section if you have one)
3. Save the file and restart Claude Desktop
4. Start a new conversation — your tool will be available

### VS Code

Copilot / Cline

- Command Palette → "MCP: Open User Configuration" (opens mcp.json). For one project only, use .vscode/mcp.json instead.

```json
{
  "mcp.servers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have a "servers" section in your mcp.json? Just add the server entry inside it.

1. Open VS Code → Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
2. Run "MCP: Open User Configuration" to open your mcp.json
3. Paste the snippet and save
4. Start the server when prompted (or from the MCP servers view) and use it in Copilot Chat

### Cursor

AI-first editor

- macOS: `~/.cursor/mcp.json`
- Windows: `%USERPROFILE%\.cursor\mcp.json`

```json
{
  "mcpServers": {
    "mewcp": {
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your mcp.json? Just add the server entry inside it.

1. Open Cursor → Settings → Cursor Settings → MCP
2. Click "Add new global MCP server"
3. Paste the snippet and save
4. Restart Cursor

### Codex

OpenAI's CLI agent

- Add the snippet to your Codex MCP config or your standard MCP config file for the CLI tool you use.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Codex generally reads a standard MCP server block, so you can add this alongside your other configured servers.

1. Open your Codex MCP config or project-level config file
2. Paste the MewCP server block inside the config JSON/TOML structure your tool expects
3. Save the file and restart Codex
4. Verify the tool is available inside a fresh session

### Claude Code

Anthropic's CLI agent

- ~/.claude.json (user scope) or .mcp.json in your project root — create it if it doesn't exist. Or skip the file and use the CLI command below.

```json
{
  "mcpServers": {
    "mewcp": {
      "type": "http",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it.

1. Open ~/.claude.json (or .mcp.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file and start (or restart) Claude Code
4. Or skip the file entirely and run the CLI command below instead

### OpenCode

Open-source terminal agent

- ~/.config/opencode/opencode.json (global) or opencode.json in your project root — create it if it doesn't exist.

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mewcp": {
      "type": "remote",
      "url": "https://gateway.mewcp.com/personal/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcp" section in your opencode.json? Just add the server entry inside it.

1. Open ~/.config/opencode/opencode.json (or opencode.json in your project root) in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and start (or restart) OpenCode

### OpenClaw

Self-hosted agent gateway

- ~/.openclaw/openclaw.json — create it if it doesn't exist.

```json
{
  "mcp": {
    "servers": {
      "mewcp": {
        "transport": "streamable-http",
        "url": "https://gateway.mewcp.com/personal/mcp",
        "enabled": true,
        "headers": {
          "Authorization": "Bearer API_KEY"
        }
      }
    }
  }
}
```

Already have an "mcp" section in your openclaw.json? Just add the server entry inside "servers".

1. Open ~/.openclaw/openclaw.json in a text editor
2. Paste the snippet inside the outer { } (merge with your existing "mcp" section if you have one)
3. Save the file and restart OpenClaw

### Antigravity

Google's agentic IDE

- ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace-local) — create it if it doesn't exist.

```json
{
  "mcpServers": {
    "mewcp": {
      "serverUrl": "https://gateway.mewcp.com/personal/mcp",
      "headers": {
        "Authorization": "Bearer API_KEY"
      }
    }
  }
}
```

Already have an "mcpServers" section in your config? Just add the server entry inside it. Remote servers must use the "serverUrl" field — the legacy "url"/"httpUrl" fields aren't supported.

1. In the editor's agent side panel, click "…" → "MCP Servers" → "Manage MCP Servers" → "View raw config" (Antigravity CLI: type /mcp instead to open the Interactive MCP Manager)
2. Paste the snippet inside the outer { } (merge with your existing "mcpServers" section if you have one)
3. Save the file — the server connects automatically

### Hermes

Nous Research's CLI agent

- config.yaml in your Hermes config directory (~/.hermes) — add this under a top-level "mcp_servers:" key.

```yaml
mcp_servers:
  mewcp:
    url: "https://gateway.mewcp.com/personal/mcp"
    headers:
      Authorization: "Bearer API_KEY"
```

Already have an "mcp_servers" section in your config.yaml? Just add the server entry inside it.

1. Open config.yaml in your Hermes config directory
2. Paste the snippet under the top-level "mcp_servers:" key (merge with existing entries if you have any)
3. Save the file, then run /reload-mcp in Hermes (or start a fresh session)
4. Ask Hermes "Tell me which MCP-backed tools are available right now" to confirm it connected

### DeepSeek Harness

DeepSeek's agent harness

- cordis.yml in your DSH project — or the patch file you mount plugins from.

```yaml
- id: mcp-mewcp
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: mewcp
    transport: streamable-http
    url: https://gateway.mewcp.com/personal/mcp
    headers:
      Authorization: "Bearer API_KEY"
```

One plugin instance = one MCP server. Add this entry to your plugin list; don't nest it inside another entry.

1. Open cordis.yml (or your patch file) in your DSH project
2. Paste the entry into your plugin list, keeping the leading dash and indentation
3. Restart DSH (or let HMR reload) — tools register as mcp__mewcp__<tool_name>
4. Verify with: dsh web --dump-config | grep -A3 mcp

## SDKs

### Python

fastmcp client

```python
import asyncio
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport

SERVER_URL = "https://gateway.mewcp.com/personal/mcp"
API_KEY = "API_KEY"

transport = StreamableHttpTransport(
    url=SERVER_URL,
    headers={
        "Authorization": f"Bearer {API_KEY}",
    }
)

async def main():
    client = Client(transport)
    async with client:
        tools = await client.list_tools()
        print(tools)

asyncio.run(main())
```

1. Install fastmcp: pip install fastmcp
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run your script

### TypeScript

MCP SDK

```typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const SERVER_URL = "https://gateway.mewcp.com/personal/mcp";
const API_KEY = "API_KEY";

const transport = new StreamableHTTPClientTransport(new URL(SERVER_URL), {
  requestInit: {
    headers: {
      Authorization: `Bearer ${API_KEY}`,
    },
  },
});

const client = new Client({ name: "mewcp-client", version: "1.0.0" });
await client.connect(transport);

const tools = await client.listTools();
console.log(tools.tools.map((t) => t.name));
```

1. Install: npm install @modelcontextprotocol/sdk
2. Copy the snippet into your project
3. Replace API_KEY with your key from the dashboard
4. Run with Node 18+ as an ES module (e.g. npx tsx script.ts)