MCP server
mcp-name: io.github.whatevercat-creator/crypto-sentiment-x402
The crypto_sentiment_x402_mcp package exposes the sentiment API as an MCP
tool (crypto_sentiment) so Claude Desktop, Claude Code, or any other MCP
client can call it directly as part of an agent's normal tool use — no
separate HTTP client code needed on the caller's side.
What it returns: sentiment for a ticker symbol (e.g. BTC, ETH, SOL) from 9 crypto news RSS outlets (CoinDesk, Cointelegraph, Decrypt, Bitcoin Magazine, The Block, CryptoSlate, NewsBTC, CryptoPotato, The Defiant) and the Fear & Greed Index. Only headlines from the last 72 hours are scored, weighted toward the newest. Each call returns a bullish/bearish/neutral label (or "insufficient recent news"), a compound score, a per-source breakdown and the headlines behind each score.
Payment model: the MCP server itself holds a wallet (via Coinbase Developer Platform) and pays the API's x402 price out of that wallet for every call, entirely inside your own local process — invisible to the MCP protocol layer, so it works in Claude Desktop (or any other stock MCP client) exactly like a normal, unpaid MCP server would. The paid reading has no free tier — whoever runs this MCP server funds the wallet it uses. If you're handing it to someone else to run, they fund their own wallet, not you.
Try it free
Three tools need no wallet, no CDP key and pay nothing. The server starts without any CDP variables, so you can install it and try these first:
list_supported_coins— the 24 supported ticker symbols and names.archive_coverage— what the hourly archive holds (GET /archive): first reading, row counts and missing hours per symbol.price_quote(symbol)— makes one unpaid request and reads the 402 payment requirements: price, network, asset and thepayToaddress.
crypto_sentiment is the paid reading: $0.01 per call in USDC on Base,
paid from your own CDP wallet (setup below).
1. Install
pip install crypto-sentiment-x402-mcp
(uvx crypto-sentiment-x402-mcp works too, and needs no separate install
step.)
Don't install this into the same environment as the FastAPI service
(requirements.txt). mcp>=2 pulls in a much newer starlette than
FastAPI 0.115.0 tolerates (starlette<0.39.0,>=0.37.2) — mixing the two in
one venv breaks app/main.py at import time (Router.__init__() got an unexpected keyword argument 'on_startup'). If you're hacking on this repo
and want both, give the MCP package its own venv:
python3 -m venv .venv-mcp && source .venv-mcp/bin/activate
pip install -r requirements-mcp.txt cdp-sdk x402
2. Create a CDP API key and fund a wallet
- Free account + API key at https://portal.cdp.coinbase.com
- Pick a network:
testnet— free Base Sepolia USDC from https://docs.base.org/tools/network-faucets, good for trying this out with no real money.mainnet— real USDC on Base; the wallet needs actual USDC (plus a little ETH for gas) before calls will succeed.
- The wallet is created automatically the first time the server runs
(named by
CDP_WALLET_NAME, defaultcrypto-sentiment-mcp-wallet) — run it once locally and check the logs/tool output for the address it prints, then send that address USDC (+ ETH on mainnet) before relying on it inside an agent.
3. Register it with an MCP client
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"crypto-sentiment": {
"command": "crypto-sentiment-x402-mcp",
"env": {
"CDP_API_KEY_ID": "your-key-id",
"CDP_API_KEY_SECRET": "your-key-secret",
"CDP_WALLET_NAME": "crypto-sentiment-mcp-wallet",
"SENTIMENT_API_URL": "https://crypto-sentiment-x402.onrender.com",
"X402_NETWORK": "testnet"
}
}
}
}
(That assumes pip install crypto-sentiment-x402-mcp put the console script
on PATH for whatever Python Claude Desktop launches with. If you'd rather
not rely on PATH, point command at the interpreter and
args: ["-m", "crypto_sentiment_x402_mcp"], or, from a repo clone, at
mcp_server.py directly, same as before — both still work.)
Claude Code — same shape, either via claude mcp add or a project
.mcp.json with the same mcpServers block.
Any other MCP-compatible client works the same way: it just needs a command to launch the server with those env vars set.
4. Use it
Once registered, an agent can call the crypto_sentiment tool with a
symbol argument (e.g. BTC) like any other tool — the payment happens
transparently inside the call. If a call returns an error field, it's
almost always the wallet needing more funds; the response includes the
paying wallet's address to check.
Notes
SENTIMENT_API_URLdefaults to the hosted deployment; point it athttp://localhost:8000to test against a localuvicorn app.main:appinstead.- This is a separate process/wallet from
client.py(a one-off test script) — both pay the same API, just for different purposes.
License
MIT (see LICENSE-MCP) — this package only. The rest of this repository,
including the hosted API in app/, remains All Rights Reserved under the
root LICENSE.
Metadata
Release files for crypto-sentiment-x402-mcp 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crypto_sentiment_x402_mcp-0.1.2.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crypto_sentiment_x402_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.1 kB
Release files / crypto_sentiment_x402_mcp-0.1.2.tar.gz
| Download URL | crypto_sentiment_x402_mcp-0.1.2.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3f27bf3c41785c7a596aa160e62976dd852f266289fe3abc9fffe8629abca67
|
|
BLAKE2b-256 checksum How to use checksums |
7f0f60c5c3b0e6d5bcec569b8b96082ba93b2d5620edb6c7ff6dbeec278332b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / crypto_sentiment_x402_mcp-0.1.2-py3-none-any.whl
| Download URL | crypto_sentiment_x402_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d5533afe7d3d56f1b21e639b72b506824d0fd028ce832485179ee6a9b942911
|
|
BLAKE2b-256 checksum How to use checksums |
24bee11afa2a114ec58bba85e9cc970a61f34360b9264e84393f26fddcaa529e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|