MCP server for the DeFiStream API
Project description
DeFiStream MCP Server
Model Context Protocol (MCP) server that wraps the DeFiStream REST API, giving LLMs (Claude Desktop, Claude Code, etc.) direct access to on-chain DeFi event data. Make sure to get an api key from app.defistream.deveasily.
Quick Start
# Install
cd mcp-server
pip install -e .
# Set your API key
export DEFISTREAM_API_KEY="dsk_your_key_here"
# Run (stdio transport)
defistream-mcp
Docker
No Python installation required — run the MCP server directly from Docker Hub:
docker run -i -e DEFISTREAM_API_KEY=dsk_your_key_here defistream/mcp-server
Claude Code
claude mcp add --transport stdio defistream \
-- docker run -i -e DEFISTREAM_API_KEY=dsk_your_key_here defistream/mcp-server
Claude Desktop (Docker)
Add to claude_desktop_config.json:
{
"mcpServers": {
"defistream": {
"command": "docker",
"args": [
"run", "-i",
"-e", "DEFISTREAM_API_KEY=dsk_your_key_here",
"defistream/mcp-server"
]
}
}
}
Note: Claude Desktop passes
envto the spawned process, butdocker runrequires explicit-eflags. Put the API key inargsas shown above, or set it in your shell before launching Claude Desktop.
Build from Source
cd mcp-server
docker build -t defistream/mcp-server .
docker run -i -e DEFISTREAM_API_KEY=dsk_your_key_here defistream/mcp-server
Publish to Docker Hub
docker login
docker build -t defistream/mcp-server:latest -t defistream/mcp-server:0.1.0 .
docker push defistream/mcp-server:latest
docker push defistream/mcp-server:0.1.0
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"defistream": {
"command": "defistream-mcp",
"env": {
"DEFISTREAM_API_KEY": "dsk_your_key_here"
}
}
}
}
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
DEFISTREAM_API_KEY |
Yes | — | API key (dsk_xxx) |
DEFISTREAM_LOCAL |
No | false |
Set to true to use local gateway (http://localhost:8081/v1) |
DEFISTREAM_BASE_URL |
No | https://api.defistream.dev/v1 |
API base URL (overrides DEFISTREAM_LOCAL) |
DEFISTREAM_MCP_TRANSPORT |
No | stdio |
stdio or sse |
DEFISTREAM_DOWNLOAD_DIR |
No | . (cwd) |
Default dir for downloaded files |
DEFISTREAM_QUERY_ROW_LIMIT |
No | 200 |
Max rows returned by execute_query |
Local Development
To test against the local API gateway (port 8081):
export DEFISTREAM_API_KEY="dsk_your_key"
export DEFISTREAM_LOCAL=true
defistream-mcp
Or in Claude Desktop / Claude Code config:
{
"mcpServers": {
"defistream": {
"command": "defistream-mcp",
"env": {
"DEFISTREAM_API_KEY": "dsk_your_key",
"DEFISTREAM_LOCAL": "true"
}
}
}
}
Tools
Utility
| Tool | Description |
|---|---|
supported_networks(protocol) |
List supported networks for a protocol |
supported_events(protocol) |
List supported event types for a protocol |
base_url() |
Get the API base URL |
execute_query(query, limit?) |
Execute a query path and return JSON results |
download_query(query, file_format?, output_dir?) |
Download query results as CSV/Parquet |
Protocol Query Builders
Each builder returns a query path string to pass to execute_query() or download_query().
| Tool | Protocol | Required Params |
|---|---|---|
erc20_query_builder |
ERC-20 tokens | event_type, network, token |
native_token_query_builder |
Native tokens (ETH, BNB, …) | event_type, network |
aave_v3_query_builder |
AAVE V3 lending | event_type, network |
uniswap_v3_query_builder |
Uniswap V3 DEX | event_type, network, symbol0, symbol1, fee |
lido_query_builder |
Lido staking | event_type, network |
stader_query_builder |
Stader ETHx | event_type, network |
threshold_query_builder |
Threshold tBTC | event_type, network |
All builders also accept: block_start/block_end or since/until for range, verbose, with_value, aggregate, group_by, period, and protocol-specific filter params.
with_value— Settrueto enrich events with USD value data. Addsvalue_usdcolumn to individual events, andagg_value_usdto aggregate results.
Workflow
1. supported_networks("erc20") → check network is valid
2. erc20_query_builder( → build query path
event_type="transfer",
network="ETH",
token="USDT",
since="2025-01-01",
until="2025-01-02"
)
3. execute_query(query) → get JSON results
— or —
download_query(query, "csv") → save CSV file
Multi-token queries: Pass comma-separated known symbol names to query multiple tokens at once (contract addresses not supported for multi-token):
erc20_query_builder(
event_type="transfer",
network="ETH",
token="USDT,USDC,DAI",
since="2025-01-01",
until="2025-01-02"
)
Resources
| URI | Description |
|---|---|
defistream://protocols |
Protocol descriptions and builder tool mapping |
defistream://api-limits |
Block limits, row caps, quota info |
Development
pip install -e ".[dev]"
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file defistream_mcp-0.2.0.tar.gz.
File metadata
- Download URL: defistream_mcp-0.2.0.tar.gz
- Upload date:
- Size: 17.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
538a9cb0a8106460598fa993c78c3266d0d79cbacb7f80bf4ae3da7cee5c403d
|
|
| MD5 |
b170b21f3988655115a6a7e6d64f84f5
|
|
| BLAKE2b-256 |
2ec7ef937a551071b55d076f008aaf44d53efcc04ff7219aaeb48843d8795b50
|
File details
Details for the file defistream_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: defistream_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d846308a5929e4b7fbf854a08848d84eccb25436dfaf5da94beb873b94c5641
|
|
| MD5 |
f1f7984216840ec768f77a83ea432b5f
|
|
| BLAKE2b-256 |
bb0243f90f571c56cbe6abf911386a5ad79d3c2d8dad680d83271e1d01055e6b
|