Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT and other tools is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AI Fire in da houseCheck it out free

gqai

MCP.Pizza Chef: fotoetienne

gqai is a lightweight MCP server that transforms any GraphQL endpoint into a suite of MCP-compatible tools. It automatically generates tools from GraphQL queries and mutations defined in your backend, enabling AI models like Claude, Cursor, and ChatGPT to interact with your GraphQL API seamlessly. Configuration is managed via .graphqlrc.yml and .graphql files, making it easy to integrate and extend your AI workflows with real-time data and operations from your GraphQL backend.

Use This MCP server To

Expose GraphQL queries as callable MCP tools for AI agents Automatically generate MCP tools from GraphQL schema and operations Enable AI models to perform mutations via GraphQL through MCP Integrate GraphQL backend data into AI-driven workflows Simplify AI tool creation using existing GraphQL queries Use GraphQL operations to extend AI capabilities with real-time data

README

gqai

graphql β†’ ai

gqai is a lightweight proxy that exposes GraphQL operations as Model Context Protocol (MCP) tools for AI like Claude, Cursor, and ChatGPT.
Define tools using regular GraphQL queries/mutations against your GraphQL backend, and gqai automatically generates an MCP server for you.

πŸ”Œ Powered by your GraphQL backend
βš™οΈ Driven by .graphqlrc.yml + plain .graphql files


✨ Features

  • 🧰 Define tools using GraphQL operations
  • πŸ—‚ Automatically discover operations from .graphqlrc.yml
  • 🧾 Tool metadata compatible with OpenAI function calling / MCP

πŸ› οΈ Installation

go install github.com/fotoetienne/gqai@latest

πŸš€ Quick Start

  1. Create a .graphqlrc.yml:
schema: https://graphql.org/graphql/
documents: .

This file tells gqai where to find your GraphQL schema and operations.

Note: The schema parameter tells gqai where to execute the operations. This must be a live server rather than a static schema file

  1. Add a GraphQL operation

get_all_films.graphql:

# Get all Star Wars films
query get_all_films {
  allFilms {
    films {
      title
      episodeID
    }
  }
}
  1. Add gqai to your mcp.json file:
  "gqai": {
    "command": "gqai",
    "args": [
      "run",
      "--config"
      ".graphqlrc.yml"
    ]
  }

That's it! Your AI model can now call the get_all_films tool.

Usage

Configuration

GraphQL Config

The graphql config file is a YAML file that defines the GraphQL endpoint and the operations you want to expose as tools. It should be named .graphqlrc.yml and placed in the root of your project.

schema: https://graphql.org/graphql/
documents: operations

The schema field specifies the GraphQL endpoint, and the documents field specifies the directory where your GraphQL operations are located.

In this example, the operations directory contains all the GraphQL operations you want to expose as tools. Operations are defined in .graphql files, and gqai will automatically discover them.

Headers

You can also specify headers to be sent with each request to the GraphQL endpoint. This is useful for authentication or other custom headers.

schema:
  - https://graphql.org/graphql/:
      headers:
        Authorization: Bearer YOUR_TOKEN
        X-Custom-Header: CustomValue
documents: .
Using Environment Variables in Headers

You can reference environment variables in header values using the ${VARNAME} syntax. For example:

schema:
  - https://graphql.org/graphql/:
      headers:
        Authorization: Bearer ${MY_AUTH_TOKEN}
documents: .

You can also provide a default value using the ${VARNAME:-default} syntax:

schema:
  - https://graphql.org/graphql/:
      headers:
        Authorization: Bearer ${MY_AUTH_TOKEN:-default-token}
documents: .

When gqai loads the config, it will substitute ${MY_AUTH_TOKEN} with the value of the MY_AUTH_TOKEN environment variable, or use default-token if the variable is not set. This allows you to keep secrets out of your config files.

If the environment variable is not set and no default is provided, the value will be left as-is.

Using Environment Variables in Config

You can use environment variables in any part of your .graphqlrc.yml config: schema URLs, document paths, include/exclude globs, and header values. Use ${VARNAME} or ${VARNAME:-default} syntax:

schema:
  - ${MY_SCHEMA_URL:-https://default/graphql}:
      headers:
        Authorization: Bearer ${MY_AUTH_TOKEN}
documents:
  - ${MY_DOCS_PATH:-operations/**/*.graphql}
include: ${MY_INCLUDE:-operations/include.graphql}
exclude: ${MY_EXCLUDE:-operations/exclude.graphql}

gqai will substitute these with the value of the environment variable, or use the default if not set. This keeps secrets and environment-specific paths out of your config files.

MCP Configuration
Claude Desktop

To use gqai with Claude Desktop, you need to add the following configuration to your mcp.json file:

{
  "gqai": {
    "command": "gqai",
    "args": [
      "run",
      "--config",
      ".graphqlrc.yml"
    ]
  }
}

πŸ§ͺ CLI Testing

Call a tool via CLI to test:
gqai tools/call get_all_films

This will execute the get_all_films tool and print the result.

{
  "data": {
    "allFilms": {
      "films": [
        {
          "id": 4,
          "title": "A New Hope"
        },
        {
          "id": 5,
          "title": "The Empire Strikes Back"
        },
        {
          "id": 6,
          "title": "Return of the Jedi"
        },
        ...
      ]
    }
  }
}
Call a tool with arguments:

Create a GraphQL operation that takes arguments, and these will be the tool inputs:

get_film_by_id.graphql:

query get_film_by_id($id: ID!) {
  film(filmID: $id) {
    episodeID
    title
    director
    releaseDate
  }
}

Call the tool with arguments:

gqai tools/call get_film_by_id '{"id": "1"}'

This will execute the get_film_by_id tool with the provided arguments.

{
  "data": {
    "film": {
      "episodeID": 1,
      "title": "A New Hope",
      "director": "George Lucas",
      "releaseDate": "1977-05-25"
    }
  }
}

Development

Prerequisites

  • Go 1.20+

Build

go build -o gqai main.go

Test

go test ./...

Format

go fmt ./...

Run MCP server

./gqai run --config .graphqlrc.yml

Run CLI

./gqai tools/call get_all_films

About GQAI

πŸ€– Why gqai?

gqai makes it easy to turn your GraphQL backend into a model-ready tool layer β€” no code, no extra infra. Just define your operations and let AI call them.

πŸ“œ License

MIT β€” fork it, build on it, all the things.

πŸ‘‹ Author

Made with ❀️ and πŸ€–vibes by Stephen Spalding && <your-name-here>

gqai FAQ

How do I configure gqai to connect to my GraphQL endpoint?
Configure gqai using a .graphqlrc.yml file specifying your schema URL and operation documents to connect and generate tools.
Can gqai handle both queries and mutations from GraphQL?
Yes, gqai supports defining MCP tools from both GraphQL queries and mutations for full API interaction.
Which AI models are compatible with gqai-generated MCP tools?
gqai tools work with AI models supporting MCP like OpenAI's ChatGPT, Anthropic's Claude, and Google's Gemini.
How does gqai discover GraphQL operations automatically?
It reads your .graphqlrc.yml and .graphql files to find and expose operations as MCP tools without manual coding.
Is gqai easy to install and run?
Yes, gqai can be installed via a simple Go install command and configured with minimal setup.
Can I customize the metadata for the MCP tools generated by gqai?
Yes, gqai supports metadata compatible with OpenAI function calling and MCP standards, allowing customization.
Does gqai support secure access to GraphQL endpoints?
Security depends on your GraphQL backend and network setup; gqai acts as a proxy and inherits those security measures.
Can gqai be integrated into existing AI workflows?
Absolutely, gqai is designed to plug into AI workflows by exposing GraphQL operations as MCP tools for seamless integration.