Skip to main content
Glama

Chainlist MCP Server

An MCP server that gives AI agents fast access to verified EVM chain information, including RPC URLs, chain IDs, explorers, and native tokens — sourced from Chainlist.org.

GitHub License Python Version Status

Features

  • Efficient Data Fetching: Caches Chainlist API data to minimize requests.

  • Flexible Search: Case-insensitive keyword matching using regex for getChainsByKeyword.

  • Structured Output: Markdown responses with tabulated rpc and explorers for readability.

Related MCP server: wallet-inspector-mcp

Installation

Prerequisites

  • Python: Version 3.10 or higher.

  • uv: Recommended for managing Python projects and dependencies (install via pip install uv or follow uv documentation).

Steps

  1. Clone the Repository:

    git clone https://github.com/kukapay/chainlist-mcp.git
    cd chainlist-mcp
  2. Install Dependencies:

    uv sync
  3. Installing to Claude Desktop:

    Install the server as a Claude Desktop application:

    uv run mcp install cli.py --name "Chainlist MCP"

    Configuration file as a reference:

    {
       "mcpServers": {
           "Chainlist MCP": {
               "command": "uv",
               "args": [ "--directory", "/path/to/chainlist-mcp", "run", "main.py" ] 
           }
       }
    }

    Replace /path/to/chainlist-mcp with your actual installation path.

Usage

The server exposes two tools via the MCP protocol, accessible through MCP-compatible clients or the MCP Inspector.

Tools

getChainById

  • Description: Retrieves details of a blockchain by its chain ID.

  • Parameters:

    • chain_id (integer): The unique identifier of the blockchain (e.g., 1 for Ethereum Mainnet).

  • Returns: A Markdown string with chain details or an error message.

Example Prompt (in an MCP client):

Get the details for the blockchain with chain ID 1.

Example Response:

**Chain Details**
- **Name**: Ethereum Mainnet
- **Chain ID**: 1
- **Native Currency**: Ether (ETH, 18 decimals)
- **TVL**: 134376951329.85631
**RPC Endpoints**:
| URL                                          | Tracking |
|----------------------------------------------|----------|
| https://eth.llamarpc.com                     | none     |
| https://go.getblock.io/...                   | none     |
...
**Explorers**:
| Name       | URL                        | Standard |
|------------|----------------------------|----------|
| etherscan  | https://etherscan.io       | EIP3091  |
...

getChainsByKeyword

  • Description: Searches for blockchains by keyword (case-insensitive partial match).

  • Parameters:

    • keyword (string): The keyword or partial name to search (e.g., 'eth').

    • limit (integer, optional): Maximum number of results (default: 5).

  • Returns: A Markdown string listing up to limit matching chains or an error message.

Example Prompt (in an MCP client):

Find blockchains with 'eth' in their name, limit to 2 results.

Example Response:

**Matching Chains**

### Chain 1
**Chain Details**
- **Name**: Ethereum Mainnet
- **Chain ID**: 1
- **Native Currency**: Ether (ETH, 18 decimals)
- **TVL**: 134376951329.85631
**RPC Endpoints**:
| URL                                          | Tracking |
|----------------------------------------------|----------|
| https://eth.llamarpc.com                     | none     |
...
**Explorers**:
| Name       | URL                        | Standard |
|------------|----------------------------|----------|
| etherscan  | https://etherscan.io       | EIP3091  |
...

### Chain 2
**Chain Details**
- **Name**: Ethereum Goerli
- **Chain ID**: 5
- **Native Currency**: Ether (ETH, 18 decimals)
- **TVL**: N/A
**RPC Endpoints**:
| URL                                          | Tracking |
|----------------------------------------------|----------|
| https://goerli.infura.io/...                 | yes      |
...
**Explorers**:
| Name       | URL                        | Standard |
|------------|----------------------------|----------|
| etherscan  | https://goerli.etherscan.io | EIP3091  |
...

License

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

Available Tools

2 tools
getChainByIdA
Retrieve information about a blockchain by its chain ID, returned as Markdown.

**Parameters**:
- `chain_id` (integer): The unique identifier of the blockchain (e.g., 1 for Ethereum Mainnet).

**Returns**:
- A Markdown-formatted string containing the chain's details (Name, Chain ID, Native Currency, TVL, RPC Endpoints, Explorers) or an error message if no chain is found.
ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it retrieves information, returns Markdown-formatted details or an error message if not found, and lists the specific details included (Name, Chain ID, etc.). However, it doesn't mention potential rate limits, authentication needs, or performance characteristics.

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 well-structured and front-loaded with the core purpose, followed by clearly labeled sections for parameters and returns. Every sentence adds value, with no redundant or unnecessary information, making it efficient and easy to parse.

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

Completeness5/5

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

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is complete. It explains what the tool does, when to use it, parameter details, return format, and error handling. No additional information is needed for effective use.

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

Parameters5/5

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

The schema description coverage is 0%, so the description must fully compensate. It provides comprehensive parameter semantics: it names the parameter ('chain_id'), specifies its type ('integer'), gives a clear example ('1 for Ethereum Mainnet'), and explains its purpose ('unique identifier of the blockchain'). This adds significant value beyond the bare schema.

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 specific action ('Retrieve information about a blockchain') and resource ('by its chain ID'), distinguishing it from the sibling tool 'getChainsByKeyword' which searches by keyword rather than ID. The purpose is unambiguous and well-defined.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('by its chain ID') and implies an alternative with the sibling tool name 'getChainsByKeyword', suggesting that tool should be used for keyword-based searches. This provides clear guidance on tool selection.

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

getChainsByKeywordA
Retrieve information about blockchains matching a keyword (case-insensitive partial match), returned as Markdown.

**Parameters**:
- `keyword` (string): The keyword or partial name of the blockchain to search for (e.g., 'eth' for Ethereum).
- `limit` (integer, optional): Maximum number of matching chains to return (default: 5).

**Returns**:
- A Markdown-formatted string listing up to `limit` matching chains with their details (Name, Chain ID, Native Currency, TVL, RPC Endpoints, Explorers) or an error message if no chains are found.
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
limitNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behaviors: case-insensitive partial matching, Markdown return format, default limit value, and error handling for no matches. It doesn't mention rate limits, authentication needs, or pagination, but covers essential operational traits adequately.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The parameter and return sections are well-structured with bullet points, and every sentence adds value without redundancy.

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?

Given no annotations, no output schema, and 0% schema coverage, the description provides good completeness: it explains purpose, parameters, return format, and error cases. However, it doesn't detail the exact structure of the Markdown output (e.g., field order or formatting specifics), leaving minor gaps.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It provides detailed semantics for both parameters: 'keyword' is explained with examples and matching behavior, and 'limit' specifies optionality, default value, and purpose. This adds substantial meaning beyond the bare schema.

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 purpose with a specific verb ('Retrieve information about blockchains') and resource ('blockchains matching a keyword'), distinguishing it from the sibling tool 'getChainById' which presumably retrieves by ID rather than keyword. It specifies case-insensitive partial matching and Markdown formatting.

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 provides clear context for when to use this tool (searching by keyword/partial name) and implies usage vs. 'getChainById' (keyword vs. ID). However, it doesn't explicitly state when NOT to use it or name alternatives beyond the sibling tool, missing explicit exclusions.

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. Dates show when Glama detected each change.

  1. 2 tool updates
    • First observedgetChainById
    • First observedgetChainsByKeyword

TDQS

A4.4/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: getChainById retrieves a specific chain by numeric ID, while getChainsByKeyword searches for chains by textual keyword with partial matching. There is no overlap in functionality or confusion about when to use each tool.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with 'get' as the verb and descriptive noun phrases (ChainById, ChainsByKeyword). They use consistent camelCase naming throughout, making them predictable and easy to understand.

Tool Count3/5

With only two tools, the server feels minimal for a blockchain information service. While the tools cover basic lookup functionality, the scope seems thin compared to what might be expected for comprehensive chain data access (e.g., missing tools for listing all chains, filtering by other attributes, or getting trending/popular chains).

Completeness3/5

The tools provide core lookup capabilities by ID and keyword search, but there are notable gaps. Missing operations include listing all available chains, filtering by attributes like TVL or currency, and accessing additional chain metadata beyond the basic details provided. This limits the server's usefulness for broader blockchain exploration tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kukapay/chainlist-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server