mcp-graphql
The mcp-graphql server enables interaction with GraphQL APIs through the following capabilities:
Schema Introspection: Dynamically retrieve GraphQL schema information using the
introspect-schematoolQuery Execution: Send queries to GraphQL endpoints via the
query-graphqltoolMutation Support: Execute mutations when enabled with the
ALLOW_MUTATIONS=trueconfigurationCustom Configuration:
Override default endpoints for both introspection and query execution
Add custom headers for authentication or other purposes
Optionally use a local schema file instead of remote introspection
This server is designed to give LLMs dynamic access to GraphQL APIs with configurable security and flexibility.
Enables LLMs to interact with GraphQL APIs by providing schema introspection and query execution capabilities, allowing models to discover and use GraphQL APIs dynamically
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-graphqlget the schema for my GraphQL API"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-graphql
A Model Context Protocol server that enables LLMs to interact with GraphQL APIs. This implementation provides schema introspection and query execution capabilities, allowing models to discover and use GraphQL APIs dynamically.
Usage
Run mcp-graphql with the correct endpoint, it will automatically try to introspect your queries.
Environment Variables (Breaking change in 1.0.0)
Note: As of version 1.0.0, command line arguments have been replaced with environment variables.
Environment Variable | Description | Default |
| GraphQL endpoint URL |
|
| JSON string containing headers for requests |
|
| Enable mutation operations (disabled by default) |
|
| Name of the MCP server |
|
| Path to a local GraphQL schema file or URL (optional) | - |
Examples
# Basic usage with a local GraphQL server
ENDPOINT=http://localhost:3000/graphql npx mcp-graphql
# Using with custom headers
ENDPOINT=https://api.example.com/graphql HEADERS='{"Authorization":"Bearer token123"}' npx mcp-graphql
# Enable mutation operations
ENDPOINT=http://localhost:3000/graphql ALLOW_MUTATIONS=true npx mcp-graphql
# Using a local schema file instead of introspection
ENDPOINT=http://localhost:3000/graphql SCHEMA=./schema.graphql npx mcp-graphql
# Using a schema file hosted at a URL
ENDPOINT=http://localhost:3000/graphql SCHEMA=https://example.com/schema.graphql npx mcp-graphqlRelated MCP server: mcp4gql
Resources
graphql-schema: The server exposes the GraphQL schema as a resource that clients can access. This is either the local schema file, a schema file hosted at a URL, or based on an introspection query.
Available Tools
The server provides two main tools:
introspect-schema: This tool retrieves the GraphQL schema. Use this first if you don't have access to the schema as a resource. This uses either the local schema file, a schema file hosted at a URL, or an introspection query.
query-graphql: Execute GraphQL queries against the endpoint. By default, mutations are disabled unless
ALLOW_MUTATIONSis set totrue.
Installation
Installing via Smithery
To install GraphQL MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp-graphql --client claudeInstalling Manually
It can be manually installed to Claude:
{
"mcpServers": {
"mcp-graphql": {
"command": "npx",
"args": ["mcp-graphql"],
"env": {
"ENDPOINT": "http://localhost:3000/graphql"
}
}
}
}Security Considerations
Mutations are disabled by default as a security measure to prevent an LLM from modifying your database or service data. Consider carefully before enabling mutations in production environments.
Customize for your own server
This is a very generic implementation where it allows for complete introspection and for your users to do whatever (including mutations). If you need a more specific implementation I'd suggest to just create your own MCP and lock down tool calling for clients to only input specific query fields and/or variables. You can use this as a reference.
Available Tools
2 toolsintrospect-schemaA
Introspect the GraphQL schema, use this tool before doing a query to get the schema information if you do not have it available as a resource already.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | No | Optional: Override the default endpoint, the already used endpoint is: http://localhost:3000/graphql | |
| headers | No | Optional: Add additional headers, the already used headers are: {} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. The description mentions timing ('before doing a query') but doesn't explain what the introspection actually returns, whether it's a one-time operation or cached, what format the schema information comes in, or any authentication/rate limit considerations. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Introspect the GraphQL schema') followed by usage guidance. Every word earns its place with no redundancy or unnecessary elaboration. The structure is clear and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and no annotations, the description should do more to explain what the introspection returns and any behavioral considerations. While it adequately covers purpose and basic usage, it lacks details about the return format, error conditions, or operational characteristics that would help an agent use it effectively. The description is minimally viable but has clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly with descriptions of their optional nature and default values. The description adds no parameter-specific information beyond what's in the schema. With high schema coverage, the baseline score of 3 is appropriate since the description doesn't need to compensate for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('introspect') and resource ('GraphQL schema'), and specifies the purpose is to 'get the schema information'. It distinguishes from the sibling tool 'query-graphql' by indicating this is for schema discovery rather than query execution. However, it doesn't explicitly contrast with the sibling beyond implied timing ('before doing a query').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: 'before doing a query to get the schema information if you do not have it available as a resource already'. It implies an alternative (having the schema as a pre-existing resource) and gives timing guidance. However, it doesn't explicitly state when NOT to use it or provide detailed comparison with the sibling tool beyond the basic distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query-graphqlC
Query a GraphQL endpoint with the given query and variables
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | No | Optional: Override the default endpoint, the already used endpoint is: http://localhost:3000/graphql | |
| headers | No | Optional: Add additional headers, the already used headers are: {} | |
| query | Yes | ||
| variables | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the action but lacks details on permissions, rate limits, error handling, or response format. This is inadequate for a tool that interacts with an external endpoint, leaving significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of querying a GraphQL endpoint, no annotations, no output schema, and incomplete parameter documentation, the description is insufficient. It fails to address critical aspects like authentication, response structure, or error scenarios, making it incomplete for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (2 out of 4 parameters have descriptions). The description adds minimal value beyond the schema, as it only mentions 'query and variables' without explaining their formats or relationships. It doesn't compensate for the undocumented parameters (query and variables lack schema descriptions), resulting in a baseline score due to partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Query') and resource ('a GraphQL endpoint'), specifying what the tool does. It distinguishes from the sibling 'introspect-schema' by focusing on general query execution rather than schema introspection, though it doesn't explicitly mention this distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention the sibling tool 'introspect-schema' or any other context for selection. It simply states the action without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: introspect-schema retrieves schema information, while query-graphql executes queries. There is no overlap or ambiguity between them, making it easy for an agent to select the correct tool.
The tools use a verb-noun pattern (introspect-schema, query-graphql), which is consistent. However, the hyphenated naming style is less common than snake_case or camelCase, and with only two tools, it's hard to assess full consistency, but they follow the same convention.
With only two tools, the server feels thin for a GraphQL domain, which typically involves operations like mutations, subscriptions, or schema updates. While core querying is covered, the scope is limited, potentially requiring agents to work around missing functionality.
The server covers basic introspection and querying but lacks essential GraphQL operations like mutations (for data modification) or subscriptions (for real-time updates). This creates significant gaps that could lead to agent failures when full lifecycle management is needed.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Product Hunt MCP — wraps the Product Hunt GraphQL API v2 (api.producthunt.com)
An MCP server that provides access to Agility CMS. See https://mcp.agilitycms.com for more details.
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTurn any GraphQL endpoint into a set of MCP tools23MIT
- AlicenseAqualityDmaintenanceGraphQL MCP Server that acts as a bridge allowing MCP clients (like Cursor or Claude Desktop) to interact with target GraphQL APIs through standard tools for schema introspection and operation execution.2203MIT
- AlicenseNot gradedqualityDmaintenanceMCP that can proxy any GraphQL API and expose graphql operations as mcp tools.4518Apache 2.0
- AlicenseAqualityAmaintenanceEnhanced MCP server for GraphQL with filtered introspection and full variable support.2626,6852MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blurrah/mcp-graphql'
If you have feedback or need assistance with the MCP directory API, please join our Discord server