Exposes Covalent's GoldRush blockchain data APIs as MCP resources and tools.
This project provides a MCP (Model Context Protocol) server that exposes Covalent's GoldRush APIs as MCP resources and tools. It is implemented in TypeScript using @modelcontextprotocol/sdk and @covalenthq/client-sdk.
Model Context Protocol (MCP) is a message protocol for connecting context or tool-providing servers with LLM clients. This server allows an LLM client to:
Using any of the GoldRush developer tools requires an API key. Get yours at https://goldrush.dev/platform/auth/register/
Add this to your claude_desktop_config.json
:
{
"mcpServers": {
"goldrush": {
"command": "npx",
"args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
"env": {
"GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
For more details follow the official MCP Quickstart for Claude Desktop Users
$ claude mcp add goldrush -e GOLDRUSH_API_KEY=<YOUR_API_KEY_HERE> -- npx -y @covalenthq/goldrush-mcp-server@latest
For more details see Set up Model Context Protocol (MCP)
~/.cursor/mcp.json
:{
"mcpServers": {
"goldrush": {
"command": "npx",
"args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
"env": {
"GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
For project specific configuration, add the above to a .cursor/mcp.json
file in your project directory. This allows you to define MCP servers that are only available within that specific project.
After adding, refresh the MCP server list to see the new tools. The Composer Agent will automatically use any MCP tools that are listed under Available Tools on the MCP settings page if it determines them to be relevant. To prompt tool usage intentionally, simply tell the agent to use the tool, referring to it either by name or by description.
See Example LLM Flow
Add this to your ~/.codeium/windsurf/mcp_config.json
file:
{
"mcpServers": {
"goldrush": {
"command": "npx",
"args": ["-y", "@covalenthq/goldrush-mcp-server@latest"],
"env": {
"GOLDRUSH_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
The server supports both STDIO and HTTP transports for different integration scenarios:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "@covalenthq/goldrush-mcp-server@latest"],
env: { GOLDRUSH_API_KEY: "your_api_key_here" },
});
const client = new Client(
{
name: "example-client",
version: "1.0.0",
},
{
capabilities: {
tools: {},
},
}
);
await client.connect(transport);
// List tools and call them
const tools = await client.listTools();
console.log(
"Available tools:",
tools.tools.map((tool) => tool.name).join(", ")
);
const result = await client.callTool({
name: "token_balances",
arguments: {
chainName: "eth-mainnet",
address: "0xfC43f5F9dd45258b3AFf31Bdbe6561D97e8B71de",
quoteCurrency: "USD",
nft: false,
},
});
console.log("Token balances:", result.content);
# Start the HTTP server
node dist/index.js --transport http --port 3000
Then make HTTP requests:
const response = await fetch("http://localhost:3000/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer YOUR_GOLDRUSH_API_KEY",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "token_balances",
arguments: {
chainName: "eth-mainnet",
address: "0xfC43f5F9dd45258b3AFf31Bdbe6561D97e8B71de",
quoteCurrency: "USD",
nft: false,
},
},
}),
});
const result = await response.json();
console.log("Token balances:", result);
transaction_summary
to gather data about a wallet.Tools are a powerful primitive in the Model Context Protocol (MCP) that enable servers to expose executable functionality to clients. Through tools, LLMs can interact with external systems, perform computations, and take actions in the real world.
Tools are designed to be model-controlled, meaning that tools are exposed from servers to clients with the intention of the AI model being able to automatically invoke them (with a human in the loop to grant approval).
bitcoin_hd_wallet_balances
bitcoin_non_hd_wallet_balances
bitcoin_transactions
block
block_heights
erc20_token_transfers
gas_prices
historical_portfolio_value
historical_token_balances
historical_token_prices
log_events_by_address
log_events_by_topic
multichain_address_activity
multichain_balances
multichain_transactions
native_token_balance
nft_check_ownership
nft_for_address
pool_spot_prices
token_approvals
token_balances
token_holders
transaction
transaction_summary
transactions_for_address
transactions_for_block
Resources are a core primitive in the Model Context Protocol (MCP) that allow servers to expose data and content that can be read by clients and used as context for LLM interactions.
Resources are designed to be application-controlled, meaning that the client application can decide how and when they should be used. Different MCP clients may handle resources differently. For example:
Resources exposed by the GoldRush MCP server are split into static and dynamic types:
Static resources (src/resources/staticResources.ts
):
config://supported-chains
config://quote-currencies
Dynamic resources (src/resources/dynamicResources.ts
):
status://all-chains
status://chain/{chainName}
Dynamic resources fetch real-time data from the Covalent API on each request, ensuring current information.
git clone https://github.com/covalenthq/goldrush-mcp-server.git
cd goldrush-mcp-server
npm install
Then build:
npm run build
The server supports multiple transport options:
# Start with default STDIO transport (recommended for MCP clients)
npm run start
# Or explicitly specify STDIO transport
npm run start:stdio
# Start with HTTP transport on port 3000
npm run start:http
# Custom configuration with CLI arguments
node dist/index.js --transport http --port 8080
node dist/index.js --transport stdio --api-key YOUR_KEY_HERE
/mcp
endpoint - useful for web integrations--transport
, -t
: Choose transport type (stdio
or http
)--port
, -p
: Set HTTP port (default: 3000)--api-key
, -k
: Provide API key directly--help
, -h
: Show usage informationSTDIO transport spawns the MCP server on stdin/stdout where MCP clients can connect directly. HTTP transport starts a server that accepts POST requests to /mcp
with Bearer token authentication.
You can run the example client that will spawn the server as a child process via STDIO:
npm run example
This attempts a few Covalent calls and prints out the responses.
npm run test
This runs the entire test suite covering each service.
You must set the GOLDRUSH_API_KEY
environment variable to a valid key from the Covalent platform.
For example on Linux/macOS:
export GOLDRUSH_API_KEY=YOUR_KEY_HERE
Or on Windows:
set GOLDRUSH_API_KEY=YOUR_KEY_HERE
goldrush-mcp-server
āāā src
ā āāā index.ts # Main entry point with CLI parsing
ā āāā server.ts # Unified server with STDIO and HTTP transports
ā āāā server-stdio.ts # Legacy STDIO-only server (backup)
ā āāā services/ # Modular service implementations
ā ā āāā AllChainsService.ts # Cross-chain service tools
ā ā āāā BalanceService.ts # Balance-related tools
ā ā āāā BaseService.ts # Basic blockchain tools
ā ā āāā BitcoinService.ts # Bitcoin-specific tools
ā ā āāā NftService.ts # NFT-related tools
ā ā āāā PricingService.ts # Pricing-related tools
ā ā āāā SecurityService.ts # Security-related tools
ā ā āāā TransactionService.ts# Transaction-related tools
ā āāā resources/ # Resource implementations
ā ā āāā staticResources.ts # Static configuration resources
ā ā āāā dynamicResources.ts # Dynamic chain status resources
ā āāā utils/ # Utility functions and constants
ā ā āāā constants.ts # Shared constants
ā ā āāā helpers.ts # Helper functions
ā āāā example-client.ts # Example LLM client using STDIO transport
āāā test
ā āāā AllChainsService.test.ts
ā āāā BalanceService.test.ts
ā āāā BaseService.test.ts
ā āāā BitcoinService.test.ts
ā āāā NftService.test.ts
ā āāā PricingService.test.ts
ā āāā Resources.test.ts
ā āāā SecurityService.test.ts
ā āāā TransactionService.test.ts
āāā eslint.config.mjs # ESLint configuration
āāā package.json # Project dependencies and scripts
āāā package-lock.json # Locked dependencies
āāā tsconfig.json # TypeScript configuration
āāā LICENSE # MIT license
āāā README.md # Project documentation
https://modelcontextprotocol.io/docs/tools/inspector
npx @modelcontextprotocol/inspector node dist/index.js
We welcome contributions from the community! If you have suggestions, improvements, or new spam contract addresses to add, please open an issue or submit a pull request. Feel free to check issues page.
Give a āļø if this project helped you!
This project is MIT licensed.
Securely access BigQuery datasets with intelligent caching, schema tracking, and query analytics via Supabase integration.
Connect to and interact with an Elasticsearch cluster directly from any MCP client using environment variables for configuration.
A read-only MCP server by CData that enables LLMs to query live data from Dynamics 365. Requires the CData JDBC Driver for Dynamics 365.
A read-only MCP server for querying live eBay data. Requires a separately licensed CData JDBC Driver for eBay.
Interact with and manage MySQL databases. Requires connection details configured via environment variables.
Manage and query databases, tenants, users, auth using LLMs
A read-only MCP server for CSV files from CData, requiring an external JDBC driver for connection.
A modular server providing unified access to multiple astronomical datasets, including astroquery services and DESI data sources.
Interact with the Neon serverless Postgres platform
Connects to and interacts with various database systems like SQLite, PostgreSQL, SQL Server, and MongoDB.