I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

graphql-mcp
MCP server for dynamic graphql
3 years
Works with Finder
4
Github Watches
1
Github Forks
3
Github Stars
GraphQL MCP Server
A strongly-typed TypeScript Model Context Protocol (MCP) server that provides seamless access to any GraphQL API through Claude AI.
Features
- Strongly Typed: Built with TypeScript for improved code quality and type safety
- Dynamic GraphQL Integration: Connect to any GraphQL API with automatic tool generation
- Schema Introspection: Automatically discovers and exposes all GraphQL operations as tools
- Full Mutation Support: First-class support for GraphQL mutations with proper handling
- Query & Mutation Whitelisting: Optional whitelisting to control which GraphQL operations are exposed
- Rich Type Support: Properly handles complex GraphQL types, input objects, and variables
- MCP Standard Compliant: Follows the Model Context Protocol format for seamless Claude integration
- Smart Query Generation: Builds efficient GraphQL queries with proper field selection
- Authentication Support: Simple API key authentication
Repository Structure
graphql-mcp/
├── src/
│ └── graphql-mcp-server.ts # Main server implementation (TypeScript)
├── dist/ # Compiled JavaScript (generated)
├── docs/
│ ├── GETTING_STARTED.md # Setup and usage guide
│ ├── PROJECT_STATUS.md # Current project status
│ └── TECHNICAL.md # Technical documentation
├── .env.development # Environment variables
├── .env.sample # Sample environment template
├── claude_desktop_sample_config.json # Sample Claude Desktop config
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
├── run-graphql-mcp.sh # Script to run the server
└── README.md # This file
Prerequisites
- Node.js 18 or later
- TypeScript 5.x or later
- Claude Desktop with MCP support
- A GraphQL API endpoint (defaults to the Countries API if not specified)
Installation
Option 1: From npm
# Install globally
npm install -g graphql-mcp
# Run the server
graphql-mcp-server
Option 2: Clone Repository
# Clone the repository
git clone https://github.com/ctkadvisors/graphql-mcp.git
cd graphql-mcp
# Install dependencies
npm install
# Run the server
npm start
Quick Start
1. Setup Environment Variables
Copy the sample env file and update it with your GraphQL API details:
cp .env.sample .env.development
Edit .env.development
with your GraphQL API endpoint and optional API key.
2. Build and Run
First compile the TypeScript code:
npm install
npm run build
Then run the server:
node dist/graphql-mcp-server.js
Or use the provided script that compiles and runs in one step:
./run-graphql-mcp.sh
3. Claude Desktop Integration
Add this server to your Claude Desktop configuration:
-
Use the sample config as a template:
cp claude_desktop_sample_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
-
Edit the config and update the path to point to your installation:
{ "mcpServers": { "graphql": { "command": "node", "args": ["/absolute/path/to/dist/graphql-mcp-server.js"], "env": { "GRAPHQL_API_ENDPOINT": "https://your-graphql-api.com/graphql", "GRAPHQL_API_KEY": "your-api-key-if-needed", "WHITELISTED_QUERIES": "[\"countries\",\"continent\",\"languages\"]" } } } }
-
Restart Claude Desktop to connect to the server
You should now see GraphQL operations as available tools in Claude Desktop!
Operation Whitelisting
For security or performance reasons, you may want to limit which GraphQL operations (queries and mutations) are exposed to Claude. There are two approaches to controlling access:
- Enable/Disable Mutations: By default, all mutations are disabled for security. To enable mutations:
"env": {
"GRAPHQL_API_ENDPOINT": "https://example-graphql-api.com/graphql",
"ENABLE_MUTATIONS": "true"
}
- Operation Whitelisting: You can specify which specific operations should be available:
"env": {
"GRAPHQL_API_ENDPOINT": "https://example-graphql-api.com/graphql",
"ENABLE_MUTATIONS": "true",
"WHITELISTED_QUERIES": "[\"countries\",\"continent\",\"languages\"]",
"WHITELISTED_MUTATIONS": "[\"createUser\",\"updateProfile\"]"
}
The whitelists can be specified in two formats:
- As a JSON array string (shown above):
"[\"query1\",\"query2\"]"
- As a comma-separated list:
"query1,query2,query3"
IMPORTANT: The whitelist values must be strings, not actual JSON array objects. Environment variables are always passed as strings, so you need to properly escape the quotes in the JSON string as shown above.
Example of correct format in Claude Desktop configuration:
"graphql-api": {
"command": "node",
"args": [
"/Users/username/Projects/graphql-mcp/dist/graphql-mcp-server.js"
],
"env": {
"GRAPHQL_API_ENDPOINT": "https://example-graphql-api.com/graphql",
"NODE_ENV": "development",
"DEBUG": "true",
"ENABLE_MUTATIONS": "true",
"WHITELISTED_QUERIES": "[\"getUser\",\"getProducts\",\"getOrders\"]",
"WHITELISTED_MUTATIONS": "[\"createOrder\",\"updateProfile\"]"
}
}
Common mistake to avoid:
// INCORRECT - Will not work!
"WHITELISTED_QUERIES": ["getUser", "getProducts"],
"WHITELISTED_MUTATIONS": ["createOrder", "updateProfile"]
// CORRECT
"WHITELISTED_QUERIES": "[\"getUser\",\"getProducts\"]",
"WHITELISTED_MUTATIONS": "[\"createOrder\",\"updateProfile\"]"
If no whitelist is provided for a particular operation type, all operations of that type from the GraphQL schema will be available.
Example Usage
Querying Data
Once connected to Claude Desktop, you can use commands like:
View result from countries from graphql (local){}
Or with parameters:
View result from country from graphql (local){
"code": "US"
}
Using Mutations
For mutations, the tools are prefixed with mutation_
to distinguish them from queries:
View result from mutation_createUser from graphql (local){
"name": "John Doe",
"email": "john.doe@example.com"
}
Or a more complex mutation:
View result from mutation_updateProduct from graphql (local){
"id": "prod-123",
"input": {
"name": "Updated Product Name",
"price": 29.99,
"description": "This is an updated product description"
}
}
Mutations follow the same pattern as queries but allow you to modify data in your GraphQL API.
Documentation
For more detailed information, see:
- Getting Started Guide
- Technical Documentation
- Query Whitelist Documentation
- Mutations Documentation
- Project Status
Development
To make changes to the server:
- Modify the TypeScript source in
src/graphql-mcp-server.ts
- Compile the TypeScript code:
npm run build
- Run the compiled server:
node dist/graphql-mcp-server.js
Publishing to npm
To publish this package to npm:
# Make sure you're logged in to npm
npm login
# Build the project
npm run build
# Publish to npm
npm publish
The package will include the pre-built JavaScript files in the dist
directory, making it ready to use without additional build steps.
License
This project is licensed under the Business Source License 1.1 (BSL 1.1), which allows:
- Non-commercial use: You may use this software for any non-commercial purpose
- Internal business use: You may use this software for internal business operations that do not provide it to third parties as a hosted or managed service
- Open source conversion: On March 14, 2029, the code will automatically convert to the MIT license
Commercial use, including offering this software as a service to others, requires a commercial license from CTK Advisors. For more information, contact us or see the full LICENSE file.
The BSL license is designed to balance open source availability with sustainable commercial development, giving everyone free access for non-commercial purposes while protecting our ability to support and enhance the software long-term.
相关推荐
Confidential guide on numerology and astrology, based of GG33 Public information
Converts Figma frames into front-end code for various mobile frameworks.
Advanced software engineer GPT that excels through nailing the basics.
A medical specialist offering assistance grounded in clinical guidelines. Disclaimer: This is intended for research and is NOT safe for clinical use!
Discover the most comprehensive and up-to-date collection of MCP servers in the market. This repository serves as a centralized hub, offering an extensive catalog of open-source and proprietary MCP servers, complete with features, documentation links, and contributors.
Micropython I2C-based manipulation of the MCP series GPIO expander, derived from Adafruit_MCP230xx
A unified API gateway for integrating multiple etherscan-like blockchain explorer APIs with Model Context Protocol (MCP) support for AI assistants.
Mirror ofhttps://github.com/suhail-ak-s/mcp-typesense-server
本项目是一个钉钉MCP(Message Connector Protocol)服务,提供了与钉钉企业应用交互的API接口。项目基于Go语言开发,支持员工信息查询和消息发送等功能。
Reviews

user_Szx1D8Yx
I'm a huge fan of graphql-mcp by ctkadvisors! This tool has significantly improved my workflow with its intuitive design and robust features. The seamless integration with various APIs and the ease of use make it an essential tool for any developer working with GraphQL. Highly recommend checking it out here: https://github.com/ctkadvisors/graphql-mcp.