Skip to main content
Glama
nano-step

graphql-introspection-mcp

by nano-step

GraphQL Introspection MCP Server

A Model Context Protocol (MCP) server that provides comprehensive GraphQL introspection capabilities with filtering and detailed analysis features.

Features

  • Complete Schema Introspection: Get full GraphQL schema with SDL and structured data

  • Smart Filtering: Filter queries, mutations, and types with search patterns

  • Detailed Analysis: Get comprehensive information about specific types and fields

  • Query Execution: Execute read-only GraphQL queries against any endpoint

  • Mutation Support: Execute GraphQL mutations with explicit opt-in via ALLOW_MUTATIONS flag

  • Safety Controls: 3-layer protection with tool listing, execution guards, and GraphQL AST validation

Related MCP server: mcp-graphql-tools

Safety & Permissions

Default Mode (Read-Only)

By default, only read-only operations are available:

  • All 6 introspection tools (schema, queries, mutations, types, type details, field details)

  • execute_query — executes GraphQL queries only

Dangerous Mode (Mutations Enabled)

To enable mutation execution, set the ALLOW_MUTATIONS environment variable:

ALLOW_MUTATIONS=true npx graphql-inspector-mcp

Or in your MCP config:

{
  "mcpServers": {
    "graphql-introspection": {
      "command": "npx",
      "args": ["-y", "graphql-inspector-mcp"],
      "env": {
        "ALLOW_MUTATIONS": "true"
      }
    }
  }
}

When enabled, the execute_mutation tool becomes available.

Safety Architecture

Three layers of protection prevent unauthorized mutations:

  1. Tool Listing: execute_mutation is hidden from tool discovery when ALLOW_MUTATIONS is not set

  2. Execution Guard: Even if called directly, execute_mutation rejects when not in dangerous mode

  3. AST Validation: GraphQL documents are parsed and validated — operation type is verified at the AST level, not string matching

  • MCP Annotations: All tools annotated with readOnlyHint for MCP-aware clients

  • Authentication Support: Basic Auth and Bearer token authentication

  • Caching: In-memory caching with 5-minute expiration for better performance

  • AI-Friendly Output: Structured JSON responses optimized for AI agents

Installation

npm install
npm run build

Usage

Using npx

You can run the tool directly via npx:

npx graphql-inspector-mcp

This will start the MCP server and expose GraphQL introspection tools.


CLI Arguments

The following arguments can be provided via JSON config, environment variables, or MCP tool requests. They are not traditional CLI flags, but are passed as options to the server or tools.

Argument

Type

Description

Example Value

endpoint

string

GraphQL endpoint URL (default: http://localhost:5555/graphql)

http://localhost:5555/graphql

username

string

Username for basic authentication (optional)

admin

password

string

Password for basic authentication (optional)

secret

bearer_token

string

Bearer token for authentication (optional)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

search

string

Search pattern to filter queries, mutations, or types (case-insensitive)

user

detailed

boolean

Return detailed information (default: false)

true

kind

string

Filter by type kind (OBJECT, SCALAR, ENUM, INTERFACE, UNION, INPUT_OBJECT)

OBJECT

type_name

string

Name of the type to get details for

User

field_name

string

Name of the field to get details for

getUser

operation_type

string

Type of operation (query or mutation)

query

query

string

GraphQL query or mutation string

query { users { id name } }

variables

object

Variables for the GraphQL operation (optional)

{"userId": "123"}

operation_name

string

Name of the operation to execute (optional, for multi-operation documents)

GetUserById

Usage Example

npx graphql-inspector-mcp

With config file (mcp.config.json):

{
  "mcpServers": {
    "graphql-introspection": {
      "command": "npx",
      "args": [
        "-y",
        "kokorolx/graphql-inspector-mcp"
      ],
      "options": {
        "endpoint": "http://localhost:5555/graphql"
      }
    }
  }
}

Or via environment variables:

export GRAPHQL_DEFAULT_ENDPOINT="http://localhost:4000/graphql"
export CACHE_DURATION_MS="600000"

Or via MCP tool request JSON:

{
  "endpoint": "http://localhost:5555/graphql",
  "search": "user",
  "detailed": true
}

MCP Config File

The MCP config file allows you to customize server settings and tool behavior. By default, the config file should be named mcp.config.json and placed in your project root.

Example mcp.config.json:

{
  "mcpServers": {
    "graphql-introspection": {
      "command": "npx",
      "args": [
        "-y",
        "kokorolx/graphql-inspector-mcp"
      ],
      "options": {
        "endpoint": "http://localhost:5550/graphql"
      }
    }
  }
}
  • Location: Project root (e.g., ./mcp.config.json)

  • Format: Standard JSON

  • Usage: The MCP client will automatically detect and use this configuration when starting the server.

Available Tools

1. get_graphql_schema

Get complete GraphQL schema introspection with SDL and structured data.

{
  "endpoint": "http://localhost:5555/graphql",
  "username": "optional_username",
  "password": "optional_password",
  "bearer_token": "optional_bearer_token"
}

2. filter_queries

Filter and list available GraphQL queries with optional search.

{
  "endpoint": "http://localhost:5555/graphql",
  "search": "user",
  "detailed": true
}

3. filter_mutations

Filter and list available GraphQL mutations with optional search.

{
  "endpoint": "http://localhost:5555/graphql",
  "search": "create",
  "detailed": false
}

4. filter_types

Filter and list available GraphQL types by kind and search pattern.

{
  "endpoint": "http://localhost:5555/graphql",
  "search": "User",
  "kind": "OBJECT",
  "detailed": true
}

Supported type kinds:

  • OBJECT - Object types

  • SCALAR - Scalar types

  • ENUM - Enumeration types

  • INTERFACE - Interface types

  • UNION - Union types

  • INPUT_OBJECT - Input object types

5. get_type_details

Get comprehensive information about a specific GraphQL type.

{
  "type_name": "User",
  "endpoint": "http://localhost:5555/graphql"
}

6. get_field_details

Get detailed information about a specific query or mutation field.

{
  "field_name": "getUser",
  "operation_type": "query",
  "endpoint": "http://localhost:5555/graphql"
}

7. execute_query

Execute a read-only GraphQL query against the endpoint.

{
  "query": "query { users { id name email } }",
  "variables": {},
  "endpoint": "http://localhost:5555/graphql"
}

8. execute_mutation

Execute a GraphQL mutation (requires ALLOW_MUTATIONS=true).

{
  "query": "mutation { createUser(name: \"John\") { id name } }",
  "variables": {},
  "endpoint": "http://localhost:5555/graphql"
}

Authentication

The server supports multiple authentication methods:

Basic Authentication

{
  "endpoint": "https://api.example.com/graphql",
  "username": "your_username",
  "password": "your_password"
}

Bearer Token

{
  "endpoint": "https://api.example.com/graphql",
  "bearer_token": "your_jwt_token"
}

Response Format

All responses are structured JSON optimized for AI processing:

Success Response

{
  "success": true,
  "endpoint": "http://localhost:5555/graphql",
  "data": {
    // ... relevant data
  }
}

Error Response

{
  "success": false,
  "error": "Error description",
  "endpoint": "http://localhost:5555/graphql"
}

Example Responses

Filter Queries (Summary)

{
  "success": true,
  "endpoint": "http://localhost:5555/graphql",
  "search_term": "user",
  "queries": [
    {
      "name": "getUser",
      "description": "Fetch a user by ID",
      "deprecated": false,
      "deprecation_reason": null
    },
    {
      "name": "searchUsers",
      "description": "Search users by criteria",
      "deprecated": false,
      "deprecation_reason": null
    }
  ],
  "total": 2
}

Filter Queries (Detailed)

{
  "success": true,
  "endpoint": "http://localhost:5555/graphql",
  "queries": [
    {
      "name": "getUser",
      "description": "Fetch a user by ID",
      "deprecated": false,
      "deprecation_reason": null,
      "arguments": [
        {
          "name": "id",
          "description": "User ID",
          "type": {
            "kind": "NON_NULL",
            "of_type": {
              "kind": "SCALAR",
              "name": "ID"
            },
            "is_required": true
          },
          "default_value": null
        }
      ],
      "return_type": {
        "kind": "OBJECT",
        "name": "User",
        "description": "A user in the system"
      }
    }
  ],
  "total": 1
}

Type Details

{
  "success": true,
  "endpoint": "http://localhost:5555/graphql",
  "type": {
    "name": "User",
    "kind": "OBJECT",
    "description": "A user in the system",
    "fields": [
      {
        "name": "id",
        "description": "Unique identifier",
        "type": {
          "kind": "NON_NULL",
          "of_type": {
            "kind": "SCALAR",
            "name": "ID"
          },
          "is_required": true
        },
        "deprecated": false,
        "deprecation_reason": null
      },
      {
        "name": "email",
        "description": "User email address",
        "type": {
          "kind": "SCALAR",
          "name": "String"
        },
        "deprecated": false,
        "deprecation_reason": null
      }
    ],
    "interfaces": [],
    "possible_types": null
  }
}

Caching

The server implements in-memory caching with the following characteristics:

  • Cache Duration: 5 minutes

  • Cache Key: Combination of endpoint URL and authentication method

  • Automatic Invalidation: Expired entries are automatically removed

  • Performance: Subsequent requests to the same endpoint return cached data instantly

Error Handling

The server provides comprehensive error handling for:

  • Network Issues: Connection timeouts, DNS resolution failures

  • HTTP Errors: 4xx and 5xx responses from GraphQL endpoints

  • GraphQL Errors: Schema validation errors, introspection failures

  • Authentication Errors: Invalid credentials, expired tokens

  • Validation Errors: Missing required parameters, invalid type names

Development

Build

npm run build

Development Mode

npm run dev

Clean Build

npm run clean
npm run build

Configuration

Default Settings

  • Default Endpoint: http://localhost:5555/graphql

  • Cache Duration: 5 minutes (300 seconds)

  • Timeout: Uses fetch default timeout

  • Max Cache Size: No limit (memory permitting)

Environment Variables

Variable

Default

Description

GRAPHQL_DEFAULT_ENDPOINT

http://localhost:5555/graphql

Default GraphQL endpoint

CACHE_DURATION_MS

300000

Cache duration in milliseconds (5 minutes)

ALLOW_MUTATIONS

false

Enable mutation execution (true to enable)

Best Practices

For AI Agents

  1. Use Detailed Mode: Set detailed: true when you need comprehensive information

  2. Filter Effectively: Use search patterns to reduce response size

  3. Cache Awareness: Subsequent calls to the same endpoint will be faster due to caching

  4. Error Handling: Always check the success field in responses

For Performance

  1. Specific Searches: Use specific search terms to reduce response size

  2. Type Filtering: Use the kind parameter when filtering types

  3. Summary Mode: Use detailed: false for quick overviews

  4. Endpoint Reuse: Reuse the same endpoint URL to benefit from caching

Troubleshooting

Common Issues

Schema not found

  • Verify the GraphQL endpoint URL is correct

  • Check if the endpoint requires authentication

  • Ensure the endpoint supports introspection queries

Authentication failures

  • Verify credentials are correct

  • Check if the endpoint expects Basic Auth or Bearer tokens

  • Ensure tokens haven't expired

Network timeouts

  • Check network connectivity to the GraphQL endpoint

  • Verify firewall settings allow outbound connections

  • Consider if the GraphQL server is running and responsive

Debug Mode

Enable debug logging by setting the environment variable:

export DEBUG=graphql-introspection:*

License

MIT License - see LICENSE file for details.

Available Tools

7 tools
execute_queryA
Read-only

Execute a read-only GraphQL query against the endpoint. Only query operations are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesGraphQL query document string
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic authentication (optional)
usernameNoUsername for basic authentication (optional)
variablesNoVariables for the GraphQL operation (optional)
bearer_tokenNoBearer token for authentication (optional)
operation_nameNoOperation name if document contains multiple operations (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description adds a behavioral constraint beyond that: 'Only query operations are allowed.' This clarifies that mutations and subscriptions are not permitted, which is not inferable from readOnlyHint alone. The description also confirms the read-only nature, adding value without contradicting the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of about 15 words, front-loaded with the core action ('Execute a read-only GraphQL query'). Every word contributes to defining the tool's purpose and constraints. There is zero redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and no output schema, the description is sufficient for selection and invocation understanding. It specifies the endpoint, operation type, and read-only nature. It doesn't describe return format or authentication details, but those are covered by schema and the general understanding of GraphQL. The sibling context makes the role clear, so a 4 is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 7 parameters, so the baseline is 3. The description does not elaborate on any parameter meanings beyond what the schema provides. It adds no extra semantic context for parameters like 'query' or 'endpoint', so a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Execute a read-only GraphQL query against the endpoint.' The verb 'execute' and resource 'GraphQL query' are specific, and the restriction to 'query operations' differentiates it from sibling tools that explore schema (e.g., get_graphql_schema, filter_queries). It is a precise, unambiguous statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: for executing GraphQL queries, while sibling tools are for schema exploration. The statement 'Only query operations are allowed' provides a usage constraint, but it does not explicitly name alternatives or say 'use this instead of X'. The context signals and sibling names make the differentiation clear, earning a score of 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_mutationsB
Read-only

Filter and list available GraphQL mutations

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch pattern to filter mutations (case-insensitive substring match)
detailedNoReturn detailed information including arguments and return types (default: false)
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic auth (optional)
usernameNoUsername for basic auth (optional)
bearer_tokenNoBearer token (optional)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, which is consistent with the description's 'Filter and list' wording. However, the description adds no behavioral context beyond that, such as whether the tool performs introspection, handles authentication, or what output format to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the tool's purpose. No filler or redundant information is present, making it highly concise and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a sparse description, the tool's return behavior, pagination (if any), and authentication requirements are left unexplained. The description covers only the basic action and resource, which is insufficient for an agent to fully anticipate tool behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter semantics are fully handled by the schema. The description adds no extra meaning beyond indicating that 'filter' relates to the search parameter and 'list' to the overall operation, which is minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Filter and list' with a clear resource 'GraphQL mutations'. It distinguishes from sibling tools like filter_queries and filter_types by explicitly targeting mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as filter_queries or get_graphql_schema. The name and sibling context imply use for mutations, but the description itself gives no explicit usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_queriesA
Read-only

Filter and list available GraphQL queries

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch pattern to filter queries (case-insensitive substring match)
detailedNoReturn detailed information including arguments and return types (default: false)
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic auth (optional)
usernameNoUsername for basic auth (optional)
bearer_tokenNoBearer token (optional)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true, which already signals a safe read operation, so the description need not cover safety. The description adds minimal behavioral context beyond 'available' (suggesting introspection), but does not disclose details like whether queries are executed (they are not, per readOnlyHint) or response format. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler words. It is front-loaded with the key verb and resource, making it immediately understandable. Every word earns its place; ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should clarify what the tool returns (e.g., a list of query names and optionally details). The current statement 'list available GraphQL queries' is somewhat vague about the exact output and how filtering works. It is adequate for a simple listing tool but leaves some gaps in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 6 parameters, so the schema fully documents each parameter. The tool description does not add extra meaning to parameters; it only states the overall purpose. Baseline 3 applies as schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Filter and list available GraphQL queries' uses a specific verb ('Filter and list') and resource ('available GraphQL queries'), clearly distinguishing this tool from its siblings such as 'filter_mutations' and 'get_graphql_schema'. The scope (queries vs. mutations) is immediately obvious, making it a strong purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need to list/filter GraphQL queries) but does not explicitly state when to use this tool over alternatives like 'filter_mutations' or 'get_graphql_schema'. It lacks explicit exclusions or alternative tool mentions, so guidance is only implied rather than direct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_typesB
Read-only

Filter and list available GraphQL types

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by type kind (OBJECT, SCALAR, ENUM, INTERFACE, UNION, INPUT_OBJECT)
searchNoSearch pattern to filter types (case-insensitive substring match)
detailedNoReturn detailed information including fields (default: false)
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic auth (optional)
usernameNoUsername for basic auth (optional)
bearer_tokenNoBearer token (optional)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the agent knows it is a safe read. However, the description adds no further behavioral context (e.g., authentication, default endpoint, or response format), failing to go beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant wording, earning a high score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 7 optional parameters and no output schema, the description gives no overview of the default behaviors or return structure. The schema covers parameters, but the description lacks contextual completeness for the tool's operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter descriptions, including enums and defaults. The tool description adds no additional parameter meaning, so schema coverage suffices.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('filter and list') and identifies the resource ('GraphQL types'), clearly differentiating from sibling tools such as filter_queries and filter_mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like get_graphql_schema or get_type_details; it only states the function without context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_field_detailsB
Read-only

Get detailed information about a specific query or mutation field

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic auth (optional)
usernameNoUsername for basic auth (optional)
field_nameYesName of the field to get details for
bearer_tokenNoBearer token (optional)
operation_typeNoType of operation (query or mutation)query

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, but the description adds no behavioral context beyond that. It does not mention network access, authentication requirements, error behavior, or what 'detailed information' entails, leaving gaps despite the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action and resource, containing no unnecessary words. It is perfectly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining what 'detailed information' means, but it does not. The tool involves six parameters including authentication, yet the description provides no context about return format, usage scenarios, or operational behavior, making it incomplete for a moderately complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all six parameters documented in the input schema, including defaults and the enum for operation_type. The description itself contributes no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets detailed information about a specific query or mutation field, using a specific verb and resource. It distinguishes itself from sibling tools like get_type_details (for types) and filter_queries/filter_mutations (for listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks explicit when/when-not statements or references to sibling tools, leaving the agent to infer usage purely from the action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_graphql_schemaB
Read-only

Get complete GraphQL schema introspection

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic authentication (optional)
usernameNoUsername for basic authentication (optional)
bearer_tokenNoBearer token for authentication (optional)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation indicates a safe read operation, and the description does not contradict it. The description adds the 'complete' scope but offers no additional behavioral context such as authentication requirements or potential response size. Given the annotation covers the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, perfectly front-loaded, and without any filler. It conveys the core purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with four optional auth parameters and no output schema. The description states what it returns (the introspection), which is sufficient for the primary use case. However, it could mention authentication for protected endpoints and doesn't address when to use this vs siblings. Given the moderate complexity, a 3 is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents all four parameters with descriptions, providing 100% coverage. The description adds nothing about parameters, but the schema adequately explains endpoint, username, password, and bearer_token. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the complete GraphQL schema via introspection, using a specific verb and resource. The 'complete' qualifier distinguishes it from sibling tools that filter or get details, but not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool versus filter_queries, get_type_details, or other siblings, nor does it mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_type_detailsB
Read-only

Get detailed information about a specific GraphQL type

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointNoGraphQL endpoint URL (default: http://localhost:5555/graphql)
passwordNoPassword for basic auth (optional)
usernameNoUsername for basic auth (optional)
type_nameYesName of the type to get details for
bearer_tokenNoBearer token (optional)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint=true, and the description aligns with a read-only operation. It adds no extra behavioral context such as authentication details, rate limits, or response format, but because annotations already cover the safety profile, no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fails to clarify what 'detailed information' includes—such as fields, descriptions, or deprecation status. This is a notable gap for an agent deciding whether the tool meets its needs. The presence of sibling tools like get_field_details further emphasizes the need for more specific return-value context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the schema handles parameter semantics. The description adds little beyond mentioning 'specific GraphQL type', which maps to the type_name parameter, but provides no additional details about endpoint or auth parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves information about a specific GraphQL type, using a specific verb and resource. It distinguishes from siblings like get_graphql_schema (whole schema) and filter_types (filtering), though 'detailed information' remains vague about what exactly is returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention excluded use cases or point to sibling tools like get_field_details or filter_types. Sibling names offer context but the description itself gives no selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.1.0
    • First observedexecute_query
    • First observedfilter_mutations
    • First observedfilter_queries
    • First observedfilter_types
    • First observedget_field_details
    • First observedget_graphql_schema
    • First observedget_type_details

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: schema retrieval, filtering queries, mutations, types, and fetching details for types and fields, plus query execution. No overlap or ambiguity exists.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern with snake_case: get_graphql_schema, filter_queries, filter_mutations, filter_types, get_type_details, get_field_details, execute_query. Naming is predictable and unified.

Tool Count5/5

With 7 tools, the set is well-scoped for a GraphQL introspection server. Each tool covers a necessary aspect without redundancy, making the count appropriate.

Completeness4/5

The surface covers schema introspection, listing queries/mutations/types, and detailed field/type info, plus query execution. The only notable gap is the absence of a filter for subscriptions, but core workflows are fully covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Converts natural language queries into valid GraphQL queries and executes them against GraphQL APIs. Includes schema introspection, query validation, execution with authentication, and query history tracking.
    5
    25
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with any GraphQL API by introspecting the schema and exposing queries and mutations as MCP tools, with built-in pagination, semantic search, and framework adapters.
    14 npm
    MIT