https://github.com/exekerey/3xpl-mcp
A Model Context Protocol (MCP) server for querying data from 48 blockchains using 3xpl.com blockchain explorer JSON API
https://github.com/exekerey/3xpl-mcp
3xpl ai api bitcoin blockchain blockchain-explorer ethereum explorer-api gpt mcp mcp-api mcp-server
Last synced: 6 months ago
JSON representation
A Model Context Protocol (MCP) server for querying data from 48 blockchains using 3xpl.com blockchain explorer JSON API
- Host: GitHub
- URL: https://github.com/exekerey/3xpl-mcp
- Owner: exekerey
- License: mit
- Created: 2025-04-09T11:33:32.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-04-23T05:06:29.000Z (6 months ago)
- Last Synced: 2025-04-23T19:24:59.489Z (6 months ago)
- Topics: 3xpl, ai, api, bitcoin, blockchain, blockchain-explorer, ethereum, explorer-api, gpt, mcp, mcp-api, mcp-server
- Language: Python
- Homepage:
- Size: 65.4 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 3xpl.com JSON API MCP server
# Overview
3xpl API in form of a Model Context Protocol (MCP) server.
Allows LLMs to interact with data on **48** blockchains.
This repository can also be an example of 3xpl JSON API usage, see details in the code.
[//]: # (demo video from Claude)
## List of available tools
| name | description | status |
|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------|
| resolve_ens_domain | resolves an ENS domain to a regular address | ✅ |
| detect_blockchains | retrieve a list of blockchains on which a transaction/address is present | ✅ |
| get_latest_block | get latest block height in specified blockchain | ✅ |
| get_average_fee_24h_usd | retrieves average transaction fee for last 24 hours in specified blockchain in US dollars. | ✅ |
| get_mempool_events_count | get the number of unconfirmed events(transfers, inputs/outputs, not transactions) at the moment in the memory pool of provided blockchain | ✅ |
| get_events_count_24h | retrieve number of events(transfers, inputs/outputs, not whole transactions) in last 24h for provided blockchain | ✅ |
| get_block_overview | extract short summary about a block in provided blockchain | ✅ |
| get_address_overview | extract short summary about an address in provided blockchain | ✅ |
| get_transaction_overview | extract short summary about a transaction in provided blockchain(to be improved) | ✅ |
| list_blockchains_and_modules | get a list of blockchains and their modules with module descriptions | ✅ |
| aggregate_block_transactions | aggregate transactions in a block | ✅ |
| aggregate_transaction_transfers | aggregate individual transfers in a transactions | ✅ |
| aggregate_address_balances | aggregate balances for an address with | ✅ |
| aggregate_address_transactions | aggregate confirmed transactions for an address | ✅ |
| aggregate_address_mempool | aggregate pending transactions for an address | ✅ |## List of available prompts
| name | description |
|---------------------|---------------------------------------------------------------------------|
| get_blockchain_info | makes LLM dig deeper into data for providing the most fulfilled response. |[//]: # (*might be inaccurate, see the API docs and policy for details.)
## Installation
```shell
# get the repository
git clone https://github.com/exekerey/3xpl-mcp.git
cd 3xpl-mcp# create and activate virtual environment
uv venv
source .venv/bin/activate# install dependencies
uv pip install -e .
```MCP configuration:
```json
{
"mcpServers": {
"3xpl_API": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"{:path_to_cloned}/3xpl_mcp/main.py"
],
"env": {
"THREEXPL_API_KEY": ""
}
}
}
}
```**Note*: Set your API key from [3xpl](https://3xpl.com/data/json-api) to use the main API.
If the `THREEXPL_API_KEY` field in the config file is left blank,
the MCP server will use the sandbox API, which has rate limits.**Note 2*: if MCP server doesn't start you might need to provide full path to uv in the `command` field.
## Contribution
Feel free to open issues for bugs or suggestions.
Pull requests are also welcome – just make sure to provide description of your changes.