Skip to main content
Glama

TheGraph MCP Server

An MCP server that powers AI agents with indexed blockchain data from The Graph.

GitHub License GitHub Last Commit Python Version

Available Tools

1. searchSubgraphs

Searches for subgraphs on The Graph Network by name or description. Uses the Network Subgraph's full-text search to find matching subgraphs, returning a list sorted by signal amount (highest first). Results include the subgraph's GraphQL schema, so agents can go directly from discovery to querying without a separate schema fetch.

Parameters:

  • searchQuery: The search term to find matching subgraphs (e.g., "uniswap", "aave", "ENS")

2. getSubgraphSchema

Fetches the schema of a specified subgraph, providing AI agents with the context needed to generate GraphQL queries.

Parameters:

  • subgraphId: The subgraph ID (e.g., "QmZBQcF...")

  • asText: Output format flag

    • true: Returns human-readable GraphQL schema

    • false: Returns JSON schema (default)

3. querySubgraph

Executes GraphQL queries against a specified subgraph. While queries are typically generated by AI, you can also manually craft your own.

Parameters:

  • subgraphId: The subgraph ID

  • query: GraphQL query string

Related MCP server: crypto-projects-mcp

Installation

  1. Install uv (if not already installed)

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Clone the Repository

    git clone https://github.com/Data-Nexus-Web3/thegraph-mcp.git
  3. Get an API Key

    Sign up at The Graph Studio to get an API key (free for the first 100k queries)

  4. Add the MCP Server

    Claude Code:

    claude mcp add -e THEGRAPH_API_KEY=your_api_key_here thegraph-mcp -- uv --directory path/to/thegraph-mcp run main.py

    Claude Desktop / Other MCP Clients:

    Add the following to your client's MCP config file (e.g. claude_desktop_config.json):

    {
      "mcpServers": {
        "thegraph-mcp": {
          "command": "uv",
          "args": ["--directory", "path/to/thegraph-mcp", "run", "main.py"],
          "env": {
            "THEGRAPH_API_KEY": "your_api_key_here"
          }
        }
      }
    }

Example Prompts

Here are some natural language prompts to trigger the tools:

Subgraph Discovery

  • "Find me a subgraph for Uniswap on Ethereum"

  • "Search for Aave subgraphs"

  • "What subgraphs are available for ENS?"

Schema Queries

  • "Show me the schema for the Uniswap V3 Ethereum subgraph in a readable format"

  • "What entities and fields are available in the Aave V3 subgraph?"

  • "I need to understand the data model of subgraph QmZBQcF..., can you fetch its schema?"

Data Queries

  • "Find the top 5 tokens by trading volume in the last 24 hours on Uniswap V3 Ethereum"

  • "Show me all pairs with liquidity greater than 1 million USD on Uniswap"

  • "Get the latest 10 swap events from subgraph QmZBQcF..., including token symbols and amounts"

Analysis Tasks

  • "What is the highest APR market on Aave mainnet?"

  • "Compare the liquidity of ETH and USDC pairs on Uniswap Ethereum"

  • "Find the most active lending markets on Aave by deposit volume"

Combined Tasks

  • "Find a Uniswap subgraph on Ethereum, check its schema, then help me write a query to find high-value swaps"

  • "What data can I get from Aave on Ethereum? Show me the schema and then query the top markets by TVL"

  • "Using subgraph QmZBQcF..., analyze the market impact of large trades by first understanding the schema and then querying relevant events"

License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

3 tools
getSubgraphSchemaA

Fetch the schema of a specified subgraph using GraphQL introspection.

Args: subgraphId (str): The ID of the subgraph to query. asText (bool): If True, return schema as GraphQL text; otherwise, return JSON.

Returns: str: Schema in JSON or GraphQL text format, or an error message.

Inputs: subgraphId (required), asText.

querySubgraphA

Execute a GraphQL query against a specified subgraph.

Args: subgraphId (str): The ID of the subgraph to query. query (str): The GraphQL query string to execute.

Returns: str: Query result in JSON format, or an error message.

Inputs: subgraphId (required), query (required).

searchSubgraphsC

Search for subgraphs on The Graph Network by name or description.

Args: searchQuery (str): The search term to find matching subgraphs.

Returns: str: A concise list of matching subgraphs with their IDs, names, networks, and signal, or an error message.

Inputs: searchQuery (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: getSubgraphSchema retrieves schema metadata, querySubgraph executes queries, and searchSubgraphs finds subgraphs. There is no overlap in functionality, making tool selection unambiguous for an agent.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with camelCase styling (getSubgraphSchema, querySubgraph, searchSubgraphs). The naming is predictable and readable throughout the set.

    Tool Count3/5

    With only 3 tools, the set feels thin for a GraphQL subgraph interaction server. While the core operations are covered, additional tools for mutations, subscriptions, or subgraph management could enhance completeness, placing it in the borderline range.

    Completeness4/5

    The tools cover essential read operations (schema fetching, querying, searching) well, but there are minor gaps such as lacking mutation support or subgraph lifecycle management (e.g., create/update/delete). Agents can work around these for basic querying tasks.

    Related MCP Connectors

    Related MCP Servers