apollo-mcp-server

โดย apollographql

เชื่อมต่อ AI agents กับ GraphQL APIs ผ่าน Model Context Protocol พร้อมเครื่องมือ introspection และ operation ในตัว เปิดเผย GraphQL operations เป็น MCP tools; รองรับแหล่ง operation สามประเภท: ไฟล์ในเครื่อง, คอลเลกชัน GraphOS Studio, และ persisted query manifests มีเครื่องมือ introspection สี่อย่าง (introspect, search, validate, execute) สำหรับการสำรวจ schema และทดสอบ query แบบ ad-hoc; โหมด minification ลดการใช้ token ด้วยสัญกรณ์แบบกะทัดรัด กำหนดค่าการรับรองความถูกต้องผ่าน static headers,...

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

Skills เพิ่มเติมจาก apollographql

apollo-client
apollographql
Apollo Client เป็นไลบรารีจัดการสถานะที่ครอบคลุมสำหรับ JavaScript ที่ช่วยให้คุณจัดการข้อมูลทั้งในเครื่องและระยะไกลด้วย GraphQL เวอร์ชัน 4.x นำเสนอการแคชที่ปรับปรุงดีขึ้น การรองรับ TypeScript ที่ดีขึ้น และความเข้ากันได้กับ React 19
official
apollo-client
apollographql
คู่มือที่ครอบคลุมสำหรับการสร้างแอปพลิเคชัน React ด้วย Apollo Client 4.x ครอบคลุมการสอบถาม การกลายพันธุ์ การแคช และการจัดการสถานะ รองรับเฟรมเวิร์ก React และการตั้งค่าหลายแบบ: แอปฝั่งไคลเอ็นต์ (Vite, CRA), Next.js App Router พร้อม React Server Components, React Router 7 พร้อมสตรีมมิ่ง SSR และ TanStack Start รวมถึง hooks สำหรับการสอบถาม (useQuery, useLazyQuery), การกลายพันธุ์ (useMutation) และรูปแบบที่ใช้ Suspense (useSuspenseQuery, useBackgroundQuery) สำหรับ React 18+ และ 19 สมัยใหม่...
official
apollo-connectors
apollographql
รวม REST API เข้ากับ GraphQL supergraphs โดยใช้ @source และ @connect directives มีกระบวนการ 5 ขั้นตอนที่มีโครงสร้าง: ศึกษาโครงสร้าง API, ใช้ schema กับ directives, ตรวจสอบผ่าน rover supergraph compose, ดำเนินการ connectors, และทดสอบครอบคลุม รองรับการกำหนดค่าคำขอรวมถึง headers, body payloads, การทำ batch สำหรับรูปแบบ N+1, และการแทรกตัวแปรสภาพแวดล้อมผ่าน $env จัดการการแมปการตอบสนองด้วยการเลือกฟิลด์, การตั้งชื่ออื่น, การเลือกย่อยสำหรับข้อมูลที่ซ้อนกัน, และ entity...
official
apollo-federation
apollographql
Apollo Federation ช่วยให้สามารถรวม GraphQL API หลายตัว (ซับกราฟ) เข้าด้วยกันเป็นซูเปอร์กราฟแบบรวมศูนย์
official
apollo-ios
apollographql
Apollo iOS เป็น GraphQL ไคลเอนต์แบบ strongly-typed สำหรับแพลตฟอร์ม Apple โดยสร้างประเภท Swift จากการดำเนินการและสคีมา GraphQL ของคุณ และมาพร้อมกับไคลเอนต์แบบ async/await, แคชแบบ normalized (ในหน่วยความจำหรือ backed โดย SQLite), การขนส่ง HTTP แบบ interceptor-based ที่เสียบได้ซึ่งจัดการ queries, mutations, และ multipart subscriptions, และการขนส่ง WebSocket แบบเลือกได้ (graphql-transport-ws) ที่สามารถรองรับการดำเนินการทุกประเภท
official
apollo-kotlin
apollographql
Apollo Kotlin เป็นไคลเอนต์ GraphQL ที่มีการกำหนดชนิดข้อมูลอย่างเข้มงวด ซึ่งสร้างโมเดล Kotlin จากการดำเนินการและสคีมา GraphQL ของคุณ สามารถใช้ในโปรเจกต์ Android, JVM และ Kotlin Multiplatform ได้
official
apollo-router
apollographql
Apollo Router เป็นกราฟเราเตอร์ประสิทธิภาพสูงที่เขียนด้วยภาษา Rust สำหรับรันซูเปอร์กราฟของ Apollo Federation 2 โดยจะอยู่ด้านหน้าซับกราฟของคุณและจัดการการวางแผนคิวรี การดำเนินการ และการประกอบคำตอบ
official
apollo-router-plugin-creator
apollographql
สร้างปลั๊กอิน Rust ดั้งเดิมสำหรับ Apollo Router
official