# praesentire-mcp MCP server for [Praesentire](https://praesentire.com) — **bilingual financial news sentiment as a Claude tool**. ## What Claude gets Three tools, one API: | Tool | What it does | |---|---| | **`get_sentiment`** | Aggregated -1 to +1 sentiment score + confidence + bull/bear distribution + latest 3 articles with rationale, for one ticker. | | **`get_sentiment_batch`** | Same aggregates for up to 50 tickers in one call. Each ticker bills as one request. | | **`compare_languages`** | English vs Traditional Chinese sentiment side-by-side + divergence score. Designed for cross-market arbitrage signals. | Sources: Reuters, Bloomberg, Yahoo Finance, CNBC (English) + 經濟日報, 工商時報, Anue 鉅亨 (繁中). Updated every 10 minutes. ## Install You need a Praesentire API key. [Sign up free](https://praesentire.com/signup) — 100 req/day forever, no credit card. ### Claude Code Add to `.mcp.json` in your project root: ```json { "mcpServers": { "praesentire": { "command": "npx", "args": ["-y", "praesentire-mcp"], "env": { "PRAESENTIRE_API_KEY": "pr_your_key_here" } } } } ``` Then `claude` and ask: *"What's the sentiment on NVDA?"* ### Claude Desktop / Cowork Edit your Claude Desktop config (`%APPDATA%\Claude\claude_desktop_config.json` on Windows, `~/Library/Application Support/Claude/claude_desktop_config.json` on Mac): ```json { "mcpServers": { "praesentire": { "command": "npx", "args": ["-y", "praesentire-mcp"], "env": { "PRAESENTIRE_API_KEY": "pr_your_key_here" } } } } ``` Restart Claude Desktop. The three tools will appear in the connectors list. ### Local test ```bash PRAESENTIRE_API_KEY=pr_your_key npx praesentire-mcp # Server starts on stdio. Press Ctrl+C to stop. ``` ## Example prompts Once installed, Claude can answer things like: > **"What's the news sentiment on NVDA right now?"** > → Calls `get_sentiment("NVDA")`, returns aggregated score + the 3 articles driving it. > **"Compare English vs Chinese sentiment on TSMC — is there divergence?"** > → Calls `compare_languages("TSM")`, returns side-by-side plus divergence score. If `|divergence| > 0.3`, that's a notable cross-market signal. > **"Sentiment on my watchlist: NVDA, AMD, AVGO, TSM, ASML, INTC, MU."** > → Calls `get_sentiment_batch(["NVDA","AMD",...])`, returns all at once. > **"Why is NVDA down today? Pull sentiment + latest articles."** > → Calls `get_sentiment("NVDA")` and Claude summarises the rationales. ## Pricing Praesentire's pricing (the API behind this MCP): | Tier | Requests / day | Price | |---|---|---| | Free | 100 | $0 forever | | Hobby | 1,000 | $19 / mo | | Pro | 10,000 | $99 / mo | | Business | 100,000 | $499 / mo | Each tool call = 1 request. `get_sentiment_batch` with N tickers = N requests. ## Configuration Env vars: | Var | Default | Description | |---|---|---| | `PRAESENTIRE_API_KEY` | (required) | Your API key (`pr_...`). Get one at https://praesentire.com/dashboard. | | `PRAESENTIRE_BASE_URL` | `https://praesentire.com/api/v1` | Override if self-hosting / testing against staging. | ## Error handling The MCP server maps Praesentire's HTTP errors to LLM-friendly messages: - **401** → "API key invalid or revoked. Create a new one at praesentire.com/dashboard." - **429** → "Daily limit reached for tier X. Upgrade at praesentire.com/pricing or wait for reset." - **400** → Specific validation error (invalid ticker, bad params). - **5xx** → "Praesentire API error N. Try again." ## Links - 🏠 [praesentire.com](https://praesentire.com) - 📖 [API docs](https://praesentire.com/docs) - 🔑 [Dashboard](https://praesentire.com/dashboard) - 🐛 [Issues](https://github.com/Etha0916/praesentire-mcp/issues) ## License MIT