io.github.CloudCorpRecords/chainlens

Official registry Other

Blockscout explorer data: addresses, blocks, transactions, tokens, NFTs, and contract reads.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @reneturcios/chainlens
Claude Code
claude mcp add chainlens -- npx -y @reneturcios/chainlens@0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "chainlens": {
            "command": "npx",
            "args": [
                "-y",
                "@reneturcios/chainlens@0.1.0",
                "mcp"
            ]
        }
    }
}
OCI package ghcr.io/cloudcorprecords/chainlens:0.1.0
Claude Code
claude mcp add chainlens -- docker run -i --rm ghcr.io/cloudcorprecords/chainlens:0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "chainlens": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/cloudcorprecords/chainlens:0.1.0",
                "mcp"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. chainlens
  2. How it talks to the service
  3. Install
  4. CLI
  5. MCP server
  6. Development
  7. License

chainlens

chainlens looks into EVM blockchains through Blockscout: what an address holds and has done, what is in a block or a transaction, which tokens and NFTs sit in a wallet, and what a verified contract's ABI and source say. Six chains are built in — Ethereum, Optimism, Gnosis, Polygon, Base, and Arbitrum One — and every answer comes from that chain's public Blockscout API v2 instance.

This package is a clean-room rebuild of the 16 tools documented in the README of the original Blockscout MCP server. The full documented set is covered; the wire mapping is described below, including the parts that are reconstructions.

How it talks to the service

No API key is required — public Blockscout instances are keyless:

# Optional: send a key as an x-api-key header
export BLOCKSCOUT_API_KEY="your key"
# Optional: override the per-chain base URL for any chain
export BLOCKSCOUT_API_URL="https://eth.blockscout.com/api/v2"

The base URL is chosen per chain_id from a built-in map: 1 Ethereum, 10 Optimism, 100 Gnosis, 137 Polygon, 8453 Base, 42161 Arbitrum One. An unknown chain_id is an error naming the known chains (unless BLOCKSCOUT_API_URL is set, in which case the override wins for any chain).

Wire-format notes. The original server routes most data tools through its PRO gateway; this rebuild maps them onto the public Blockscout API v2 (/addresses/..., /blocks/..., /transactions/..., /smart-contracts/..., /search). A few shapings are documented reconstructions and first live-smoke checks:

  • ENS resolution uses mainnet /search?q=<name> and picks the first result carrying an address.
  • read_contract POSTs {function_name, args, abi} to /smart-contracts/{address}/methods/read — the least-proven mapping.
  • cursor arguments are forwarded as a cursor query parameter; Blockscout v2 paging normally uses next_page_params, so cursor support is a drift risk.
  • age_from / age_to (and methods / token) filters are applied client-side over the first fetched page, not forwarded upstream.

Two tools never touch the network: __unlock_blockchain_analysis__ returns local guidance plus the chain list, and get_chains_list filters that list locally by name, chain id, or currency substring.

Install

npx @reneturcios/chainlens get_block_number '{"chain_id":"1"}'

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/chainlens

The container defaults to the MCP server. Pass CLI arguments to use it as a CLI instead.

CLI

The CLI mirrors the tools: one subcommand per tool, taking its arguments as a single JSON object.

chainlens get_chains_list '{"query":"base"}'
chainlens get_address_info '{"chain_id":"1","address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}'
chainlens get_transactions_by_address '{"chain_id":"1","address":"0x...","age_from":"2026-10-01T00:00:00Z","age_to":"2026-10-26T23:59:59Z"}'
chainlens get_block_info '{"chain_id":"8453","number_or_hash":"latest"}'
chainlens --version

Exit codes: 0 on success, 1 on an API or validation error (the error names the problem), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

npx -y @reneturcios/chainlens mcp

MCP client configuration:

{
  "mcpServers": {
    "chainlens": {
      "command": "npx",
      "args": ["-y", "@reneturcios/chainlens", "mcp"]
    }
  }
}
Tools
ToolInputWhat it does
__unlock_blockchain_analysis__—Local: returns status, guidance, and the supported chain list.
get_chains_listqueryLocal: the 6-chain list filtered by a name/id/currency substring.
get_address_by_ens_namename (required)Resolve an ENS name via mainnet search; returns the first result with an address.
lookup_token_by_symbolchain_id, symbol (required)Search a chain; returns token-type items (fallback: all items).
get_contract_abichain_id, address (required)The ABI of a verified contract.
inspect_contract_codechain_id, address (required), file_nameSource code and creation status of a verified contract.
get_address_infochain_id, address (required)Address balance, type, and metadata.
get_tokens_by_addresschain_id, address (required), cursorToken balances held by an address.
get_block_numberchain_id (required), datetimeLatest block number and timestamp; echoes the requested datetime.
get_transactions_by_addresschain_id, address, age_from, age_to (required), methods, cursorAddress transactions; age and method filters applied client-side over the first page.
get_token_transfers_by_addresschain_id, address, age_from, age_to (required), token, cursorERC-20 transfers; age and token filters applied client-side over the first page.
nft_tokens_by_addresschain_id, address (required), cursorNFT tokens (ERC-721, ERC-1155) held by an address.
get_block_infochain_id, number_or_hash (required), include_transactionsBlock details by number or hash.
get_transaction_infochain_id, hash (required), include_raw_inputTransaction details by hash.
read_contractchain_id, address, abi, function_name (required), args (JSON string, default []), blockRead a contract function (reconstructed wire mapping, see notes).
direct_api_callchain_id, endpoint_path (required), query_params, method, json_body, cursorCall any Blockscout API v2 endpoint path directly.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, fake fetch only, no network
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Frequently asked questions

What is io.github.CloudCorpRecords/chainlens?

Blockscout explorer data: addresses, blocks, transactions, tokens, NFTs, and contract reads.

How do I install io.github.CloudCorpRecords/chainlens?

It runs on your machine. In Claude Code: claude mcp add chainlens -- npx -y @reneturcios/chainlens@0.1.0 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.CloudCorpRecords/chainlens need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.CloudCorpRecords/chainlens open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.CloudCorpRecords/chainlens?

It is published by CloudCorpRecords. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.