apollo-connectors
作者: apollographql
使用@source和@connect指令将REST API集成到GraphQL超级图中。提供结构化的5步流程:研究API结构、使用指令实现模式、通过rover supergraph compose验证、执行连接器以及测试覆盖。支持请求配置,包括标头、请求体负载、N+1模式的批处理以及通过$env注入环境变量。处理响应映射,包括字段选择、别名、嵌套数据的子选择以及实体...
npx skills add https://github.com/apollographql/skills --skill apollo-connectorsApollo Connectors Schema Assistant
MCP Tools
If GraphOS MCP Tools are available, use them:
- connectors-spec: Fetch the complete Connectors specification before starting any connector work
- apollo_docs_search: Search for relevant documentation
- apollo_docs_read: Read specific documentation pages by slug
Documentation paths by topic:
- Requests:
/graphos/connectors/requests/url,/headers,/body,/batching - Responses:
/graphos/connectors/responses/fields,/error-handling - Mapping:
/graphos/connectors/mapping,/arrays,/enums,/literals - Entities:
/graphos/connectors/entities,/patterns
Process
Follow this 5-step process. DO NOT skip any steps.
Step 1: Research
- Understand the API being called and the structure of responses
- Ask the user for example API responses if not provided
- Fetch relevant documentation from MCP tools or reference files
- DO NOT write any code until research is complete
Step 2: Implement
- Create the schema using the template below
- Follow the grammar, methods, and variables in the reference files
- Ask clarifying questions if unsure about requirements
Step 3: Validate (Compose)
- Run
rover supergraph compose --config ./supergraph.yaml - Fix any composition errors before proceeding
Step 4: Execute
- Run
rover connector run --schema <file> -c "<Type.field>" -v "{}" - Verify the connector executes correctly
Step 5: Test
- Create or update test files under
/tests/ - Run
rover connector test - Ensure full test coverage for each connector
Schema Template
# Note to AI Friends: This is an Apollo Connectors schema. You should use your connectors-spec MCP tool if you have it available before editing this file.
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.12")
@link(url: "https://specs.apollo.dev/connect/v0.3", import: ["@source", "@connect"])
@source(name: "api_name", http: { baseURL: "https://api.example.com" })
type Query {
example(id: ID!): Example
@connect(
source: "api_name"
http: { GET: "/example/{$args.id}" }
selection: """
id
name
"""
)
}
type Example {
id: ID!
name: String
}
Version Requirements: Always use federation/v2.12 and connect/v0.3 unless specified otherwise.
Reference Files
Before implementing connectors, read the relevant reference files:
- Grammar - Selection mapping EBNF syntax
- Methods - Available transformation methods
- Variables - Available mapping variables
- Entities - Entity patterns and batching
- Validation - Rover commands for validation
- Troubleshooting - Common errors and solutions
Key Rules
Selection Mapping
- Prefer sub-selections over
->mapfor cleaner mappings - Do NOT use
$when selecting fields directly from root - Field aliasing:
newName: originalField(only when renaming) - Sub-selection:
fieldName { ... }(to map nested content)
# DO - Direct sub-selection for arrays
$.results {
firstName: name.first
lastName: name.last
}
# DO NOT - Unnecessary root $
$ {
id
name
}
# DO - Direct field selection
id
name
Entities
- Add
@connecton a type to make it an entity (no@keyneeded) - Create entity stubs in parent selections:
user: { id: userId } - When you see an ID field (e.g.,
productId), create an entity relationship - Each entity should have ONE authoritative subgraph with
@connect
Literal Values
Use $() wrapper for literal values in mappings:
$(1) # number
$(true) # boolean
$("hello") # string
$({"a": "b"}) # object
# In body
body: "$({ a: $args.a })" # CORRECT
body: "{ a: $args.a }" # WRONG - will not compose
Headers
http: {
GET: "/api"
headers: [
{ name: "Authorization", value: "Bearer {$env.API_KEY}" },
{ name: "X-Forwarded", from: "x-client" }
]
}
Batching
Convert N+1 patterns using $batch:
type Product @connect(
source: "api"
http: {
POST: "/batch"
body: "ids: $batch.id"
}
selection: "id name"
) {
id: ID!
name: String
}
Ground Rules
- NEVER make up syntax or directive values not in this specification
- NEVER use
--elv2-license accept(for humans only) - ALWAYS ask for example API responses before writing code
- ALWAYS validate with
rover supergraph composeafter changes - ALWAYS create entity relationships when you see ID fields
- Prefer
$envover$configfor environment variables - Use
rover devfor running Apollo Router locally
来自 apollographql 的更多技能
apollo-client
apollographql
Apollo Client 是一个全面的 JavaScript 状态管理库,使您能够通过 GraphQL 管理本地和远程数据。4.x 版本带来了改进的缓存、更好的 TypeScript 支持以及 React 19 兼容性。
official
apollo-client
apollographql
全面指南,涵盖使用Apollo Client 4.x构建React应用的查询、变更、缓存和状态管理。支持多种React框架和配置:客户端应用(Vite、CRA)、带React服务端组件的Next.js App Router、带流式SSR的React Router 7,以及TanStack Start。包含查询(useQuery、useLazyQuery)、变更(useMutation)的钩子,以及基于Suspense的模式(useSuspenseQuery、useBackgroundQuery),适用于现代React 18+和19...
official
apollo-federation
apollographql
Apollo Federation 支持将多个 GraphQL API(子图)组合成一个统一的超级图。
official
apollo-ios
apollographql
Apollo iOS 是一个面向 Apple 平台的强类型 GraphQL 客户端。它从你的 GraphQL 操作和模式生成 Swift 类型,并附带一个 async/await 客户端、一个规范化缓存(内存或 SQLite 支持)、一个可插拔的基于拦截器的 HTTP 传输层(处理查询、变更和多部分订阅),以及一个可选的 WebSocket 传输层(graphql-transport-ws),可承载任何操作类型。
official
apollo-kotlin
apollographql
Apollo Kotlin 是一个强类型的 GraphQL 客户端,能够根据你的 GraphQL 操作和模式生成 Kotlin 模型,可用于 Android、JVM 和 Kotlin 多平台项目。
official
apollo-mcp-server
apollographql
通过模型上下文协议将AI智能体连接到GraphQL API,内置内省与操作工具。将GraphQL操作暴露为MCP工具;支持三种操作来源:本地文件、GraphOS Studio集合和持久化查询清单。提供四种内省工具(introspect、search、validate、execute)用于模式探索和临时查询测试;压缩模式通过紧凑符号减少令牌使用。可通过静态标头配置身份验证...
official
apollo-router
apollographql
Apollo Router 是一个用 Rust 编写的高性能图形路由器,用于运行 Apollo Federation 2 超级图。它位于子图前端,负责查询规划、执行和响应组合。
official
apollo-router-plugin-creator
apollographql
为Apollo Router创建原生Rust插件。
official