Server data from the Official MCP Registry
GraphQL gateway for LLMs. Handles huge GitHub GraphQL & @neo4j/graphql schemas without crashing
GraphQL gateway for LLMs. Handles huge GitHub GraphQL & @neo4j/graphql schemas without crashing
Valid MCP server (2 strong, 3 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
3 files analyzed Β· 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: ENDPOINT
Environment variable: HEADERS
Environment variable: ALLOW_MUTATIONS
Environment variable: NAME
Environment variable: SCHEMA
Environment variable: MCP_PORT
Environment variable: ENABLE_HTTP
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-letoribo-mcp-graphql-enhanced": {
"env": {
"NAME": "your-name-here",
"SCHEMA": "your-schema-here",
"HEADERS": "your-headers-here",
"ENDPOINT": "your-endpoint-here",
"MCP_PORT": "your-mcp-port-here",
"ENABLE_HTTP": "your-enable-http-here",
"ALLOW_MUTATIONS": "your-allow-mutations-here"
},
"args": [
"-y",
"@letoribo/mcp-graphql-enhanced"
],
"command": "npx"
}
}
}From the project's GitHub README.
An enhanced MCP (Model Context Protocol) server for GraphQL that fixes real-world interoperability issues between LLMs and GraphQL APIs.
Drop-in replacement for
mcp-graphqlβ with dynamic headers, robust variables parsing, and zero breaking changes.
mcp-graphql-enhanced is a high-performance, federated GraphQL gateway designed to act as a workhorse for LLM agents. It bridges the gap between massive, complex GraphQL ecosystems and the context-limited environment of AI assistants. Unlike standard "all-or-nothing" introspection tools that crash under the weight of large schemas (like GitHub's or enterprise-grade Neo4j graphs), this server provides surgical control over how your agent perceives and interacts with your data.
If you have ever seen the<error>Tool result is too large</error>while trying to introspect your API, you are already hitting the limits of standard MCP implementations. Here is why mcp-graphql-enhanced is the industry-standard choice for professional environments:
Avoid the 1MB Ceiling: It shifts the responsibility for scope from the server to the caller. Instead of a unilateral "everything or nothing" dump, you get granular control via typeNames and typeDepth parameters.
Surgical Precision: You can selectively introspect only the nodes you need (e.g., Repository, User, or Message), keeping your context window clean and your LLM focused.
Predictability over Immunity: It doesn't promise "unlimited" capacityβit promises predictability. In enterprise systems, you need a tool that lets you navigate the graph surgically and fail predictably if you overstep, rather than a "black box" that dies on you the moment the schema grows.
Proof of Performance: See a real-world demonstration of the gateway bypassing standard architectural limits during a live diagnostic test against the GitHub API: π Diagnostic Case Study: Scoped vs. Monolithic Introspection (Shared Chat)
Join the conversation! If you have questions about using this bridge with Neo4j, Discord data graphs, or GraphQL in general, come hang out with us:
This is the best place to share your feedback, report issues, or suggest new "enhanced" features for the bridge.
Authorization, X-API-Key, etc., via tool arguments (no config restarts)βQuery variables must be a null or an objectβ errorThe server operates as a Federated GraphQL Gateway, merging independent nodes into a unified system.
ENDPOINT, the server behaves exactly as before.See a real-world demonstration of the federated query synthesis in action, where the agent aggregates live Discord data with historical Neo4j insights: π Live Federation Analysis (Shared Chat)
A common challenge for Windows developers is the network isolation between the Windows Subsystem for Linux (WSL) and the host OS. This feature allows you to bridge these two worlds into a "Unified Nervous System".
Example configuration for Claude Desktop:
{
"ENDPOINT": "http://DESKTOP-NAME.local:2311/graphql,http://127.0.0.1:4000/graphql"
}
Hybrid Ecosystem: Seamlessly query and aggregate data across Windows-native processes (PowerShell) and Linux-based environments (WSL).
mDNS Support: By using .local addresses, the bridge automatically resolves the host machine's IP from within the WSL environment.
Transparent Aggregation: The AI assistant interacts with a single unified schema, unaware that the data is being fetched from different operating systems simultaneously.
The bridge provides deep insights into how the LLM interacts with your graph database.
For GraphQL server implementations that return query execution plans (like @neo4j/graphql), the bridge automatically:
extensions.cypher in the response.CYPHER 5 or empty PARAMS).Note: This feature requires your GraphQL server to be configured to include debug information in the response extensions.
Unlike standard MCP servers, this one provides a visual interface for humans. When running with ENABLE_HTTP=true, you can open a full-featured GraphiQL IDE in your browser.
http://localhost:6274/ (or /graphql, /graphiql)This server now runs in dual transport mode, supporting both the standard STDIO communication (used by most MCP clients) and a new HTTP JSON-RPC endpoint on port 6274.
This allows external systems, web applications, and direct curl commands to access the server's tools with live request logging in your terminal ([HTTP-RPC] logs).
| Endpoint | Method | Description |
|---|---|---|
/graphiql | GET | Human Interface: The visual GraphQL IDE. |
/mcp | POST | The main JSON-RPC 2.0 endpoint for tool execution. |
/health | GET | Simple health check, returns { status: 'ok' }. |
The server defaults to port 6274. If you encounter an EADDRINUSE error, the server will automatically find the next available port. Check the server logs for the final bound port (e.g., [HTTP] Started server on http://localhost:6275).
The server defaults to port 6274. If you encounter an EADDRINUSE: address already in use :::6274 error (common in local development due to stale processes), the server will automatically find the next available port (up to 10 attempts, not spawning multiple servers).
This ensures the server starts successfully even when the default is blocked. Always check the server logs for the final bound port (e.g., [HTTP] Started server on http://localhost:6275) if your curl or client tool fails on the default 6274.
To force a specific port (e.g., for guaranteed external firewall settings), you can still explicitly set the MCP_PORT environment variable:
You can test the endpoint using curl as long as the server is running (e.g., via npm run dev):
curl http://localhost:6274/health
curl -X POST http://localhost:6274/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"method":"tools/list",
"params":{},
"id":1
}'
curl -X POST http://localhost:6274/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "introspect-schema",
"arguments": {}
},
"id": 2
}'
curl -X POST http://localhost:6274/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "introspect-schema",
"arguments": {
"typeNames": ["User", "Message"]
}
},
"id": 3
}'
curl -X POST http://localhost:6274/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "introspect-schema",
"arguments": {
"typeNames": ["Message"],
"typeDepth": 4
}
},
"id": 4
}'
curl -X POST http://localhost:6274/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "query-graphql",
"arguments": {
"query": "{ guildChannels(guild_id: \"1312302100125843476\") { name id topic } }"
}
},
"id": 5
}'
(using port 6275 if 6274 was busy)
curl -X POST http://localhost:6275/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"query-graphql","params":{"query":"query { __typename }"},"id":1}'
npx @modelcontextprotocol/inspector \
-e ENDPOINT=https://api.example.com/graphql \
npx @letoribo/mcp-graphql-enhanced
Note: As of version 1.0.0, command line arguments have been replaced with environment variables.
| Environment Variable | Description | Default |
|---|---|---|
ENDPOINT | GraphQL endpoint(s). Supports comma-separated list for Multi-Node Architecture. | https://mcp-discord.vercel.app/api/graphiql |
HEADERS | JSON string containing headers for requests | {} |
ALLOW_MUTATIONS | Enable mutation operations (disabled by default) | false |
NAME | Name of the MCP server | mcp-graphql-enhanced |
SCHEMA | Path to a local GraphQL schema file or URL | - |
MCP_PORT | Port for the HTTP/JSON-RPC server. | 6274 |
ENABLE_HTTP | Enable HTTP transport: auto (default), true, or false | auto |
Note on ENABLE_HTTP: |
auto (default): Automatically enables HTTP only when running in MCP Inspector...true: Always enable HTTP serverfalse: Disable HTTP server completelyBasic startup using the default endpoint.
npx @letoribo/mcp-graphql-enhanced
Running with custom headers (e.g., for API keys or Bearer tokens).
ENDPOINT=https://api.example.com/graphql \
HEADERS='{"Authorization":"Bearer xyz"}' \
npx @letoribo/mcp-graphql-enhanced
Using a local .graphql file If you want to work with a local schema without querying the API directly.
ENDPOINT=http://localhost:3000/graphql \
SCHEMA=./schema.graphql \
npx @letoribo/mcp-graphql-enhanced
Enabling Mutations (Writes) Mutations are disabled by default for security. To enable them:
ENDPOINT=http://localhost:3000/graphql \
ALLOW_MUTATIONS=true \
npx @letoribo/mcp-graphql-enhanced
Multi-Node Architecture (Federation) Aggregating data from multiple sources into a single unified graph.
ENDPOINT=https://mcp-discord.vercel.app/api/graphiql,https://mcp-neo4j-discord.vercel.app/api/graphiql \
npx @letoribo/mcp-graphql-enhanced
Example of port configuration and development mode settings.
# Change the HTTP port
MCP_PORT=8080 npx @letoribo/mcp-graphql-enhanced
# Test targeted introspection and explore the schema visually:
ENDPOINT=https://api.github.com/graphql \
HEADERS='{"Authorization":"Bearer YOUR_GITHUB_TOKEN"}' \
ENABLE_HTTP=true \
npx @letoribo/mcp-graphql-enhanced
# Then visit http://localhost:6274/graphiql
If you want to skip manual environment variable setup, use our CLI tool available on npm.
If installed globally (npm install -g @letoribo/mcpgql), simply run:
mcpgql
Alternatively, you can run it without global installation using:
npx @letoribo/mcpgql@latest
Smithery provides a powerful way to manage your MCP servers, handle authentication, and interact with tools directly from your terminal
# 1. Install Smithery CLI
npm install -g smithery
# 2. Create a namespace
smithery namespace create {your-namespace}
# 3. Add the server
smithery mcp add letoribo/mcp-graphql-enhanced
# 4. Interact with tools
smithery tool list {connection}
smithery tool call {connection} {tool_name} '{"key": "value"}'
E.g.
smithery tool call letoribo-mcp-graphql-enhanced introspect-schema
smithery tool call letoribo-mcp-graphql-enhanced introspect-schema '{"typeNames": ["Guild", "Message", "User"]}'
smithery tool call letoribo-mcp-graphql-enhanced introspect-schema '{"typeNames": ["McpServer"], "typeDepth": 2}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ countMcpServers }"}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ countMcpServers(q: \"graphql\") }"}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ proxyInfo { host source timestamp } }"}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ guildChannels(guild_id: \"1312302100125843476\") { name id topic } }"}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ searchMcpServers(q: \"mcp-remote\", limit: 50) { id name namespace description environmentVariablesJsonSchema { properties required } } }"}'
smithery tool call letoribo-mcp-graphql-enhanced query-graphql '{"query": "{ getMcpServer(id: \"a17sht5lzn\") { name namespace description environmentVariablesJsonSchema { properties required } repository { url } slug spdxLicense { name url } tools { description inputSchema name } url attributes id }}"}'
This server is fully containerized and optimized for long-running processes.
| Platform | Recommended PORT | Notes |
|---|---|---|
| Railway | 8080 | Set PORT in Variables and update Networking ingress port. |
| Render | 10000 | Set PORT in Environment Variables. |
Important:
ENABLE_HTTP=true in your platform's settings to ensure the HTTP transport layer is active.PORT environment variable to avoid 502 Bad Gateway errors.You can connect Claude Desktop to your GraphQL API using either the npx package (recommended for simplicity) or the Docker image (ideal for reproducibility and isolation).
{
"mcpServers": {
"mcp-graphql-enhanced": {
"command": "npx",
"args": ["@letoribo/mcp-graphql-enhanced"],
"env": {
"ENDPOINT": "https://your-api.com/graphql"
}
}
}
}
{
"mcpServers": {
"mcp-graphql-enhanced": {
"command": "sh",
"args": [
"-c",
"docker run --rm -i -e ENDPOINT=$ENDPOINT -e HEADERS=$HEADERS -e ALLOW_MUTATIONS=$ALLOW_MUTATIONS ghcr.io/letoribo/mcp-graphql-enhanced:main"
],
"env": {
"ENDPOINT": "https://your-api.com/graphql",
"HEADERS": "{\"Authorization\": \"Bearer YOUR_TOKEN\"}",
"ALLOW_MUTATIONS": "false"
}
}
}
}
If youβve cloned the repo and built the project (npm run build β outputs to dist/):
{
"mcpServers": {
"mcp-graphql-enhanced": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"ENDPOINT": "https://your-api.com/graphql",
"ALLOW_MUTATIONS": "true"
}
}
}
}
The server provides two main tools:
typeNames (optional, array): List of specific types to introspect (e.g., ["User", "Message"]). Reduces noise by returning only relevant parts of the graph.typeDepth (optional, number): Controls the recursion level of nested fields (Default: 2).
Note:
typeDepthis only functional whentypeNamesis provided to narrow the scope.
ALLOW_MUTATIONS is set to true.Mutations are disabled by default to prevent unintended data changes. Always validate HEADERS and SCHEMA inputs in production. Use HTTPS endpoints and short-lived tokens where possible.
This is a very generic implementation where it allows for complete introspection and for your users to do whatever (including mutations). If you need a more specific implementation I'd suggest to just create your own MCP and lock down tool calling for clients to only input specific query fields and/or variables. You can use this as a reference.
Be the first to review this server!
by Modelcontextprotocol Β· Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno Β· Developer Tools
Toleno Network MCP Server β Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace Β· Developer Tools
Create, build, and publish Python MCP servers to PyPI β conversationally.