# Grafana Cloud MCP MCP Server

> **Grafana Cloud MCP MCP Server** is a hosted, multitenant Model Context Protocol (MCP) server run by **MewCP** (https://mewcp.com), giving AI agents managed access to Grafana Cloud 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/grafana-cloud-mcp
> MewCP docs:   https://docs.mewcp.com
> Full catalog: https://mewcp.com/llms.txt

---

## About

Grafana Cloud enables AI agents to investigate application and infrastructure health by querying metrics, logs, and traces, exploring dashboards, analyzing alerts, and troubleshooting incidents across monitored systems.

---

## Details

- Server ID: `grafana-cloud-mcp`
- Version: 0.1.0
- Tools: 123
- 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 — Grafana Cloud MCP has to be in the toolset
first. In order:

1. Add Grafana Cloud MCP to your toolset at https://mewcp.com/mcp/grafana-cloud-mcp
2. Connect your Grafana Cloud 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 (123)

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.

- `add_activity_to_incident` _(write)_ — Add a note (userNote activity) to an existing incident's timeline using its ID. The note body can include URLs which will be attached as context. Use this to…
- `agento11y_manage_agents` _(read)_ — Read the agent catalog of Grafana Agent Observability (the grafana-agento11y-app plugin): which agents send telemetry, what their system prompts and tools are,…
- `agento11y_manage_conversations` _(read)_ — List, search, and fetch LLM conversations from Grafana Agent Observability (the grafana-agento11y-app plugin). Operations: - 'list': recent conversations…
- `agento11y_manage_eval_collections` _(destructive)_ — Manage the curated conversations of Grafana Agent Observability (the grafana-agento11y-app plugin): bookmark conversations as saved conversations and group…
- `agento11y_manage_eval_rules` _(destructive)_ — Manage the evaluation rules and guards of Grafana Agent Observability (the grafana-agento11y-app plugin): the configuration that decides when evaluators run.…
- `agento11y_manage_evaluators` _(destructive)_ — Manage the evaluator catalog of Grafana Agent Observability (the grafana-agento11y-app plugin): read evaluators, evaluator templates, and the judge model…
- `agento11y_manage_experiments` _(destructive)_ — Manage the offline experiments of Grafana Agent Observability (the grafana-agento11y-app plugin), their trials, and their scores. An experiment is one offline…
- `agento11y_manage_generations` _(read)_ — Fetch a single LLM generation and its evaluation scores from Grafana Agent Observability (the grafana-agento11y-app plugin). Operations: - 'get': full…
- `agento11y_manage_test_suites` _(destructive)_ — Manage the test suites of Grafana Agent Observability (the grafana-agento11y-app plugin), their versions, and their test cases. A test suite is the input side…
- `alerting_manage_routing` _(read)_ — Manage Grafana alerting routing configuration, including notification policies, contact points and time intervals. Notification policies define how alerts are…
- `alerting_routing_write` _(write)_ — Create Grafana-managed contact points for alert notifications using operation 'create_contact_point'. Requires name, type and integration-specific settings.…
- `alerting_rules_read` _(read)_ — List and inspect Grafana alert rules with filtering capabilities. When to use: - Understanding why an alert is or isn't firing - Auditing alert rule…
- `alerting_rules_write` _(destructive)_ — Create, update, and delete Grafana alert rules. When to use: - Creating, updating, or deleting alert rules Operation 'update' replaces the whole rule: it takes…
- `alerting_silences_read` _(read)_ — List and inspect Grafana alerting silences. A silence temporarily suppresses notifications for alerts whose labels match a set of matchers. Operations: -…
- `alerting_silences_write` _(destructive)_ — Create, update, and delete Grafana alerting silences. A silence temporarily suppresses notifications for alerts whose labels match a set of matchers, without…
- `analyze_loki_labels` _(read)_ — Audits a Loki label strategy and optionally diagnoses query performance. Returns per-label verdicts, missing base labels, normalisation issues, and a…
- `ask_assistant` _(destructive)_ — Send a message to Grafana Assistant and wait for the full text reply. The assistant may use tools, metrics, logs, and other stack context—broader than firing…
- `assistant_search` _(read)_ — Historical/indexed memory search across your Grafana stack: infrastructure/service groups, dashboards, past investigations, mostly-resolved IRM incidents, and…
- `check_datasources_health` _(read)_ — Check datasource health. Filter by type or UIDs; omit both to check all.
- `create_annotation` _(write)_ — Create a new annotation on a dashboard or panel. Set format to 'graphite' and provide 'what' for Graphite-format annotations.
- `create_datasource` _(write)_ — Create a datasource in two steps. Called with only the type, it returns the plugin's field schema and creates nothing. Called with the type, the display name…
- `create_folder` _(write)_ — Create a Grafana folder. Provide a title and optional UID. Returns the created folder.
- `create_incident` _(write)_ — Create a new Grafana incident. Requires title, severity, and room prefix. Allows setting status, labels and custom fields. Creating an incident may notify or…
- `create_investigation` _(write)_ — Start a Grafana Assistant investigation: an agentic, multi-step root-cause analysis across the stack's metrics, logs, traces, dashboards, and alerts. Provide a…
- `create_snapshot` _(write)_ — Create a Grafana snapshot from a full dashboard payload. Supports optional expiration and external snapshot fields.
- `delete_annotation` _(destructive)_ — Permanently delete an annotation by ID. The annotation cannot be recovered afterwards.
- `delete_snapshot` _(destructive)_ — Delete a Grafana snapshot by snapshot key.
- `describe_sql_table` _(read)_ — Get column schema for a table in a supported SQL datasource (ClickHouse, Snowflake, Athena, MySQL, PostgreSQL, MSSQL). Returns column names and types.
- `diff_tempo_traces` _(read)_ — Compare two complete traces. Returns a compact summary and includes the full span-level patch when it is at most 64 KiB. Request trace-patch-v0 only when full…
- `generate_deeplink` _(write)_ — Generate deeplink URLs for Grafana resources. Supports dashboards (requires dashboardUid or provisioningPreview), panels (requires dashboardUid or…
- `get_alert_group` _(read)_ — Get a specific alert group from Grafana OnCall by its ID. Returns the full alert group details, including the most recent alert and its raw payload when the…
- `get_annotation_tags` _(read)_ — Returns annotation tags with optional filtering by tag name. Only the provided filters are applied.
- `get_annotations` _(read)_ — Fetch Grafana annotations using filters such as dashboard UID, time range and tags.
- `get_assertions` _(read)_ — Get assertion summary for a given entity with its type, name, env, site, namespace, and a time range
- `get_assistant_conversation` _(read)_ — Read the transcript of an existing Grafana Assistant conversation by ID. Covers conversations started anywhere, including the Assistant sidebar in Grafana.…
- `get_current_oncall_users` _(read)_ — Get the list of users currently on-call for a specific Grafana OnCall schedule ID. Returns the schedule ID, name, and a list of detailed user objects for those…
- `get_dashboard_by_uid` _(read)_ — Retrieves the complete dashboard, including panels, variables, and settings, for a specific dashboard identified by its UID. Pass optional version to load a…
- `get_dashboard_panel_queries` _(read)_ — Retrieve panel queries from a Grafana dashboard. Supports all datasource types (Prometheus, Loki, CloudWatch, SQL, etc.) and row-nested panels. Optionally…
- `get_dashboard_property` _(read)_ — Get specific parts of a dashboard using JSONPath expressions to minimize context window usage. JSONPath targets the dashboard's native schema. Classic v1…
- `get_dashboard_summary` _(read)_ — Get a compact summary of a dashboard including title, panel count, panel types, variables, and other metadata without the full JSON. Use this for dashboard…
- `get_datasource` _(read)_ — Retrieves detailed information about a specific datasource by UID or name. Returns the full datasource model, including name, type, URL, access settings, JSON…
- `get_doc` _(read)_ — Fetch a Grafana documentation page. Set outline_only=true to get the heading structure first, then call again with a section name for bounded retrieval.
- `get_incident` _(read)_ — Get a single incident by ID. Returns the full incident details including title, status, severity, labels, custom fields, timestamps, and other metadata.
- `get_investigation` _(read)_ — Get one Grafana Assistant investigation (AI-driven root-cause investigation) by ID. Returns the investigation's identifiers (investigationId and chatId), the…
- `get_investigation_report` _(read)_ — Read the report of one Grafana Assistant investigation (AI-driven root-cause investigation) as markdown. Returns the report plus the investigation's state,…
- `get_investigation_thread` _(read)_ — Get the working thread of one Grafana Assistant investigation (AI-driven root-cause investigation) by ID: the user-visible conversation between the…
- `get_oncall_shift` _(read)_ — Get detailed information for a specific Grafana OnCall shift using its ID. A shift represents a designated time period within a schedule when users are…
- `get_panel_image` _(read)_ — Render a Grafana dashboard panel, full dashboard or Explore view as a PNG image. Returns the image as base64 encoded data. Requires the Grafana Image Renderer…
- `get_plugin` _(read)_ — Check whether a Grafana plugin is installed and retrieve its details (name, version, type, enabled status). Returns installed=false when the plugin is not…
- `get_query_examples` _(read)_ — Get example queries for a specific datasource type. Provides sample queries with descriptions for Prometheus (PromQL), Loki (LogQL), ClickHouse (SQL with…
- `get_resource_description` _(read)_ — List available permissions and assignment capabilities for a Grafana resource type.
- `get_resource_permissions` _(read)_ — List all permissions set on a specific Grafana resource (e.g., dashboard, datasource, folder) by its type and ID.
- `get_role_assignments` _(read)_ — List all assignments for a specific role, showing which users, teams, and service accounts have been assigned this role.
- `get_role_details` _(read)_ — Get detailed information about a specific Grafana role by its UID, including permissions, metadata, and configuration.
- `get_snapshot` _(read)_ — Get a Grafana snapshot by key, including snapshot metadata and dashboard payload.
- `get_tempo_trace` _(read)_ — Retrieve a specific trace by ID
- `get_tempo_traceql_docs` _(read)_ — Retrieve TraceQL reference documentation with examples, covering attribute filters, aggregates, structural operators, and metrics queries. Consult this before…
- `grafana_api_request` _(destructive)_ — Make an authenticated HTTP request to the Grafana API. Similar to 'gh api' for GitHub. Supports any Grafana API endpoint with optional jq-style response…
- `install_plugin` _(write)_ — Install a Grafana plugin by its plugin ID. When version is omitted, the tool looks up the latest version and returns it without installing; supplying a version…
- `list_alert_groups` _(read)_ — List alert groups from Grafana OnCall with filtering options. Supports filtering by alert group ID, route ID, integration ID, state (new, acknowledged,…
- `list_all_roles` _(read)_ — List all roles in Grafana. Optionally filter to show only roles that can be delegated by the current user. Returns role details including UID, name,…
- `list_cloudwatch_dimension_values` _(read)_ — List values for a CloudWatch dimension key (e.g. the specific cluster names behind a ClusterName dimension). Requires region. Supports cross-account monitoring…
- `list_cloudwatch_dimensions` _(read)_ — List dimension keys for a CloudWatch metric. Requires region. Supports cross-account monitoring via optional accountId parameter.
- `list_cloudwatch_metrics` _(read)_ — List metrics for a CloudWatch namespace. Requires region. Supports cross-account monitoring via optional accountId parameter.
- `list_cloudwatch_namespaces` _(read)_ — List available CloudWatch namespaces (AWS/EC2, AWS/ECS, AWS/RDS, etc.). Requires region. Supports cross-account monitoring via optional accountId parameter.
- `list_dashboard_versions` _(read)_ — List saved versions of a Grafana dashboard. Returns compact metadata: version number, author, timestamp, and save message. A version number can be passed to…
- `list_datasources` _(read)_ — List all configured datasources in Grafana. Use this to discover available datasources and their UIDs. Supports filtering by type and/or name (case-insensitive…
- `list_graphite_metrics` _(read)_ — Discover available metric paths in a Graphite datasource by browsing the metric tree. Returns nodes matching the query pattern, each indicating whether it is a…
- `list_graphite_tags` _(read)_ — List available tag names in a Graphite datasource that uses tag-based metrics. Returns a list of tag name strings (e.g. ["name", "env", "region"]). These tags…
- `list_incident_custom_fields` _(read)_ — List the custom fields configured for Grafana incidents, including their type and, for select fields, the options that may be chosen.
- `list_incidents` _(read)_ — List Grafana incidents. Allows filtering by status ('active', 'resolved') and optionally including drill incidents. Returns a preview list with basic details,…
- `list_investigation_evidence` _(read)_ — List the evidence citation index for one Grafana Assistant investigation (AI-driven root-cause investigation) by ID. Investigation reports cite captured query…
- `list_investigation_profiles` _(read)_ — List the agent profiles available for Grafana Assistant investigations (AI-driven root-cause investigations) on this Grafana Cloud stack. Each profile…
- `list_investigations` _(read)_ — List Grafana Assistant investigations (AI-driven root-cause investigations) on this Grafana Cloud stack. Returns one summary per investigation — ID, chat ID,…
- `list_loki_label_names` _(read)_ — Lists all available label/field names (keys) found in logs within a specified Loki or VictoriaLogs datasource and time range. Returns a list of unique label…
- `list_loki_label_values` _(read)_ — Retrieves all unique values associated with a specific `labelName` within a Loki or VictoriaLogs datasource and time range. Returns a list of string values…
- `list_oncall_schedules` _(read)_ — List Grafana OnCall schedules, optionally filtering by team ID. If a specific schedule ID is provided, retrieves details for only that schedule. Returns a list…
- `list_oncall_teams` _(read)_ — List teams configured in Grafana OnCall. Returns a list of team objects with their details. Supports pagination.
- `list_oncall_users` _(read)_ — List users from Grafana OnCall. These are OnCall users (separate from Grafana users). Can retrieve all users in the OnCall directory, a specific user by ID, or…
- `list_prometheus_label_names` _(read)_ — List label names in a PromQL-compatible datasource (Prometheus, Thanos, Mimir, Cloud Monitoring, etc.). Allows filtering by series selectors and time range.
- `list_prometheus_label_values` _(read)_ — Gets the values for a specific label name in a PromQL-compatible datasource (Prometheus, Thanos, Mimir, Cloud Monitoring, etc.). Allows filtering by series…
- `list_prometheus_metric_metadata` _(read)_ — List Prometheus metric metadata. Returns metadata about metrics currently scraped from targets. Note: This endpoint is experimental.
- `list_prometheus_metric_names` _(read)_ — Lists metric names in a PromQL-compatible datasource (Prometheus, Thanos, Mimir, Cloud Monitoring, etc.). Filters metric names using the provided regex.…
- `list_pyroscope_label_names` _(read)_ — Lists all available label names (keys) found in profiles within a specified Pyroscope datasource, time range, and optional label matchers. Label matchers are…
- `list_pyroscope_label_values` _(read)_ — Lists all available label values for a particular label name found in profiles within a specified Pyroscope datasource, time range, and optional label…
- `list_pyroscope_profile_types` _(read)_ — Lists all available profile types available in a specified Pyroscope datasource and time range. Returns a list of all available profile types (example profile…
- `list_snapshots` _(read)_ — List Grafana dashboard snapshots with optional query and result limit filters.
- `list_sql_databases` _(read)_ — List databases, schemas, or catalogs from a supported SQL datasource. Returns the organizational units (databases, schemas, or catalogs) that contain tables.…
- `list_sql_tables` _(read)_ — List tables from a supported SQL datasource (ClickHouse, Snowflake, Athena, MySQL, PostgreSQL, MSSQL). Returns table names, schemas, and metadata.
- `list_team_roles` _(read)_ — List all roles assigned to one or more teams. Returns a map of team IDs to their assigned roles.
- `list_teams` _(read)_ — Search for Grafana teams by a query string. Returns a list of matching teams with details like name, ID, and URL.
- `list_tempo_attribute_names` _(read)_ — List available attribute names for TraceQL queries. Without a scope (resource, span, etc.) the response can be very large.
- `list_tempo_attribute_values` _(read)_ — List values for a fully scoped attribute name (e.g. resource.service.name). Useful for discovering what values exist for a specific attribute.
- `list_user_roles` _(read)_ — List all roles assigned to one or more users. Returns a map of user IDs to their assigned roles, excluding built-in roles and team-inherited roles.
- `list_users_by_org` _(read)_ — List users in the Grafana organization. Returns a list of organization users with details like userid, email, role etc.
- `query_cloudwatch` _(read)_ — Query AWS CloudWatch metrics via Grafana. Requires region. Time formats: 'now-1h', '2026-02-02T19:00:00Z', '1738519200000' (Unix ms) Common namespaces:…
- `query_elasticsearch` _(read)_ — Executes a search query against an Elasticsearch or OpenSearch datasource and retrieves matching documents. Supports Lucene query syntax (e.g., 'status:200 AND…
- `query_graphite` _(read)_ — Executes a Graphite render API query against a Graphite datasource and returns matching metric series with their datapoints. Supports the full Graphite target…
- `query_graphite_density` _(read)_ — Analyses metric data density for one or more Graphite series over a time window. Returns per-series statistics: fillRatio (fraction of non-null datapoints,…
- `query_influxdb` _(destructive)_ — Query an InfluxDB datasource via Grafana. Supports both InfluxQL (v1.x) and Flux (v2.x). The 'dialect' parameter selects the query language; if omitted it's…
- `query_loki_logs` _(read)_ — Executes a log query against a Loki or VictoriaLogs datasource and returns matching log entries (or metric samples on Loki). Defaults to the last hour, a limit…
- `query_loki_patterns` _(read)_ — Retrieves detected log patterns from a Loki datasource for a given stream selector and time range. Returns a list of patterns, each containing a pattern string…
- `query_loki_stats` _(read)_ — Retrieves index-level statistics about log streams matching a given selector within a Loki or VictoriaLogs datasource and time range. Returns an object…
- `query_prometheus` _(read)_ — Query a PromQL-compatible datasource (Prometheus, Thanos, Mimir, Cloud Monitoring, etc.) using a PromQL expression. Supports instant queries (single point) and…
- `query_prometheus_histogram` _(read)_ — Query Prometheus histogram percentiles from classic histogram '_bucket' series. Generates histogram_quantile PromQL. Example: metric='http_duration',…
- `query_pyroscope` _(read)_ — Unified Pyroscope query tool for fetching profiles or metrics from Pyroscope. Profile data shows WHICH functions consume resources; metrics data shows WHEN…
- `query_quickwit` _(read)_ — Executes a search query against a Quickwit datasource and retrieves matching documents. Supports Lucene query syntax (e.g., 'severity_text:ERROR AND…
- `query_sql` _(destructive)_ — Query a supported SQL datasource (ClickHouse, Snowflake, Athena, MySQL, PostgreSQL, MSSQL) via Grafana. Supports datasource-specific macros:…
- `query_tempo_metrics` _(read)_ — Compute trace-derived metrics using a TraceQL metrics query. The syntax is unlike PromQL. Use type 'instant' for a single value or 'range' for a time series…
- `run_panel_query` _(read)_ — Executes one or more dashboard panel queries with optional time range and variable overrides. Accepts an array of panel IDs to query in a single call. Fetches…
- `search_dashboards` _(read)_ — Search Grafana dashboards by query and/or folderUid, tag, and starred. Returns matching dashboards with title, UID, folder, tags, and URL.
- `search_docs` _(read)_ — Search Grafana documentation. Returns matching pages with title, URL, description, and product. Call with no query to list available product groups.
- `search_folders` _(read)_ — Search for Grafana folders by a query string. Returns matching folders with details like title, UID, and URL.
- `search_plugin_information` _(read)_ — Search the Grafana plugin catalog by keyword, purpose, or partial name (e.g. 'azure monitoring', 'loki', 'database'). Returns results sorted by trust: official…
- `search_tempo_traces` _(read)_ — Search for traces using TraceQL queries
- `suggest_loki_alloy_label_config` _(read)_ — Generates an Alloy loki.process snippet enforcing an approved label set via stage.label_keep, with optional log-level normalisation and soft-enforcement…
- `update_alert_group` _(destructive)_ — Update the state of a Grafana OnCall alert group: acknowledge, unacknowledge, resolve, or unresolve it by ID. Returns the alert group's resulting OnCall state…
- `update_annotation` _(destructive)_ — Updates the provided properties of an annotation by ID. Only fields included in the request are modified; omitted fields are left unchanged.
- `update_dashboard` _(destructive)_ — Create or update a dashboard. Returns the saved dashboard UID and dashboard link in the 'url' field, using the instance public URL when available. Two modes:…
- `update_datasource` _(destructive)_ — Update non-secret datasource fields by UID in two steps. Called with only the uid, it returns the datasource's field schema and changes nothing. Called with…
- `update_incident` _(write)_ — Update an existing Grafana incident by ID. Allows changing the status ('active' or 'resolved'), the severity, the title, and custom field values. Only the…
- `user_info` _(read)_ — Get information about the current Grafana identity: login, email, name, whether it is a Grafana (server) admin, the current organization, and the organizations…
- `wait_for_investigation` _(read)_ — Wait for a Grafana Assistant investigation (AI-driven root-cause investigation) to settle, up to timeoutSeconds (default 45, max 300). Many MCP clients cancel…

---

## 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)