Skills
Skill 6 of 15
Guide for using Apollo MCP Server to connect AI agents with GraphQL APIs.
2 minutes · 497 words · 27 sections
Install
npx skills add apollographql/skills --skill apollo-mcp-servernpx skills add apollographql/skills/plugin marketplace add apollographql/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Apollo MCP Server exposes GraphQL operations as MCP tools, enabling AI agents to interact with GraphQL APIs through the Model Context Protocol.
# Linux / MacOS
curl -sSL https://mcp.apollo.dev/download/nix/latest | sh
# Windows
iwr 'https://mcp.apollo.dev/download/win/latest' | iexCreate config.yaml in your project root:
transport:
type: streamable_http
schema:
source: local
path: ./schema.graphql
operations:
source: local
paths:
- ./operations/
introspection:
introspect:
enabled: true
search:
enabled: true
validate:
enabled: true
execute:
enabled: trueStart the server:
apollo-mcp-server ./config.yamlThe MCP endpoint is available at http://127.0.0.1:8000/mcp (streamable_http defaults: address 127.0.0.1, port 8000). The GraphQL endpoint defaults to http://localhost:4000/ — override with the endpoint key if your API runs elsewhere.
The server watches the config file for changes and automatically restarts with updated configuration.
Add to your MCP client configuration:
Streamable HTTP (recommended):
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"graphql-api": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:8000/mcp"]
}
}
}Claude Code:
claude mcp add graphql-api -- npx mcp-remote http://127.0.0.1:8000/mcpStdio (client launches the server directly):
{
"mcpServers": {
"graphql-api": {
"command": "./apollo-mcp-server",
"args": ["./config.yaml"]
}
}
}| Tool | Purpose | When to Use |
|---|---|---|
introspect | Explore schema types in detail | Need type definitions, fields, relationships |
search | Find types in schema | Looking for specific types or fields |
validate | Check operation validity | Before executing operations |
execute | Run ad-hoc GraphQL operations | Testing or one-off queries |
explorer | Open operation in Apollo Explorer | Generate Explorer URLs (requires GraphOS graph ref) |
MCP tools are created from GraphQL operations:
operations:
source: local
paths:
- ./operations/operations:
source: collection
id: your-collection-idoperations:
source: manifest
path: ./persisted-query-manifest.jsonoperations:
source: introspectoperations:
source: uplinkSecurity: Sensitive operations. Configure authentication before exposing to AI agents. Use
headersfor API keys, OAuth for user-scoped access.
overrides.mutation_mode to control mutation exposure# Static header
headers:
Authorization: "Bearer ${env.API_TOKEN}"
# Dynamic header forwarding
forward_headers:
- x-tenant-id
# OAuth (streamable_http transport)
transport:
type: streamable_http
auth:
servers:
- https://auth.example.com
audiences:
- https://api.example.com
scopes:
- read
scope_mode: require_all# Local file
schema:
source: local
path: ./schema.graphql
# Federated graphs (uplink)
schema:
source: uplink
# Non-federated graphs (graphos)
schema:
source: graphosControl mutation behavior via overrides.mutation_mode:
| Mode | Predefined mutations | Ad hoc mutations (execute) |
|---|---|---|
none | Skipped | Rejected |
explicit | Exposed | Rejected |
all | Exposed | Allowed |
Build interactive UI experiences inside MCP Apps-compatible hosts (e.g., ChatGPT). Define tools with @tool and @prefetch directives on GraphQL operations. Configure the apps directory:
apps:
path: ./appsReturn async task handles for slow GraphQL calls. Clients poll tasks/get for results:
tasks:
enabled: true
detach_after_ms: 1000Enable minification to reduce token usage:
introspection:
introspect:
minify: true
search:
minify: truegraphos:
apollo_key: ${env.APOLLO_KEY}
apollo_graph_ref: my-graph@production
schema:
source: uplink # federated graphs; use graphos for non-federated graphstransport:
type: streamable_http
schema:
source: local
path: ./schema.graphql
introspection:
introspect:
enabled: true
search:
enabled: true
validate:
enabled: true
execute:
enabled: true
overrides:
mutation_mode: alltransport:
type: streamable_http
auth:
servers:
- https://auth.example.com
audiences:
- https://api.example.com
endpoint: https://api.production.com/graphql
operations:
source: manifest
path: ./persisted-query-manifest.json
graphos:
apollo_key: ${env.APOLLO_KEY}
apollo_graph_ref: ${env.APOLLO_GRAPH_REF}
schema:
source: uplink # federated graphs; use graphos for non-federated graphs
health_check:
enabled: true
telemetry:
exporters:
metrics:
otlp:
endpoint: https://your-metrics-endpoint
protocol: http/protobuf
tracing:
otlp:
endpoint: https://your-traces-endpoint
protocol: http/protobuftransport:
type: streamable_http
address: 0.0.0.0
port: 8000
endpoint: ${env.GRAPHQL_ENDPOINT}
graphos:
apollo_key: ${env.APOLLO_KEY}
apollo_graph_ref: ${env.APOLLO_GRAPH_REF}
schema:
source: uplink # federated graphs; use graphos for non-federated graphs
health_check:
enabled: truemutation_mode: explicit or mutation_mode: none in shared environmentsoverrides.required_scopes keys after tool changesauth at the top level — it must be nested under transportmutation_mode provides per-invocation approval (it is a configuration gate)schema.source: graphos for non-federated graphs (uplink only serves federated graphs)disable_auth_token_passthrough: true when your API does not need the caller’s tokenGuide for using Apollo MCP Server to connect AI agents with GraphQL APIs. Use this skill when: (1) setting up or configuring Apollo MCP Server, (2) defining MCP tools from GraphQL operations, (3) using introspection tools (introspect, search, validate, execute, explorer), (4) configuring authentication, CORS, health checks, or telemetry, (5) writing Rhai scripts for request lifecycle hooks, (6) defining MCP prompts, (7) troubleshooting MCP server connectivity or tool execution issues, (8) building MCP Apps for interactive UI experiences, (9) deploying Apollo MCP Server to production.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
Bash(rover:*)Bash(npx:*)ReadWriteEditGlobGrepskills/apollo-mcp-server/SKILL.mdmain, last pushed 6 November 2026.SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Apollo GraphQL, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./apollographql/skills.md, and each skill at its own .md URL.11 files · 63 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of skill 6.
Documentation the agent loads on demand, rather than up front.