graphql-mcp

graphql-mcp

1

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\"}"
}