graphql-mcp
MCP GraphQL is a server designed for interfacing with GraphQL APIs using official client libraries. It offers functionalities for listing, invoking, and describing GraphQL operations, as well as setting custom headers for authentication.
MCP GraphQL
This project is a Model Context Protocol (MCP) server designed to interact with GraphQL APIs using the official GraphQL client libraries. It allows users to list available queries and mutations, describe schema entities, and invoke GraphQL operations.
š Features
ā
Invoke GraphQL Operations: Execute queries and mutations dynamically.
ā
List Queries & Mutations: Retrieve all available queries and mutations in the GraphQL schema.
ā
Describe Schema Entities: Obtain detailed information about GraphQL operations and types.
ā
Set Custom Headers: Configure and manage authentication or request headers for API calls.
š Requirements
- Go 1.23.0 or later
- A running GraphQL API
āļø Setup
1ļøā£ Install the Package
go install github.com/wricardo/mcp-graphql@latest
2ļøā£ Configure Environment Variables
Set the following environment variables to connect to your GraphQL API:
export ADDRESS="https://your-graphql-endpoint.com"
3ļøā£ Configure MCP Client Settings
Add the following configuration to your MCP settings:
"mcp-graphql": {
"command": "mcp-graphql",
"env": {
"ADDRESS": "https://your-graphql-endpoint.com"
},
"disabled": false,
"autoApprove": []
}
ā¶ļø Usage
Run the MCP server:
mcp-graphql
š ļø Tools
š¹ invoke_graphql
Execute a GraphQL operation (query or mutation).
š Parameters:
operation
(required): The GraphQL query or mutation string.variables
(optional): A JSON-encoded string representing query variables.
š Example:
{
"operation": "query { jobs { id name } }"
}
š¹ list_queries
Retrieve all available queries in the GraphQL schema.
š Parameters:
- None
š Example Response:
{
"queries": [
"healthcheck(input: String!): String!",
"candidate(id: String!): Candidate"
]
}
š¹ list_mutations
Retrieve all available mutations in the GraphQL schema.
š Parameters:
- None
š Example Response:
{
"mutations": [
"createCandidate(input: CandidateInput!): Candidate!",
"updateInterviewScorecard(id: String!, input: ScorecardInput!): InterviewScorecard!"
]
}
š¹ describe
Retrieve detailed information about specified GraphQL operations or types.
š Parameters:
entities
(required): A comma-separated list of GraphQL types or operations.
š Example:
{
"entities": "query.jobs,type.JobQueryParams,JobsPage,job"
}
š¹ set_headers
Set or overwrite HTTP headers for GraphQL requests.
š Parameters:
headers
(required): JSON-encoded headers.
š Example:
{
"headers": "{\"Authorization\": \"Bearer token123\", \"X-API-Key\": \"abc123\"}"
}