io.github.apollographql/graphos-mcp-server

GraphOS MCP Server

Search Apollo docs, specs, and best practices

Endpointhttps://mcp.apollographql.com (streamable-http)
Registry version1.17.0
Now48 tools · grade F (46) · pin ts_f23ff77b71fe50d99d5bf2ba225349b9 · protocol 2025-06-18
First / last listed2026-10-26 05:25 UTC / 2026-10-26 05:25 UTC
Grade over time2026-10-26: F (46), 48 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-26 05:25 UTC
48 tools, grade F (46)

Tools: DeleteSubgraph TagGraphArtifact GetContractConfig GetClientMetrics CreateProposal ReviewProposal PublishProposalRevision GetSubgraphMetrics GetGraphArtifact ApolloConnectorsSpec ApolloDocsRead PublishContract DeleteApiKey GetSchemaChecks ValidateOperations GetProposal GetMyIdentity GetGraphArtifactTags GetApiKeys PublishGraphSchema GetProposals ApolloDocsSearch GetOfflineLicense GetLintResults UntagGraphArtifact GetGraphSchema UpdateProposalStatus GetSupergraphSchema GetOperationMetrics GetCheckResults GetLaunchHistory RenameApiKey GetLatestLaunch GetPersistedQueryListStatus PublishSubgraph GetVariantDetails GetTopOperations GetLaunch GetSubgraphSchema RunSchemaCheck GetReadme DeleteGraph LintSchema CreateApiKey PublishPersistedQueries RunSubgraphCheck AddProposalComment PublishReadme

Current tools (48)

DeleteSubgraphRemove a subgraph from a variant and start composition, the same write that `rover subgraph delete` performs. Returns the composition errors that the removal causes. This deletes the subgraph from the variant and can break the running router. Set dryRun to true first: the response then reports the composition result that the removal would produce, including updatedGateway, and deletes nothing. Pro
params: graphId*, variant*, subgraphName*, dryRun
TagGraphArtifactAssign a tag to a graph artifact, the same write that `rover graph-artifact tag` performs. If the tag does not exist, it is created. If it exists, it moves to this artifact, and any router that fetches by that tag receives the new artifact. Returns the artifact's ID and digest, or an error with a message. Provide the graph ID, the tag name, and the artifact digest.
params: graphId*, tag*, digest*
GetContractConfigRead the filter configuration of a contract variant: the tags it includes, the tags it excludes, the source variant it is built from, and a human-readable description of the configuration. This is the same read that `rover contract describe` performs. A contract variant is a filtered view of another variant's schema, built by including and excluding schema elements by tag. The filter configuration
params: graphId*, variant*
GetClientMetricsTraffic broken down by client for a graph over a time window, as compact CSV. Columns: start timestamp, end exclusive timestamp, client name, client version, operation name, request count, request latency p50 ms, request latency p99 ms, request with error count. Answers which clients call a graph, which client versions are still on the wire, and which client drives errors or latency. Clients that
params: graphId*, from*, to*, resolution, orderBy, variantName, operationName, limit
CreateProposalCreate a schema proposal against a source variant, the same action as Create proposal in GraphOS Studio. GraphOS creates a proposal variant that starts as a copy of the source variant's schema, and the proposal starts in DRAFT. Returns the proposal variant's name and the new proposal's ID and status, or an error with a message. To add schema changes, call PublishProposalRevision next. Provide the
params: graphId*, displayName*, sourceVariant*, description
ReviewProposalApprove or reject a revision of a schema proposal, with an optional comment, the same action as Review in GraphOS Studio. Only a requested reviewer can review, and calling this again replaces the caller's earlier review. Returns the proposal's status and its reviews, or an error with a message. Provide the graph ID, the proposal variant name and latestRevision.id from GetProposal, and the decision
params: graphId*, proposalVariant*, revisionId*, decision*, comment
PublishProposalRevisionSave a new revision of a schema proposal by publishing changed subgraph schemas to its proposal variant, the same action as Save revision in GraphOS Studio. GraphOS composes the proposal variant, records the diff against the source variant, and runs schema checks on it. The source variant does not change. Send only the subgraphs that change, each with its full SDL. previousLaunchId must be the pro
params: graphId*, proposalVariant*, previousLaunchId*, revision*, summary*, subgraphs*, gitContext
GetSubgraphMetricsTop subgraphs/connectors by traffic/health for a graph over a time window, as compact CSV. Columns: start timestamp, end exclusive timestamp, fetch service name, fetch count, fetch latency p50 ms, fetch latency p99 ms, fetch with errors count. Ranked by `orderBy` descending: default FETCH_COUNT (busiest); FETCH_WITH_ERRORS_COUNT for most error-prone, FETCH_LATENCY_P99_MS for slowest. `variantName`
params: graphId*, from*, to*, resolution, orderBy, variantName, subgraphName, clients, limit
GetGraphArtifactFetch a graph artifact by its digest, the same lookup that `rover graph-artifact fetch --digest` performs. A graph artifact is the build output, such as the composed supergraph schema, that GraphOS Router fetches from Apollo's OCI registry. Returns the artifact's ID, digest, status (GRAPH_ARTIFACT_COMPLETED, GRAPH_ARTIFACT_PENDING, or GRAPH_ARTIFACT_FAILED), build errors, timestamps, variant, the
params: graphId*, digest*
ApolloConnectorsSpecReturns the Apollo Connectors specification for guidance on creating or modifying GraphQL schemas that use @connect or @source.
params: none
ApolloDocsReadReads an Apollo documentation page by slug in chunks. Use slugs returned by ApolloDocsSearch.
params: slug*, chunkIndex*
PublishContractCreate or update a contract variant and start a launch for it, the same write that `rover contract publish` performs. A contract variant is a filtered view of another variant's schema, built by including and excluding schema elements by tag. The filter configuration replaces the previous one in full, so send the complete include and exclude lists rather than only the tags you want to change. The s
params: graphId*, contractVariant*, sourceVariant, include*, exclude*, hideUnreachableTypes*, initiateLaunch
DeleteApiKeyDelete an API key from an organization, the same write that `rover api-key delete` performs. This cannot be undone, and every client that uses the key stops authenticating. Returns the deleted key's ID. Provide the organization ID and the key ID, which GetApiKeys returns.
params: organizationId*, keyId*
GetSchemaChecksList past schema checks for a graph: each check's ID, status, timestamps, the subgraph it checked, the variant it ran against, the commit, and the status of each task in the check, plus the total count for the filter. Use this to find a check, then pass its ID to GetCheckResults for failure details. Provide the graph ID. Optionally filter by status (PASSED, FAILED, PENDING), subgraph names, branch
params: graphId*, limit, offset, status, subgraphs, branches, variants, authors, ids
ValidateOperationsValidate client GraphQL operations against a variant's published schema and return each problem's type (FAILURE, WARNING, INVALID), code, description, and the name of the operation it came from. This is the same check that `rover client check` runs. Nothing is published and no state changes. Provide the graph ID and the operations, each one a body and an optional name. Optionally name the variant
params: graphId*, operations*, variant
GetProposalRead one schema proposal by its ID: title, description, status, author, the source variant, and the proposal variant with the ID of its latest launch. Also returns the latest revision (its ID, summary, schema check, and launch), every review with its decision and comment, and whether the source variant changed since the proposal was created. The write tools for a proposal take the graph ID and the
params: proposalId*
GetMyIdentityResolve the caller's identity from their API key or OAuth token. Call this FIRST when the user asks about "my graph" but has not provided a graph ID. For a graph/service key, `me` resolves to a Graph: use `id` as the graphId and `variants[].name` as the variant for the graph-scoped health-check tools, so the user does not have to supply either. For a user (personal key or OAuth), `me` resolves to
params: none
GetGraphArtifactTagsList the graph artifact tags on a graph and the artifact each tag points to: the artifact's ID, digest, status, creation time, and variant. GraphOS Router can fetch an artifact by tag name instead of by digest. It is similar to `rover graph-artifact list-tags`, which filters by artifact digest instead of variant. Use it to find a tag or a digest before you call GetGraphArtifact, TagGraphArtifact,
params: graphId*, variant, first, after
GetApiKeysList the API keys and client-credential pairs of an organization. For each key: its ID, name, type, creation, expiry, last use, revocation time, and the resources it can access. For each client-credential pair (an OAuth client that authenticates with the client credentials grant): its client ID, name, creation time, creator, grant types, scopes, and the resources it can access. Key values and clie
params: organizationId*, status, type, first, after, pairsFirst, pairsAfter
PublishGraphSchemaPublish a schema to a graph variant, the same write that `rover graph publish` performs. Use this for a monograph; use PublishSubgraph for one subgraph of a federated graph. Returns a result code, whether the publish succeeded, a human-readable message, and the hash of the published schema. This changes the schema registry and can change what clients see. Run RunSchemaCheck first to see the effect
params: graphId*, variant*, schemaDocument*, branch, commit
GetProposalsList the schema proposals on a graph: each proposal's ID, title, status (DRAFT, OPEN, APPROVED, IMPLEMENTED, CLOSED), timestamps, author, the source variant it proposes changes to, and the proposal variant that holds its changes, plus the total count for the filter. A schema proposal is a reviewable set of schema changes that GraphOS stores on its own variant. Pass a proposal's id to GetProposal f
params: graphId*, status, sourceVariants, subgraphs, limit, offset
ApolloDocsSearchSearches official Apollo documentation for GraphQL, GraphOS, Apollo Router, Apollo Client, MCP Server, schema design, deployment, and Connectors. Returns URLs, slugs, and excerpts.
params: query*
GetOfflineLicenseFetch the offline Enterprise license for the organization that owns a graph, the same data that `rover license fetch` returns. The license is a signed JWT that lets GraphOS Router enable Enterprise features while it runs disconnected from GraphOS. Returns null when the organization does not have offline licenses enabled, which requires a request to Apollo. Provide the graph ID.
params: graphId*
GetLintResultsRetrieve schema lint violations from a graph's most recent schema checks: each diagnostic's coordinate, severity level, message, rule, and source location, plus error/warning/total/ignored counts. Use to assess schema quality and naming/best-practice violations. Provide the graph ID and optionally a limit (default 5 most recent schema checks).
params: graphId*, limit
UntagGraphArtifactDelete a graph artifact tag from a graph, the same write that `rover graph-artifact untag` performs. The tag and its full history are removed, and any router that fetches by that tag can no longer resolve it. The artifact itself stays. Tags that Apollo manages, such as a variant's latest tag, cannot be deleted. Returns the deleted tag name, or an error with a message. Provide the graph ID and the
params: graphId*, tag*
GetGraphSchemaRead the schema (SDL) that is currently published to a graph variant, with its hash and publication time. This is the same read that `rover graph fetch` performs. The response holds the whole document and is not truncated. A large federated graph measured over 800,000 characters, roughly 200,000 tokens, which exceeds the context window of most models. Prefer GetSubgraphSchema, which reads one subg
params: graphId*, variant*
UpdateProposalStatusChange the status of a schema proposal, the same action as the status menu in GraphOS Studio. DRAFT is for work in progress, OPEN asks reviewers to review, and CLOSED abandons the proposal. GraphOS accepts APPROVED only when the proposal has as many approvals as the graph requires, and it never accepts IMPLEMENTED from this tool. Both return a ValidationError that names the rule. Returns the propo
params: graphId*, proposalVariant*, status*
GetSupergraphSchemaRead the composed supergraph schema (SDL) for a graph variant, with the composition ID and any composition errors. This is the same read that `rover supergraph fetch` performs. A supergraph schema is the single schema that composition builds from every subgraph, and it carries federation directives that the API schema does not. The response holds the whole document and is not truncated, and a supe
params: graphId*, variant*
GetOperationMetricsTop operations by usage/health for a graph over a time window, as compact CSV. Columns: start timestamp, end exclusive timestamp, operation name, request count, request latency p50 ms, request latency p99 ms, request with error count. Ranked by `orderBy` descending: default REQUEST_COUNT (busiest); REQUEST_WITH_ERROR_COUNT for most error-prone, REQUEST_LATENCY_P99_MS for slowest. `variantName` sco
params: graphId*, from*, to*, resolution, orderBy, variantName, clients, limit
GetCheckResultsRead the outcome of one schema check run: the overall status, and for each task in the run the composition errors, lint diagnostics, schema changes with the client operations they affect, downstream variant results, and custom check violations. Use this after GetSchemaChecks gives you a check ID. Provide the graph ID and the check ID. The affected operations are paged with affectedOperationsLimit
params: graphId*, checkId*, affectedOperationsLimit, affectedOperationsOffset
GetLaunchHistoryRetrieve recent launches for a graph variant (most recent first) to detect deployment instability such as repeated failures or frequent superseded launches. Each entry includes the launch id, status, and timestamps, so you can identify a specific launch and drill into it with GetLaunch. Use to assess deployment stability. Provide the graph ID, variant name, and optionally a limit (default 20 most
params: graphId*, variant*, limit, offset
RenameApiKeyRename an API key in an organization, the same write that `rover api-key rename` performs. The key value and its access do not change. Returns the key's ID and new name. Provide the organization ID, the key ID, which GetApiKeys returns, and the new name.
params: organizationId*, keyId*, name*
GetLatestLaunchInspect the most recent launch for a graph variant: status, completion time, subgraph changes, composition errors, and a schema diff summary vs the previous launch (additions/removals/edits/deprecations plus affected operations). Use to assess schema composition health and the impact of recent schema changes. Also returns the latest approved launch for comparison. Provide the graph ID and variant
params: graphId*, variant*
GetPersistedQueryListStatusCheck whether a graph variant has a Persisted Query List (PQL), and return its ID, its name, and its current build (revision and operation count). Pass the ID to PublishPersistedQueries. Use to assess PQL configuration — a production variant with no PQL is a security gap. Provide the graph ID and variant name.
params: graphId*, variant*
PublishSubgraphPublish a subgraph schema to a variant and start composition, the same write that `rover subgraph publish` performs. Returns whether the subgraph was created or updated, any composition errors, and the launch that started. This changes the schema registry and can change what the router serves. Run RunSubgraphCheck first to see the effect on client operations. Provide the graph ID, the variant name
params: graphId*, variant*, subgraphName*, sdl*, url, revision, branch, commit
GetVariantDetailsRetrieve metadata for a graph variant: its identifier, federation version, the URL of its GraphQL endpoint, and its subgraph inventory (names only). Use this to assess a variant's composition setup, such as subgraph inventory and federation version compliance. Provide the graph ID and variant name (e.g., "production").
params: graphId*, variant*
GetTopOperationsIdentify the most-used operations on a graph variant for a time range, with request counts, types, and signatures. Use to find high-traffic operations, detect unused operations, and prioritize findings by traffic impact. Provide graph ID, variant, and a from/to time range (ISO 8601 timestamps; `to` must be at least 6 hours before now), plus an optional limit (default 50). This report is rate limit
params: graphId*, variant*, from*, to*, limit
GetLaunchInspect a single launch by ID for full detail: status, timestamps, which subgraphs changed, composition errors, and the schema diff summary. Use to drill into a specific launch — e.g. a failed or superseded one found via GetLaunchHistory (pass its id here). Provide the graph ID, variant name, and launch ID.
params: graphId*, variant*, launchId*
GetSubgraphSchemaRead one subgraph's published schema (SDL) from a variant, with its routing URL, revision, and last update time. This is the same read that `rover subgraph fetch` performs. Read one subgraph at a time: a whole supergraph document is much larger and can pass the token limit of the model. Provide the graph ID, the variant name, and the subgraph name. Use GetVariantDetails first if you do not know th
params: graphId*, variant*, subgraphName*
RunSchemaCheckStart a schema check of a proposed schema against a variant, the same check that `rover graph check` starts. Use this for a monograph or for a whole supergraph schema; use RunSubgraphCheck for one subgraph. The check runs in the background, so this returns a workflow ID and a Studio URL, not a result. Pass the returned workflowID to GetCheckResults to read the outcome. Provide the graph ID, the va
params: graphId*, variant*, proposedSchema*, branch, commit
GetReadmeRead the README of a graph variant, with the time it was last updated and who updated it. This is the same read that `rover readme fetch` performs. The README is the Markdown document shown on the variant's page in GraphOS Studio. Provide the graph ID and the variant name.
params: graphId*, variant*
DeleteGraphDelete a graph, the same write that `rover graph delete` performs. This is a soft delete: the data is not removed permanently and Apollo support can restore the graph. Every variant of the graph stops serving, so confirm the graph ID with the user before you call this. Returns null on success. Provide the graph ID.
params: graphId*
LintSchemaLint a GraphQL schema document against the graph's lint rules and return each diagnostic's coordinate, severity level, message, rule, and source location, plus the error, warning, total, and ignored counts. This is the same check that `rover graph lint` and `rover subgraph lint` run. Nothing is published and no state changes. Provide the graph ID and the schema as SDL. Optionally provide baseSdl t
params: graphId*, sdl*, baseSdl
CreateApiKeyCreate an API key for an organization. The response contains the new key's value in token. It is a live credential, so give it to the user to store in a secret manager, and do not repeat it, log it, or pass it to another tool. Which key types you can create depends on how you authenticate. With the GraphOS sign-in (OAuth), you can create OPERATOR, SCIM, and GATEWAY keys. SUBGRAPH and VARIANT keys
params: organizationId*, name*, type*, resources
PublishPersistedQueriesPublish operations to a persisted query list, the same write that `rover persisted-queries publish` performs. A persisted query list is the set of operations a router accepts when it is configured to reject anything else. Operations you do not mention stay in the list unchanged: pass operations to add or replace entries, and remove to drop them. Returns the new revision and the total operation cou
params: graphId*, listId*, operations, remove, allowOverwrittenOperations
RunSubgraphCheckStart a schema check of one proposed subgraph schema against a variant, the same check that `rover subgraph check` starts. The check runs in the background, so this returns a workflow ID and a Studio URL, not a result. Pass the returned workflowID to GetCheckResults to read the outcome. Provide the graph ID, the variant name, the subgraph name, and the proposed subgraph schema as SDL. Optionally p
params: graphId*, variant*, subgraphName*, proposedSchema*, branch, commit
AddProposalCommentAdd a comment to a schema proposal, the same action as commenting in GraphOS Studio. With no other options, the comment is a general comment on the proposal. To comment on one change, pass the schema coordinate (for example Query.products) and the subgraph name as schemaScope. To reply, pass the parent comment's ID. Returns the new comment's ID and message, or an error with a message. Provide the
params: graphId*, proposalVariant*, revisionId*, message*, parentCommentId, schemaCoordinate, schemaScope
PublishReadmeReplace the README of a graph variant, the same write that `rover readme publish` performs. The README is the Markdown document shown on the variant's page in GraphOS Studio. The new text replaces the whole README, so read the current one with GetReadme first if you intend to keep any of it. Provide the graph ID, the variant name, and the full README text.
params: graphId*, variant*, readme*

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.