The mcp-graphql
server enables interaction with GraphQL APIs through the following capabilities:
- Schema Introspection: Dynamically retrieve GraphQL schema information using the
introspect-schema
tool - Query Execution: Send queries to GraphQL endpoints via the
query-graphql
tool - Mutation Support: Execute mutations when enabled with the
ALLOW_MUTATIONS=true
configuration - Custom 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
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 |
---|---|---|
ENDPOINT | GraphQL endpoint URL | http://localhost:4000/graphql |
HEADERS | JSON string containing headers for requests | {} |
ALLOW_MUTATIONS | Enable mutation operations (disabled by default) | false |
NAME | Name of the MCP server | mcp-graphql |
SCHEMA | Path to a local GraphQL schema file (optional) | - |
Examples
Resources
- graphql-schema: The server exposes the GraphQL schema as a resource that clients can access. This is either the local schema file 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 or an introspection query.
- query-graphql: Execute GraphQL queries against the endpoint. By default, mutations are disabled unless
ALLOW_MUTATIONS
is set totrue
.
Installation
Installing via Smithery
To install GraphQL MCP Server for Claude Desktop automatically via Smithery:
Installing Manually
It can be manually installed to Claude:
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.
You must be authenticated.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
MCP for working with GraphQL servers.
Related MCP Servers
- -securityFlicense-qualityAn MCP server that enables graph database interactions with Neo4j, allowing users to access and manipulate graph data through natural language commands.Last updated -Python
- -securityAlicense-qualityA MCP server that exposes GraphQL schema information to LLMs like Claude. This server allows an LLM to explore and understand large GraphQL schemas through a set of specialized tools, without needing to load the whole schema into the contextLast updated -5826JavaScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol (MCP) server that connects GraphDB's SPARQL endpoints and Ollama models to Claude, enabling Claude to query and manipulate ontology data while leveraging various AI models.Last updated -281TypeScriptMIT License
- PythonApache 2.0