27 tools for blockchain data and live chain queries
Valid MCP server (1 strong, 4 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (3/3 approved).
5 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: ONESOURCE_BASE_URL
Environment variable: ONESOURCE_ANALYTICS
Environment variable: ONESOURCE_ANALYTICS_URL
Environment variable: X402_ANALYTICS_KEY
Environment variable: X402_PRIVATE_KEY
Add this to your MCP configuration file:
{
"mcpServers": {
"io-onesource-mcp": {
"env": {
"X402_PRIVATE_KEY": "your-x402-private-key-here",
"ONESOURCE_BASE_URL": "your-onesource-base-url-here",
"X402_ANALYTICS_KEY": "your-x402-analytics-key-here",
"ONESOURCE_ANALYTICS": "your-onesource-analytics-here",
"ONESOURCE_ANALYTICS_URL": "your-onesource-analytics-url-here"
},
"args": [
"-y",
"@one-source/mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
Unified MCP server for OneSource — 29 tools for blockchain data and live chain queries in a single server.
What is MCP? The Model Context Protocol lets AI assistants call tools and access data sources. This server exposes both the OneSource blockchain API and its documentation as tools.
claude mcp add onesource -- npx -y @one-source/mcp@latest
Add to your MCP config:
{
"mcpServers": {
"onesource": {
"command": "npx",
"args": ["-y", "@one-source/mcp@latest"]
}
}
}
npx -y @one-source/mcp@latest
npx -y @one-source/mcp@latest --http
npx -y @one-source/mcp@latest --http --port=8080
Then connect your MCP client to http://localhost:8080/.
Health check: GET http://localhost:8080/health
| Tool | Description |
|---|---|
1s_allowance_live | ERC20 allowance check |
1s_contract_info_live | Contract type detection via ERC165 |
1s_erc1155_balance_live | ERC1155 balance via RPC |
1s_erc20_balance_live | ERC20 balance via balanceOf |
1s_erc20_transfers_live | ERC20 Transfer logs via eth_getLogs |
1s_erc721_tokens_live | ERC721 token enumeration |
1s_events_live | Event logs via eth_getLogs |
1s_multi_balance_live | ETH + multiple ERC20 balances |
1s_nft_metadata_live | NFT metadata via tokenURI |
1s_nft_owner_live | NFT owner via ownerOf |
1s_total_supply_live | Token total supply |
1s_tx_details_live | Transaction + receipt via RPC |
RPC only.
| Tool | Description |
|---|---|
1s_block_by_number | Block details by number via RPC |
1s_block_number | Latest block number |
1s_chain_id | EIP-155 chain ID |
1s_contract_code | Contract bytecode |
1s_ens_resolve | ENS name/address resolution |
1s_estimate_gas | Gas estimation |
1s_network_info | Chain ID, block number, gas price |
1s_nonce | Transaction count |
1s_pending_block | Pending block from mempool |
1s_proxy_detect | Proxy contract detection |
1s_simulate_call | Simulate eth_call |
1s_storage_read | Read storage slot |
1s_tx_receipt | Transaction receipt |
| Tool | Description |
|---|---|
1s_payment_mode | View or switch the x402 payment scheme — exact (per-call) vs batch (payment channel: one deposit funds many off-chain calls, settled with a single claim) |
1s_refund | Refund unused batch channel balance back to your wallet on demand |
No authentication required.
| Tool | Purpose | When to use |
|---|---|---|
1s_setup_check | Server health, version, auth status, setup instructions | First thing to call — checks if everything is configured |
1s_report_bug | Report bugs to Slack (or GitHub Issues fallback) | When a tool errors or user wants to report an issue |
All blockchain API tools accept an optional network parameter:
| Network | Description |
|---|---|
ethereum | Ethereum mainnet (default) |
sepolia | Ethereum Sepolia testnet |
avax | Avalanche C-Chain |
Blockchain API tools require authentication. Two options are available — if both are set, API key takes priority.
| Method | Variable | Description |
|---|---|---|
| API key | ONESOURCE_API_KEY | Unlimited calls, no per-call cost |
| x402 micropayments | X402_PRIVATE_KEY | Pay-per-call via USDC on Base, no account required |
sk_.claude mcp add onesource -e ONESOURCE_API_KEY=<key> -- npx -y @one-source/mcp@latest
Add the env block to your MCP config:
{
"mcpServers": {
"onesource": {
"command": "npx",
"args": ["-y", "@one-source/mcp@latest"],
"env": {
"ONESOURCE_API_KEY": "<key>"
}
}
}
}
ONESOURCE_API_KEY=<key> npx -y @one-source/mcp@latest
After adding, reload the MCP server and call 1s_setup_check — it should show Status: Configured (API key).
Blockchain API endpoints are priced in USDC on Base via x402. When you set X402_PRIVATE_KEY, the server automatically handles payments — tool calls are paid and retried transparently without any extra work from the agent.
0x prefix is optional — both formats are accepted.1s_setup_check. It will show the wallet address derived from your key under "Wallet address".1s_setup_check, on the Base network. A few dollars ($1–5 USDC) is enough for hundreds of calls. If your USDC is on Ethereum mainnet, bridge it using the Base Bridge.1s_network_info for ethereum. If it returns chain data (block number, gas price), x402 payments are working end-to-end.claude mcp add onesource -e X402_PRIVATE_KEY=<key> -- npx -y @one-source/mcp@latest
Add the env block to your MCP config:
{
"mcpServers": {
"onesource": {
"command": "npx",
"args": ["-y", "@one-source/mcp@latest"],
"env": {
"X402_PRIVATE_KEY": "<key>"
}
}
}
}
X402_PRIVATE_KEY=<key> npx -y @one-source/mcp@latest
If you prefer editing the config file directly instead of using CLI commands:
| Client | Config file path |
|---|---|
| Claude Code | Run claude mcp get onesource to see the file path |
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor (macOS) | ~/.cursor/mcp.json |
| Cursor (Windows) | %USERPROFILE%\.cursor\mcp.json |
Add the onesource entry inside "mcpServers" using the JSON block shown above.
Instead of the env config block, you can set either variable as a shell or system environment variable: export ONESOURCE_API_KEY=<key> (bash/zsh) or $env:ONESOURCE_API_KEY = "<key>" (PowerShell). Set it at the OS level for persistence across sessions.
By default each paid call signs one USDC payment (exact). For a burst of calls, switch to a batch payment channel — one on-chain deposit funds many off-chain calls, settled with a single claim — by calling 1s_payment_mode with { "mode": "batch" } (or setting X402_PAYMENT_MODE=batch). The first batch call deposits price × X402_DEPOSIT_MULTIPLIER (default 10), so a session usually over-funds the channel. Reclaim the unused balance any time with the 1s_refund tool; idle channels are also auto-refunded after a few hours. The residual is always recoverable.
Never commit keys to source control. Use environment variables, a .env file (excluded from git), or a secrets manager.
After any config change: Run
/reload-pluginsin Claude Code, or restart Claude Desktop / Cursor. The MCP server must be reloaded to pick up new environment variables.
| Variable | Default | Description |
|---|---|---|
ONESOURCE_API_KEY | — | OneSource API key for Bearer token auth. Takes priority over x402. |
X402_PRIVATE_KEY | — | EVM private key (64-char hex, 0x prefix optional) for automatic x402 USDC payments on Base |
X402_PAYMENT_MODE | exact | Initial x402 scheme: exact (per-call) or batch (payment channel). Switch in-session with 1s_payment_mode. |
X402_DEPOSIT_MULTIPLIER | 10 | Batch mode: deposit = price × this multiplier, funding that many calls per channel. Unused balance is reclaimable via 1s_refund. |
X402_CHANNEL_DIR | — | Directory to persist batch channel state across restarts. Unset = in-memory (channel lost on restart). |
ONESOURCE_BASE_URL | https://skills.onesource.io | API base URL |
ONESOURCE_ANALYTICS | — | Set to false to disable analytics |
ONESOURCE_ANALYTICS_URL | — | Dashboard endpoint for analytics |
X402_ANALYTICS_KEY | — | API key for dashboard analytics |
**1s_setup_check shows "Not configured"**
Set either ONESOURCE_API_KEY or X402_PRIVATE_KEY. Reload the MCP server after setting either variable (see note above). If the key still isn't reaching the server, set it as a shell environment variable directly.
Getting 403 / wrong key active despite correct setup
A key set in your shell profile (e.g. ~/.zshrc, ~/.bash_profile) is picked up by the MCP server process even if it isn't in your Claude MCP config. Run echo $ONESOURCE_API_KEY in your terminal to check. If it prints a value you didn't intend, unset it (unset ONESOURCE_API_KEY) or explicitly clear it when adding the server: claude mcp add onesource -e ONESOURCE_API_KEY= -e X402_PRIVATE_KEY=<key> -- npx -y @one-source/mcp@latest. 1s_setup_check shows the first 6 characters of whichever key is active so you can confirm which one the server is using.
Instructions show wrong auth method after reinstall
/reload-plugins in Claude Code reconnects tools but may not refresh the system prompt the LLM sees. If you switch auth method (e.g. API key → x402), do a full Claude Code restart to ensure the instructions reflect the new auth.
"MCP server onesource already exists" error
Run claude mcp remove onesource first, then re-add with your updated config.
Windows: npx requires cmd /c wrapper
Claude Code's /doctor command may warn about this. Update your MCP config to use "command": "cmd" with "args": ["/c", "npx", "-y", "@one-source/mcp@latest"].
**npx hangs with no output**
That's normal — stdio mode waits for JSON-RPC input on stdin. Use --http if you want an HTTP server you can curl.
Port already in use
Specify a different port: npx -y @one-source/mcp@latest --http --port=8080
This package is listed on the official MCP Registry under the verified namespace io.onesource/mcp and on Glama. When releasing a new version, update both registries.
Download the installer for your platform from go.dev/dl and run it. Verify:
go version
go install github.com/modelcontextprotocol/registry/cmd/mcp-publisher@latest
If the Go module path has changed and the command fails, download the binary directly from the mcp-publisher GitHub releases page instead.
On Windows, add Go's bin directory to your PATH if the command isn't recognized:
$env:PATH += ";$env:USERPROFILE\go\bin"
Verify:
mcp-publisher --help
The onesource.io domain has a DNS TXT record that proves ownership of the io.onesource namespace. This is already configured — you don't need to redo it.
The record is on the root domain (onesource.io, not _mcp-registry.onesource.io):
v=MCPv1; k=ed25519; p=7D3U5rufgNXb/lH2MthTRZdDzEGeE7/Jvg8YkiArQc8=
You can verify it resolves:
nslookup -type=TXT onesource.io 8.8.8.8
Authentication requires the ed25519 private key in hex format that corresponds to the public key in the DNS record. Ask the team lead for this key — it's stored in the team's password manager / vault.
If you need to regenerate the keypair (this invalidates the current DNS record and requires updating it):
openssl genpkey -algorithm Ed25519 -out key.pem) openssl pkey -in key.pem -outform DER | tail -c 32 | xxd -p -c 32
openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64
onesource.io with the new public key: v=MCPv1; k=ed25519; p=<base64-public-key>
Every time you release a new npm version, update the MCP Registry:
npm run build
npm publish --access public
server.json — set both version fields to match the new npm version: {
"version": "x.y.z",
...
"packages": [{ "version": "x.y.z", ... }]
}
The mcpName field in package.json must be "io.onesource/mcp" and must match the name field in server.json. This is already set — don't remove it.
3. Authenticate (tokens expire, so do this each time):
mcp-publisher login dns --domain onesource.io --private-key <ed25519-hex-private-key>
mcp-publisher publish
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=onesource"
Glama auto-syncs from the GitHub repo daily. No manual steps needed after a release — just make sure changes are pushed to main. The glama.json file in the repo root controls ownership. Manual re-sync is available from the Glama admin panel after claiming the server.
Apache 2.0 — see LICENSE for details.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.