
GraphQL Forge
STDIOMCP server that automatically generates tools from GraphQL APIs with schema introspection and validation
MCP server that automatically generates tools from GraphQL APIs with schema introspection and validation
# Via Smithery (recommended) npx @smithery/cli install @toolprint/mcp-graphql-forge --client claude # Via npm npm install -g @toolprint/mcp-graphql-forge
An MCP server that makes GraphQL APIs accessible to AI tools by:
Note: Docker runtime support is currently a work in progress. For production deployments, we recommend using the TypeScript runtime on platforms like Smithery.
Start the server:
# Start serving it with the Streamable HTTP transport GRAPHQL_ENDPOINT="https://your-api.com/graphql" npx -y @toolprint/mcp-graphql-forge --transport http --port 3001
Connect with MCP Inspector:
# In another terminal, launch the inspector npx @modelcontextprotocol/inspector
With authentication:
# Using environment variables for configuration export GRAPHQL_ENDPOINT="https://api.github.com/graphql" export GRAPHQL_AUTH_HEADER="Bearer YOUR_TOKEN" npx @toolprint/mcp-graphql-forge --transport http --port 3001 # Or all in one line GRAPHQL_ENDPOINT="https://api.github.com/graphql" GRAPHQL_AUTH_HEADER="Bearer YOUR_TOKEN" npx @toolprint/mcp-graphql-forge --transport http --port 3001
Create an mcp.json
in your project root. This will run it in stdio mode.
{ "mcpServers": { "mcp-graphql-forge": { "command": "npx", "args": [ "-y", "@toolprint/mcp-graphql-forge" ], "env": { "GRAPHQL_ENDPOINT": "https://your-api.com/graphql", "GRAPHQL_AUTH_HEADER": "Bearer YOUR_TOKEN" } } } }
Pre-generate schema:
# Generate schema without starting server GRAPHQL_ENDPOINT="https://your-api.com/graphql" mcp-graphql-forge introspect # Start server using pre-generated schema mcp-graphql-forge --no-introspection --transport http --port 3001
Custom schema location:
# Generate schema in custom location SCHEMA_PATH="./schemas/my-api.json" mcp-graphql-forge introspect # Use custom schema location SCHEMA_PATH="./schemas/my-api.json" mcp-graphql-forge --no-introspection --transport http --port 3001
Force schema regeneration:
# Force regenerate schema even if it exists mcp-graphql-forge introspect --force # Regenerate and start server mcp-graphql-forge --force-introspection --transport http --port 3001
# Multiple custom headers export GRAPHQL_HEADER_X_API_KEY="your-api-key" export GRAPHQL_HEADER_X_CLIENT_ID="your-client-id" mcp-graphql-forge --transport http --port 3001 # Development mode with auto-reload on schema changes mcp-graphql-forge --transport http --port 3001 --watch
🗂️ Building field selection cache for all types... 📊 Generated field selections for 44 types 💾 Field selection cache contains 44 full selections and 5 minimal selections Generated 63 tools from GraphQL schema: - 30 query tools - 33 mutation tools
For a GraphQL schema like:
type Query { user(id: ID!): User articles(filters: ArticleFiltersInput, pagination: PaginationArg): [Article] } type Mutation { createUser(input: CreateUserInput!): User }
Fast MCP GraphQL automatically generates:
query_user
- with required id
parameter validationquery_articles
- with optional filtering and paginationmutation_createUser
- with input validation and complete field selectionsInstead of manual GraphQL query construction:
# ❌ Error-prone manual approach query { articles { # Missing required field selections! author { # Circular reference issues! } } }
Fast MCP GraphQL generates optimal queries automatically:
# ✅ Auto-generated with full field selections query articlesOperation($filters: ArticleFiltersInput, $pagination: PaginationArg) { articles(filters: $filters, pagination: $pagination) { documentId title description author { documentId name email articles_connection { nodes { documentId } # Circular reference handled! } } category { documentId name articles { documentId } # Cached selection reused! } } }
mcp-graphql-forge [options] Options: --transport <type> Transport type: stdio or http (default: stdio) --port <number> Port for HTTP transport (default: 3000) --no-introspection Skip schema introspection (use cached schema) --version Show version number --help Show help
Variable | Description | Example |
---|---|---|
GRAPHQL_ENDPOINT | GraphQL API endpoint | https://api.example.com/graphql |
GRAPHQL_AUTH_HEADER | Authorization header | Bearer token123 |
GRAPHQL_HEADER_* | Custom headers | GRAPHQL_HEADER_X_API_KEY=key123 |
SCHEMA_PATH | Schema cache file path | ./schema.json |
PORT | HTTP server port | 3001 |
Each generated tool follows this pattern:
{ name: "query_user", description: "Execute GraphQL query: user", inputSchema: { type: "object", properties: { id: { type: "string" } }, required: ["id"] // Only truly required parameters } }
# Run all tests npm test # Run specific test suites npm test -- src/__tests__/field-selection-cache.test.ts npm test -- src/__tests__/server-validation.test.ts npm test -- src/__tests__/graphql-execution.test.ts # Coverage report npm run test:coverage
# Test with real GraphQL endpoints GRAPHQL_ENDPOINT="https://countries.trevorblades.com/" npm test # Test caching performance npm run test:performance
We welcome contributions! Please see our Contributing Guide for details.
# Clone the repository git clone https://github.com/toolprint/mcp-graphql-forge.git cd mcp-graphql-forge # Install dependencies npm install # Run tests npm test # Start development npm run dev
# Connect to Strapi GraphQL API export GRAPHQL_ENDPOINT="https://your-strapi.com/graphql" export GRAPHQL_AUTH_HEADER="Bearer YOUR_STRAPI_TOKEN" mcp-graphql-forge # Generates tools like: # - query_articles, query_users, query_categories # - mutation_createArticle, mutation_updateUser # - Full field selections with media, relations, and metadata
# Connect to GitHub GraphQL API export GRAPHQL_ENDPOINT="https://api.github.com/graphql" export GRAPHQL_AUTH_HEADER="Bearer YOUR_GITHUB_TOKEN" mcp-graphql-forge # Generates tools like: # - query_repository, query_user, query_organization # - query_search (with intelligent result type handling) # - mutation_createIssue, mutation_addComment
# Connect to Shopify/WooCommerce GraphQL export GRAPHQL_ENDPOINT="https://your-shop.myshopify.com/api/graphql" export GRAPHQL_HEADER_X_SHOPIFY_ACCESS_TOKEN="YOUR_TOKEN" mcp-graphql-forge # Generates tools for: # - Product management (query_products, mutation_productCreate) # - Order processing (query_orders, mutation_orderUpdate) # - Customer management with full relationship mapping
// Example: Blog Platform Schema type Query { posts(published: Boolean, authorId: ID): [Post] post(slug: String!): Post authors: [Author] } type Mutation { createPost(input: CreatePostInput!): Post publishPost(id: ID!): Post } // Generated Tools: // ✅ query_posts (published?: boolean, authorId?: string) // ✅ query_post (slug: string) ← Required parameter enforced // ✅ query_authors () ← No parameters // ✅ mutation_createPost (input: CreatePostInput) ← Validated input // ✅ mutation_publishPost (id: string) ← Required parameter enforced
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
MCP GraphQL Forge is developed and maintained by OneGrep, Inc., a company focused on building developer tools and AI infrastructure.
Made with ❤️ by the OneGrep team