chunknet/mcp-server
3.2
If you are the rightful owner of mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Chunk MCP Server is a production-ready server that exposes Chunk MedianFeeds tools over stdio, designed for the Chunk testnet.
Tools
13
Resources
0
Prompts
0
Chunk MCP Server
Production-ready MCP server exposing Chunk MedianFeeds tools over stdio.
- Network: Chunk testnet (default RPC:
https://rpc.chunknet.org) - Contract: MedianFeeds (default):
0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD
Requirements
- Node.js 18+ (ESM modules)
Quickstart
- Install
cd mcp-servernpm install
- Build
npm run build
- Run (stdio transport)
npm start
Configuration
- Environment variables
CHUNK_RPC— JSON-RPC endpoint (default:https://rpc.chunknet.org)CHUNK_MEDIAN_ADDR— MedianFeeds contract address (default:0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD)METRICS_CACHE_TTL_MS— metrics cache TTL in milliseconds (default: 30000)
Production .env (overrides optional)
CHUNK_RPC=https://rpc.chunknet.org
CHUNK_MEDIAN_ADDR=0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD
METRICS_CACHE_TTL_MS=30000
Notes: You can omit .env entirely — these are the built-in defaults.
Tools
list_metrics— List metric definitions from MedianFeeds- Args:
{ chain?, rpcUrl?, contractAddress?, currency?, tagIncludes?, nameContains?, limit?, offset? }
- Args:
quote_metrics— Get last quotes for given metric names- Args:
{ names: string[], chain?, rpcUrl?, contractAddress?, format?: 'raw'|'int'|'decimal'|'all', decimals?: number }
- Args:
get_signed_root— Get current signed Merkle tree root (epoch)- Args:
{ chain?, rpcUrl?, contractAddress? }
- Args:
get_metrics_count— Total metrics counthas_metric— Check if a metric exists by nameget_metrics_map— Mappingname -> id(index-based)quote_by_ids— Quote metrics by numeric ids- Args:
{ ids: number[], chain?, rpcUrl?, contractAddress?, format?, decimals? }
- Args:
quote_metrics_at_block— Quote metrics at specific block number- Args:
{ names: string[], blockNumber: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
- Args:
quote_metrics_at_epoch_end— Quote metrics at the end of an epoch- Args:
{ names: string[], epochDuration?: number, epochId?: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
- Args:
quote_metrics_at_timestamp— Quote metrics at specific UNIX timestamp (seconds)- Args:
{ names: string[], timestamp: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
- Args:
get_health— RPC health info{ chainId, blockNumber }check_staleness— Check if metrics are stale w.r.tmaxAgeSecondscheck_thresholds— Threshold checks for rules of form{ name, op: 'lt'|'lte'|'gt'|'gte'|'eq'|'neq', value: string|number }
Formatting
- Raw values are returned as on-chain 2**112-scaled integers.
- Use
format: 'decimal'anddecimalsto get human-friendly strings with rounding.
Resources
chunk://median/{chain}/metrics— JSON array of metrics for a chain (chunksupported)chunk://median/{chain}/metric/{name}— JSON object with the latest quote for a metric
Subscriptions
- The server registers
resources.subscribecapability. - On epoch changes,
resources/updatednotifications are sent for subscribed URIs.
Client Example (Node.js)
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'node',
args: ['dist/server.js'],
env: process.env,
});
const client = new Client({ name: 'chunk-mcp', version: '0.1.0' });
await client.connect(transport);
const list = await client.callTool({ name: 'list_metrics', arguments: { limit: 5 } });
const names = list.structuredContent.metrics.map(m => m.name).slice(0, 2);
const quotes = await client.callTool({ name: 'quote_metrics', arguments: { names, format: 'decimal', decimals: 6 } });
console.log(quotes.structuredContent.quotes);
await client.close();
Claude Desktop (MCP) configuration (example)
- Configure a stdio MCP server:
{
"mcpServers": {
"chunk-mcp": {
"command": "node",
"args": ["dist/server.js"],
"env": {
"CHUNK_RPC": "https://rpc.chunknet.org",
"CHUNK_MEDIAN_ADDR": "0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD"
}
}
}
}
Operational Notes
- Timeouts and RPC limits depend on your provider.
- Handle network errors and transient failures with retries on the client side.
- For production, pin a stable RPC endpoint and contract address.
Project Structure
src/server.js— source (ESM)dist/server.js— bundled build (afternpm run build)- No tests are included in this directory by design.