https://github.com/dioptx/web3-docs
MCP server for Web3 protocol documentation — EIPs, ERCs, BIPs, SIMDs, Cosmos ADRs, Polkadot RFCs, contract registry
https://github.com/dioptx/web3-docs
ai-agents bips bitcoin blockchain cardano claude-code cosmos cursor eips ercs ethereum fastmcp mcp mcp-server model-context-protocol polkadot smart-contracts solana tezos web3
Last synced: 7 days ago
JSON representation
MCP server for Web3 protocol documentation — EIPs, ERCs, BIPs, SIMDs, Cosmos ADRs, Polkadot RFCs, contract registry
- Host: GitHub
- URL: https://github.com/dioptx/web3-docs
- Owner: dioptx
- License: mit
- Created: 2026-04-07T15:49:54.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-26T20:22:31.000Z (about 1 month ago)
- Last Synced: 2026-04-26T22:17:17.010Z (about 1 month ago)
- Topics: ai-agents, bips, bitcoin, blockchain, cardano, claude-code, cosmos, cursor, eips, ercs, ethereum, fastmcp, mcp, mcp-server, model-context-protocol, polkadot, smart-contracts, solana, tezos, web3
- Language: Python
- Size: 365 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-web3 - web3-docs - Local MCP server with a searchable corpus of 1,767 EIPs, BIPs, ADRs, CIPs, and RFCs across 10 chains plus a canonical contract-address registry covering 19 protocols on major EVM chains. SQLite + FTS5, no API keys. (AI & LLM & MCP / x402 Payments Protocol)
README
# web3-docs
**One MCP server, eleven protocol-spec repos.**
Ask your coding agent about EIPs, BIPs, ADRs, CIPs, RFCs and canonical contract addresses — without ever leaving your editor. Works with any [MCP](https://modelcontextprotocol.io/)-compatible client: Claude Code, Cursor, Windsurf, Cline, Zed, Continue, OpenCode, Codex, and more.
[](https://pypi.org/project/web3-docs-mcp/)
[](LICENSE)
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io/)
[](https://github.com/dioptx/web3-docs/actions/workflows/ci.yml)

Or replay in your own terminal: asciinema play docs/assets/demo.cast
## Why
Specs for blockchain protocols live across **eleven different upstream repos** on three different forges. Every time you need to look up EIP-4844, BIP-340, CIP-25, or which fork shipped `PUSH0`, you're tab-hunting through GitHub. This MCP indexes them all locally with FTS5 ranking — **1,767 proposals across 10 chains** plus addresses for 19 protocols on Ethereum, Arbitrum, Base, Optimism, Polygon, and more — so your agent answers with the *actual spec text*, not a hallucinated paraphrase.
## Install
> **Requires:** Python 3.11+ · [`uv`](https://docs.astral.sh/uv/) (provides `uvx`) · ~500 MB free disk for the index · `git` on PATH (used by `--sync`).
### Step 1 — build the index (one-time, ~2 min, ~500 MB in `~/.cache/web3-docs-mcp/`)
```bash
uvx web3-docs-mcp --sync
```
### Step 2 — register the server with your agent
The launch command is identical across clients:
```text
uvx web3-docs-mcp
```
Claude Code
```bash
claude mcp add web3-docs -- uvx web3-docs-mcp
```
Cursor · Windsurf · Cline · Continue · Zed · generic stdio MCP client
Add to the client's MCP config (`~/.cursor/mcp.json`, `~/.codeium/windsurf/mcp_config.json`, `cline_mcp_settings.json`, the `mcpServers` block in your Zed `settings.json`, etc.):
```json
{
"mcpServers": {
"web3-docs": {
"command": "uvx",
"args": ["web3-docs-mcp"]
}
}
}
```
OpenAI Codex CLI
```bash
codex mcp add web3-docs -- uvx web3-docs-mcp
```
pip / pipx
```bash
pip install web3-docs-mcp
# or:
pipx install web3-docs-mcp
```
From source (development)
```bash
git clone https://github.com/dioptx/web3-docs.git && cd web3-docs
uv sync
uv run python server.py --sync # build index
uv run python server.py # run stdio server
```
Restart your agent, then try **"Use web3-docs to look up EIP-1559."**
## What you can ask
| Ask your agent… | Tool chain |
|---|---|
| "What's the fee market in EIP-4844?" | `resolve_proposal` → `query_protocol_docs(query="fee")` |
| "Show me Cosmos ADR-001." | `resolve_proposal` → `query_protocol_docs` |
| "What's in Cancun?" | `list_fork_proposals("Cancun")` |
| "Which BIPs activated with Taproot?" | `list_fork_proposals("Taproot")` |
| "Uniswap router on Base?" | `resolve_contract(protocol="uniswap", chain_id="8453")` |
| "Cardano CIP for native tokens?" | `resolve_proposal("native tokens", chain="cardano")` → cip-25 |
| "ERC-4337 EntryPoint address on Arbitrum?" | `resolve_contract("erc4337", "42161")` |
| "Staking on Cosmos vs Polkadot?" | `resolve_proposal("staking", chain="cosmos")` then `chain="polkadot"` |

Multi-chain canonical addresses, no etherscan tabs.
## Tools
| Tool | What it does |
|---|---|
| `resolve_proposal(query, chain?)` | Fuzzy-find a proposal by keyword, fork name, opcode, or ID. Returns top-5 ranked hits with chain/status/fork. Pass `chain=` (`ethereum`, `bitcoin`, `cosmos`, …) to disambiguate when keywords match multiple chains. |
| `query_protocol_docs(proposal_id, query?)` | Read the full spec body. With `query`, returns only the most relevant sections (token-budgeted). Includes metadata header (status, fork, activation date, authors). |
| `list_fork_proposals(fork_name)` | List every proposal activated by a named fork. Answers "what's in Cancun?" / "BIPs activated with Taproot?". Handles aliases (Pectra → Prague, Dencun → Cancun, Shapella → Shanghai, The Merge → Paris). |
| `resolve_contract(protocol, chain_id?)` | Look up canonical deployed addresses. 19 protocols × major EVM chains. Omit `chain_id` for all chains. |

Fork → all proposals it shipped, then drill into one. Two tool calls instead of an afternoon of tab-hunting.
## Sources
11 upstream repos, all synced via `--sync`:
| Chain | Source |
|---|---|
| Ethereum (EIPs) | [`ethereum/EIPs`](https://github.com/ethereum/EIPs) |
| Ethereum (ERCs) | [`ethereum/ERCs`](https://github.com/ethereum/ERCs) |
| Bitcoin | [`bitcoin/bips`](https://github.com/bitcoin/bips) |
| Solana | [`solana-foundation/solana-improvement-documents`](https://github.com/solana-foundation/solana-improvement-documents) |
| Cosmos | [`cosmos/cosmos-sdk`](https://github.com/cosmos/cosmos-sdk) (`docs/architecture`) |
| Polkadot | [`polkadot-fellows/RFCs`](https://github.com/polkadot-fellows/RFCs) |
| Stacks | [`stacksgov/sips`](https://github.com/stacksgov/sips) |
| Avalanche | [`avalanche-foundation/ACPs`](https://github.com/avalanche-foundation/ACPs) |
| Cardano | [`cardano-foundation/CIPs`](https://github.com/cardano-foundation/CIPs) |
| Tezos | [`tezos/tzip`](https://gitlab.com/tezos/tzip) |
| Sui | [`sui-foundation/sips`](https://github.com/sui-foundation/sips) |
Fork mappings come from [`ethereum/execution-specs`](https://github.com/ethereum/execution-specs) plus canonical Bitcoin soft-fork activations (P2SH, SegWit, Taproot, …).
Contract registry covers: `aave`, `across`, `chainlink`, `compound`, `create2_deployer`, `curve`, `ens`, `erc4337`, `gnosis_safe`, `lido`, `maker`, `multicall`, `oneinch`, `permit2`, `seaport`, `uniswap`, `usdc`, `usdt`, `weth`.
## Why not …
**…just `gh search` or WebFetch each spec on demand?** You'd burn tokens on HTML markup and pay a network round-trip per query. `web3-docs` indexes everything once into local SQLite + FTS5 — sub-millisecond ranked search, plain-text bodies, no rate limits, works offline.
**…one MCP per chain?** You'd manage eleven separate servers and your agent wouldn't know which to call. One unified tool with a single `resolve_proposal` entry point lets the model find the right doc by *concept* (e.g. "blob transactions" → `eip-4844`) rather than guessing the source.
**…ask the model directly without an MCP?** Models hallucinate spec details — wrong fork, wrong gas costs, wrong opcode numbers. This server returns the *actual* upstream text with metadata (status, fork, activation date) so the agent can quote it verbatim.
**…use a vector DB?** Spec corpora are small (≈ 1.7K docs), domain vocabulary is precise (`PUSH0`, `BLOBHASH`, `taproot`), and exact-term matching beats embeddings here. FTS5 gives BM25 ranking with zero infrastructure.
## Configuration
| Env var | Default | Purpose |
|---|---|---|
| `WEB3_DOCS_DATA_DIR` | `~/.cache/web3-docs-mcp` (macOS/Linux) | Where source repos and the SQLite index live |
## Troubleshooting
**"Index is empty" on any tool call.** You haven't run `--sync` yet. Run:
```bash
uvx web3-docs-mcp --sync
```
**`uvx: command not found`.** Install [uv](https://docs.astral.sh/uv/getting-started/installation/): `curl -LsSf https://astral.sh/uv/install.sh | sh`.
**Want to free disk space?** Source repos (`~/.cache/web3-docs-mcp/repos/`) can be deleted after sync; only `proposals.db` is needed at runtime. Re-run `--sync` to update.
**Stale data?** Re-run `--sync` — it does a fast `git pull` and reindexes incrementally.
## Development
```bash
git clone https://github.com/dioptx/web3-docs.git && cd web3-docs
uv sync --extra test
uv run pytest # 98 tests, BDD + unit
uv build # build wheel + sdist
```
## Status
v0.2.0 — adds Cardano CIPs, Tezos TZIPs, Sui SIPs (10 chains, 1,767 proposals). SQLite + FTS5, FastMCP stdio transport. See [CHANGELOG.md](CHANGELOG.md) for release history.
## License
MIT — see [LICENSE](LICENSE).