{"id":"20896ffe-c5b0-4d86-9105-ca11e7728ec4","shortId":"3RJMQn","kind":"skill","title":"Apollo Mcp Server","tagline":"Skills skill by Apollographql","description":"# Apollo MCP Server Guide\n\nApollo MCP Server exposes GraphQL operations as MCP tools, enabling AI agents to interact with GraphQL APIs through the Model Context Protocol.\n\n## Quick Start\n\n### Step 1: Install\n\n```bash\n# Linux / MacOS\ncurl -sSL https://mcp.apollo.dev/download/nix/latest | sh\n\n# Windows\niwr 'https://mcp.apollo.dev/download/win/latest' | iex\n```\n\n### Step 2: Configure\n\nCreate `config.yaml` in your project root:\n\n```yaml\n# config.yaml\ntransport:\n  type: streamable_http\nschema:\n  source: local\n  path: ./schema.graphql\noperations:\n  source: local\n  paths:\n    - ./operations/\nintrospection:\n  introspect:\n    enabled: true\n  search:\n    enabled: true\n  validate:\n    enabled: true\n  execute:\n    enabled: true\n```\n\nStart the server:\n```bash\napollo-mcp-server ./config.yaml\n```\n\nThe 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.\n\n### Step 3: Connect\n\nAdd to your MCP client configuration:\n\n**Streamable HTTP (recommended):**\n\nClaude Desktop (`claude_desktop_config.json`):\n```json\n{\n  \"mcpServers\": {\n    \"graphql-api\": {\n      \"command\": \"npx\",\n      \"args\": [\"mcp-remote\", \"http://127.0.0.1:8000/mcp\"]\n    }\n  }\n}\n```\n\nClaude Code:\n```bash\nclaude mcp add graphql-api -- npx mcp-remote http://127.0.0.1:8000/mcp\n```\n\n**Stdio (client launches the server directly):**\n\nClaude Desktop (`claude_desktop_config.json`) or Claude Code (`.mcp.json`):\n```json\n{\n  \"mcpServers\": {\n    \"graphql-api\": {\n      \"command\": \"./apollo-mcp-server\",\n      \"args\": [\"./config.yaml\"]\n    }\n  }\n}\n```\n\n## Built-in Tools\n\nApollo MCP Server provides four introspection tools:\n\n| Tool | Purpose | When to Use |\n|------|---------|-------------|\n| `introspect` | Explore schema types in detail | Need type definitions, fields, relationships |\n| `search` | Find types in schema | Looking for specific types or fields |\n| `validate` | Check operation validity | Before executing operations |\n| `execute` | Run ad-hoc GraphQL operations | Testing or one-off queries |\n\n## Defining Custom Tools\n\nMCP tools are created from GraphQL operations. Three methods:\n\n### 1. Operation Files (Recommended)\n\n```yaml\noperations:\n  source: local\n  paths:\n    - ./operations/\n```\n\nEach file must contain exactly one operation. Each named operation becomes an MCP tool.\n\n```graphql\n# operations/GetUser.graphql\nquery GetUser($id: ID!) {\n  user(id: $id) {\n    id\n    name\n    email\n  }\n}\n```\n\n```graphql\n# operations/CreateUser.graphql\nmutation CreateUser($input: CreateUserInput!) {\n  createUser(input: $input) {\n    id\n    name\n  }\n}\n```\n\n### 2. Operation Collections\n\n```yaml\noperations:\n  source: collection\n  id: your-collection-id\n```\n\nUse GraphOS Studio to manage operations collaboratively.\n\n### 3. Persisted Queries\n\n```yaml\noperations:\n  source: manifest\n  path: ./persisted-query-manifest.json\n```\n\nFor production environments with pre-approved operations.\n\n## Reference Files\n\nDetailed documentation for specific topics:\n\n- [Tools](references/tools.md) - Introspection tools and minify notation\n- [Configuration](references/configuration.md) - All configuration options\n- [Troubleshooting](references/troubleshooting.md) - Common issues and solutions\n\n## Key Rules\n\n### Security\n\n- **Never expose sensitive operations** without authentication\n- Use `headers` configuration for API keys and tokens\n- Disable introspection tools in production (they are disabled by default)\n- Set `overrides.mutation_mode: explicit` to require confirmation for mutations\n\n### Authentication\n\n```yaml\n# Static header\nheaders:\n  Authorization: \"Bearer ${env.API_TOKEN}\"\n\n# Dynamic header forwarding\nforward_headers:\n  - x-forwarded-token\n\n# OAuth (streamable_http transport)\ntransport:\n  type: streamable_http\n  auth:\n    servers:\n      - https://auth.example.com/.well-known/openid-configuration\n    audiences:\n      - https://api.example.com\n```\n\n### Token Optimization\n\nEnable minification to reduce token usage:\n\n```yaml\nintrospection:\n  introspect:\n    minify: true\n  search:\n    minify: true\n```\n\nMinified output uses compact notation:\n- **T** = type, **I** = input, **E** = enum\n- **s** = String, **i** = Int, **b** = Boolean, **f** = Float, **d** = ID\n- **!** = required, **[]** = list\n\n### Mutations\n\nControl mutation behavior via the `overrides` section:\n\n```yaml\noverrides:\n  mutation_mode: all       # Execute mutations directly\n  # mutation_mode: explicit  # Require explicit confirmation\n  # mutation_mode: none      # Block all mutations (default)\n```\n\n## Common Patterns\n\n### GraphOS Cloud Schema\n\n```yaml\n# schema.source defaults to uplink — can be omitted when graphos is configured\ngraphos:\n  apollo_key: ${env.APOLLO_KEY}\n  apollo_graph_ref: my-graph@production\n```\n\n### Local Development\n\n```yaml\ntransport:\n  type: streamable_http\nschema:\n  source: local\n  path: ./schema.graphql\nintrospection:\n  introspect:\n    enabled: true\n  search:\n    enabled: true\n  validate:\n    enabled: true\n  execute:\n    enabled: true\noverrides:\n  mutation_mode: all\n```\n\n### Production Setup\n\n```yaml\ntransport:\n  type: streamable_http\nendpoint: https://api.production.com/graphql\noperations:\n  source: manifest\n  path: ./persisted-query-manifest.json\ngraphos:\n  apollo_key: ${env.APOLLO_KEY}\n  apollo_graph_ref: ${env.APOLLO_GRAPH_REF}\nheaders:\n  Authorization: \"Bearer ${env.API_TOKEN}\"\nhealth_check:\n  enabled: true\n```\n\n### Docker\n\n```yaml\ntransport:\n  type: streamable_http\n  address: 0.0.0.0\n  port: 8000\nendpoint: ${env.GRAPHQL_ENDPOINT}\ngraphos:\n  apollo_key: ${env.APOLLO_KEY}\n  apollo_graph_ref: ${env.APOLLO_GRAPH_REF}\nhealth_check:\n  enabled: true\n```\n\n## Ground Rules\n\n- ALWAYS configure authentication before exposing to AI agents\n- ALWAYS use `mutation_mode: explicit` or `mutation_mode: none` in shared environments\n- NEVER expose introspection tools with write access to production data\n- PREFER operation files over ad-hoc execute for predictable behavior\n- PREFER streamable_http transport for remote and multi-client deployments\n- USE stdio only when the MCP client launches the server process directly\n- USE GraphOS Studio collections for team collaboration","tags":["apollo","mcp","server","skills","apollographql"],"capabilities":["skill","source-apollographql","category-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/apollographql/skills/apollo-mcp-server","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under apollographql/skills","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T05:40:25.830Z","embedding":null,"createdAt":"2026-04-18T20:32:21.976Z","updatedAt":"2026-04-23T05:40:25.830Z","lastSeenAt":"2026-04-23T05:40:25.830Z","tsv":"'/.well-known/openid-configuration':442 '/apollo-mcp-server':195 '/config.yaml':100,197 '/download/nix/latest':46 '/download/win/latest''':52 '/graphql':581 '/operations':78,277 '/persisted-query-manifest.json':342,586 '/schema.graphql':73,553 '0.0.0.0':614 '1':37,268 '127.0.0.1':107,113,159,174 '2':55,315 '3':134,334 '4000':122 '8000':115,616 '8000/mcp':108,160,175 'access':663 'ad':246,672 'ad-hoc':245,671 'add':136,166 'address':112,613 'agent':23,644 'ai':22,643 'alway':637,645 'api':28,130,152,169,193,389 'api.example.com':444 'api.production.com':580 'api.production.com/graphql':579 'apollo':1,8,12,97,202,531,535,588,592,621,625 'apollo-mcp-serv':96 'apollographql':7 'approv':349 'arg':155,196 'audienc':443 'auth':438 'auth.example.com':441 'auth.example.com/.well-known/openid-configuration':440 'authent':384,412,639 'author':417,599 'avail':105 'b':476 'bash':39,95,163 'bearer':418,600 'becom':288 'behavior':487,677 'block':509 'boolean':477 'built':199 'built-in':198 'category-skills' 'check':237,604,632 'claud':145,161,164,182,186 'claude_desktop_config.json':147,184 'client':140,177,687,695 'cloud':516 'code':162,187 'collabor':333,707 'collect':317,321,325,704 'command':153,194 'common':372,513 'compact':464 'config.yaml':58,64 'configur':56,141,365,368,387,529,638 'confirm':409,505 'connect':135 'contain':281 'context':32 'control':485 'creat':57,262 'createus':307,310 'createuserinput':309 'curl':42 'custom':257 'd':480 'data':666 'default':111,119,402,512,520 'defin':256 'definit':222 'deploy':688 'desktop':146,183 'detail':219,353 'develop':543 'direct':181,499,700 'disabl':393,400 'docker':607 'document':354 'dynam':421 'e':470 'elsewher':132 'email':303 'enabl':21,81,84,87,90,447,556,559,562,565,605,633 'endpoint':103,118,126,578,617,619 'enum':471 'env.api':419,601 'env.apollo':533,590,595,623,628 'env.graphql':618 'environ':345,656 'exact':282 'execut':89,241,243,497,564,674 'explicit':406,502,504,649 'explor':215 'expos':15,380,641,658 'f':478 'field':223,235 'file':270,279,352,669 'find':226 'float':479 'forward':423,424,428 'four':206 'getus':295 'graph':536,540,593,596,626,629 'grapho':328,515,527,530,587,620,702 'graphql':16,27,117,151,168,192,248,264,292,304 'graphql-api':150,167,191 'ground':635 'guid':11 'header':386,415,416,422,425,598 'health':603,631 'hoc':247,673 'http':68,110,143,432,437,548,577,612,680 'id':296,297,299,300,301,313,322,326,481 'iex':53 'input':308,311,312,469 'instal':38 'int':475 'interact':25 'introspect':79,80,207,214,360,394,454,455,554,555,659 'issu':373 'iwr':49 'json':148,189 'key':127,376,390,532,534,589,591,622,624 'launch':178,696 'linux':40 'list':483 'local':71,76,275,542,551 'localhost':121 'look':230 'maco':41 'manag':331 'manifest':340,584 'mcp':2,9,13,19,98,102,139,157,165,172,203,259,290,694 'mcp-remot':156,171 'mcp.apollo.dev':45,51 'mcp.apollo.dev/download/nix/latest':44 'mcp.apollo.dev/download/win/latest''':50 'mcp.json':188 'mcpserver':149,190 'method':267 'minif':448 'minifi':363,456,459,461 'mode':405,495,501,507,569,648,652 'model':31 'multi':686 'multi-cli':685 'must':280 'mutat':306,411,484,486,494,498,500,506,511,568,647,651 'my-graph':538 'name':286,302,314 'need':220 'never':379,657 'none':508,653 'notat':364,465 'npx':154,170 'oauth':430 'omit':525 'one':253,283 'one-off':252 'oper':17,74,238,242,249,265,269,273,284,287,316,319,332,338,350,382,582,668 'operations/createuser.graphql':305 'operations/getuser.graphql':293 'optim':446 'option':369 'output':462 'overrid':123,490,493,567 'overrides.mutation':404 'path':72,77,276,341,552,585 'pattern':514 'persist':335 'port':114,615 'pre':348 'pre-approv':347 'predict':676 'prefer':667,678 'process':699 'product':344,397,541,571,665 'project':61 'protocol':33 'provid':205 'purpos':210 'queri':255,294,336 'quick':34 'recommend':144,271 'reduc':450 'ref':537,594,597,627,630 'refer':351 'references/configuration.md':366 'references/tools.md':359 'references/troubleshooting.md':371 'relationship':224 'remot':158,173,683 'requir':408,482,503 'root':62 'rule':377,636 'run':131,244 'schema':69,216,229,517,549 'schema.source':519 'search':83,225,458,558 'section':491 'secur':378 'sensit':381 'server':3,10,14,94,99,180,204,439,698 'set':403 'setup':572 'sh':47 'share':655 'skill':4,5 'solut':375 'sourc':70,75,274,320,339,550,583 'source-apollographql' 'specif':232,356 'ssl':43 'start':35,92 'static':414 'stdio':176,690 'step':36,54,133 'streamabl':67,109,142,431,436,547,576,611,679 'string':473 'studio':329,703 'team':706 'test':250 'three':266 'token':392,420,429,445,451,602 'tool':20,201,208,209,258,260,291,358,361,395,660 'topic':357 'transport':65,433,434,545,574,609,681 'troubleshoot':370 'true':82,85,88,91,457,460,557,560,563,566,606,634 'type':66,217,221,227,233,435,467,546,575,610 'uplink':522 'usag':452 'use':213,327,385,463,646,689,701 'user':298 'valid':86,236,239,561 'via':488 'window':48 'without':383 'write':662 'x':427 'x-forwarded-token':426 'yaml':63,272,318,337,413,453,492,518,544,573,608 'your-collection-id':323","prices":[{"id":"68d483f8-e1c6-4abf-ab35-23c0f0b0027a","listingId":"20896ffe-c5b0-4d86-9105-ca11e7728ec4","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"apollographql","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:32:21.976Z"}],"sources":[{"listingId":"20896ffe-c5b0-4d86-9105-ca11e7728ec4","source":"github","sourceId":"apollographql/skills/apollo-mcp-server","sourceUrl":"https://github.com/apollographql/skills/tree/main/skills/apollo-mcp-server","isPrimary":false,"firstSeenAt":"2026-04-18T22:17:23.139Z","lastSeenAt":"2026-04-23T00:55:47.229Z"},{"listingId":"20896ffe-c5b0-4d86-9105-ca11e7728ec4","source":"skills_sh","sourceId":"apollographql/skills/apollo-mcp-server","sourceUrl":"https://skills.sh/apollographql/skills/apollo-mcp-server","isPrimary":true,"firstSeenAt":"2026-04-18T20:32:21.976Z","lastSeenAt":"2026-04-23T05:40:25.830Z"}],"details":{"listingId":"20896ffe-c5b0-4d86-9105-ca11e7728ec4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"apollographql","slug":"apollo-mcp-server","source":"skills_sh","category":"skills","skills_sh_url":"https://skills.sh/apollographql/skills/apollo-mcp-server"},"updatedAt":"2026-04-23T05:40:25.830Z"}}