apollo-mcp-server

Hubungkan agen AI ke API GraphQL melalui Model Context Protocol dengan alat introspeksi dan operasi bawaan. Mengekspos operasi GraphQL sebagai alat MCP; mendukung tiga sumber operasi: file lokal, koleksi GraphOS Studio, dan manifes kueri yang dipertahankan. Menyediakan empat alat introspeksi (introspeksi, pencarian, validasi, eksekusi) untuk eksplorasi skema dan pengujian kueri ad-hoc; mode minifikasi mengurangi penggunaan token dengan notasi ringkas. Otentikasi yang dapat dikonfigurasi melalui header statis,...

npx skills add https://github.com/apollographql/skills --skill apollo-mcp-server

Apollo MCP Server Guide

Apollo MCP Server exposes GraphQL operations as MCP tools, enabling AI agents to interact with GraphQL APIs through the Model Context Protocol.

Quick Start

Step 1: Install

# Linux / MacOS
curl -sSL https://mcp.apollo.dev/download/nix/latest | sh

# Windows
iwr 'https://mcp.apollo.dev/download/win/latest' | iex

Step 2: Configure

Create config.yaml in your project root:

# config.yaml
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: true

Start the server:

apollo-mcp-server ./config.yaml

The 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.

Step 3: Connect

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/mcp

Stdio (client launches the server directly):

Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json):

{
  "mcpServers": {
    "graphql-api": {
      "command": "./apollo-mcp-server",
      "args": ["./config.yaml"]
    }
  }
}

Built-in Tools

Apollo MCP Server provides four introspection tools:

ToolPurposeWhen to Use
introspectExplore schema types in detailNeed type definitions, fields, relationships
searchFind types in schemaLooking for specific types or fields
validateCheck operation validityBefore executing operations
executeRun ad-hoc GraphQL operationsTesting or one-off queries

Defining Custom Tools

MCP tools are created from GraphQL operations. Three methods:

1. Operation Files (Recommended)

operations:
  source: local
  paths:
    - ./operations/

Each file must contain exactly one operation. Each named operation becomes an MCP tool.

# operations/GetUser.graphql
query GetUser($id: ID!) {
  user(id: $id) {
    id
    name
    email
  }
}
# operations/CreateUser.graphql
mutation CreateUser($input: CreateUserInput!) {
  createUser(input: $input) {
    id
    name
  }
}

2. Operation Collections

operations:
  source: collection
  id: your-collection-id

Use GraphOS Studio to manage operations collaboratively.

3. Persisted Queries

operations:
  source: manifest
  path: ./persisted-query-manifest.json

For production environments with pre-approved operations.

Reference Files

Detailed documentation for specific topics:

Key Rules

Security

  • Never expose sensitive operations without authentication
  • Use headers configuration for API keys and tokens
  • Disable introspection tools in production (they are disabled by default)
  • Set overrides.mutation_mode: explicit to require confirmation for mutations

Authentication

# Static header
headers:
  Authorization: "Bearer ${env.API_TOKEN}"

# Dynamic header forwarding
forward_headers:
  - x-forwarded-token

# OAuth (streamable_http transport)
transport:
  type: streamable_http
  auth:
    servers:
      - https://auth.example.com/.well-known/openid-configuration
    audiences:
      - https://api.example.com

Token Optimization

Enable minification to reduce token usage:

introspection:
  introspect:
    minify: true
  search:
    minify: true

Minified output uses compact notation:

  • T = type, I = input, E = enum
  • s = String, i = Int, b = Boolean, f = Float, d = ID
  • ! = required, [] = list

Mutations

Control mutation behavior via the overrides section:

overrides:
  mutation_mode: all       # Execute mutations directly
  # mutation_mode: explicit  # Require explicit confirmation
  # mutation_mode: none      # Block all mutations (default)

Common Patterns

GraphOS Cloud Schema

# schema.source defaults to uplink — can be omitted when graphos is configured
graphos:
  apollo_key: ${env.APOLLO_KEY}
  apollo_graph_ref: my-graph@production

Local Development

transport:
  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: all

Production Setup

transport:
  type: streamable_http
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}
headers:
  Authorization: "Bearer ${env.API_TOKEN}"
health_check:
  enabled: true

Docker

transport:
  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}
health_check:
  enabled: true

Ground Rules

  • ALWAYS configure authentication before exposing to AI agents
  • ALWAYS use mutation_mode: explicit or mutation_mode: none in shared environments
  • NEVER expose introspection tools with write access to production data
  • PREFER operation files over ad-hoc execute for predictable behavior
  • PREFER streamable_http transport for remote and multi-client deployments
  • USE stdio only when the MCP client launches the server process directly
  • USE GraphOS Studio collections for team collaboration

Lebih banyak skill dari apollographql

apollo-federation
apollographql
Apollo Federation memungkinkan penggabungan beberapa API GraphQL (subgraf) menjadi satu supergraf yang terpadu.
apollo-ios
apollographql
Apollo iOS adalah klien GraphQL yang diketik secara kuat untuk platform Apple. Ia menghasilkan tipe Swift dari operasi dan skema GraphQL Anda, serta menyertakan klien async/await, cache yang dinormalisasi (berbasis memori atau SQLite), transport HTTP berbasis interceptor yang dapat dipasang untuk menangani kueri, mutasi, dan langganan multipart, serta transport WebSocket opsional (graphql-transport-ws) yang dapat membawa jenis operasi apa pun.
apollo-router
apollographql
Apollo Router adalah router graf berkinerja tinggi yang ditulis dalam Rust untuk menjalankan supergraf Apollo Federation 2. Router ini berada di depan subgraf Anda dan menangani perencanaan kueri, eksekusi, serta komposisi respons.
apollo-router-plugin-creator
apollographql
Buat plugin Rust asli untuk Apollo Router.
apollo-server
apollographql
Panduan lengkap untuk membangun server GraphQL dengan Apollo Server 5.x di berbagai framework. Mencakup definisi skema, resolver, pengaturan konteks, dan penanganan kesalahan dengan dukungan TypeScript. Mendukung mode mandiri untuk pembuatan prototipe dan integrasi dengan Express, Fastify, Koa, serta lingkungan serverless. Termasuk pola resolver, autentikasi/otorisasi, plugin, DataLoader untuk pencegahan N+1, dan teknik optimasi kinerja. Menyediakan dokumentasi referensi untuk sumber data, kesalahan...
graphql-operations
apollographql
Panduan praktik terbaik untuk menulis operasi GraphQL yang efisien dan aman tipe serta mengaturnya dengan fragmen. Mencakup kueri, mutasi, langganan, dan fragmen dengan konvensi penamaan, sintaks variabel, dan penggunaan direktif. Menekankan prinsip inti: hanya meminta bidang yang diperlukan, beri nama semua operasi, gunakan variabel alih-alih nilai hardcoded, dan sertakan bidang id untuk cacheability. Merekomendasikan penempatan fragmen bersama komponen dan menggunakan direktif @include / @skip untuk bidang kondisional...
graphql-schema
apollographql
Panduan praktik terbaik industri untuk merancang skema GraphQL yang intuitif, berperforma tinggi, dan mudah dipelihara. Mencakup prinsip desain inti termasuk organisasi tipe yang berpusat pada klien, pola nullability eksplisit, dan strategi evolusi yang kompatibel ke belakang. Menyediakan dokumentasi referensi tentang tipe, konvensi penamaan, pagination berbasis kursor, pemodelan kesalahan, dan pertimbangan keamanan. Mencakup pola praktis untuk antarmuka, union, tipe input, mutasi, dan strategi ID dengan contoh kode...
rover
apollographql
CLI Apollo Rover untuk mengelola skema GraphQL, federasi, dan pengembangan supergraph lokal. Publikasikan, ambil, dan validasi skema subgraph; buat supergraph terfederasi secara lokal atau melalui GraphOS. Termasuk pemeriksaan skema (validasi pra-deploy), linting, dan introspeksi dari server yang berjalan. Perintah rover dev memulai Router lokal dengan komposisi skema otomatis untuk alur kerja pengembangan. Mendukung pola CI/CD dengan validasi periksa-sebelum-publikasi dan output JSON untuk skrip. Memerlukan...