{"_id":"@0x50b/mcp-yahoofinance2","_rev":"3-eca6ba37f2bbdb76b656dc6e5a1b626c","name":"@0x50b/mcp-yahoofinance2","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@0x50b/mcp-yahoofinance2","version":"0.1.0","keywords":["mcp","model-context-protocol","claude","anthropic","yahoo-finance","stocks","quotes","finance"],"author":{"name":"0x50b","email":"0x50b@proton.me"},"license":"MIT","_id":"@0x50b/mcp-yahoofinance2@0.1.0","maintainers":[{"name":"0x50b","email":"ryowa@boom.haus"}],"homepage":"https://github.com/designoor/mcp-yahoofinance2#readme","bugs":{"url":"https://github.com/designoor/mcp-yahoofinance2/issues"},"bin":{"mcp-yahoofinance2":"dist/index.js"},"dist":{"shasum":"3ed6c21dd536d62c1f6b8c88b45ebf0e94be8c8e","tarball":"https://registry.npmjs.org/@0x50b/mcp-yahoofinance2/-/mcp-yahoofinance2-0.1.0.tgz","fileCount":21,"integrity":"sha512-XjF0bF7nz6GDks30Z1Si7fvf1uioaYWIegBt7f72mVJGjzgAA5Ggrg0lMHMpAULi67dNBAuqepJM3NdXdC4pTQ==","signatures":[{"sig":"MEUCIQCGQhiyQdh/Kqqtsw7+690R8kzxFA+3wuSPEZiJMWd38AIgARQRoUI3RJ036YG3DkNTPIMJI254qw6aLOiDtEh0jnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38402},"type":"module","_from":"file:0x50b-mcp-yahoofinance2-0.1.0.tgz","engines":{"node":">=20"},"scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"0x50b","email":"ryowa@boom.haus"},"_resolved":"/private/var/folders/5h/18f8dgm14y31rrtxn2t93m_w0000gn/T/cf7c03b37a3aef56b2dee81d8de3b9d5/0x50b-mcp-yahoofinance2-0.1.0.tgz","_integrity":"sha512-XjF0bF7nz6GDks30Z1Si7fvf1uioaYWIegBt7f72mVJGjzgAA5Ggrg0lMHMpAULi67dNBAuqepJM3NdXdC4pTQ==","repository":{"url":"git+https://github.com/designoor/mcp-yahoofinance2.git","type":"git"},"_npmVersion":"11.2.0","description":"MCP server exposing Yahoo Finance quotes, multi-window price changes, and symbol search via the yahoo-finance2 library.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"zod":"^3.23.0","yahoo-finance2":"^3.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-yahoofinance2_0.1.0_1777047540699_0.2022297668870685","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0x50b/mcp-yahoofinance2","version":"0.1.1","keywords":["mcp","model-context-protocol","claude","anthropic","yahoo-finance","stocks","quotes","finance"],"author":{"name":"0x50b","email":"0x50b@proton.me"},"license":"MIT","_id":"@0x50b/mcp-yahoofinance2@0.1.1","maintainers":[{"name":"0x50b","email":"ryowa@boom.haus"}],"homepage":"https://github.com/designoor/mcp-yahoofinance2#readme","bugs":{"url":"https://github.com/designoor/mcp-yahoofinance2/issues"},"bin":{"mcp-yahoofinance2":"dist/index.js"},"dist":{"shasum":"a954731e932877a10315c86e46a5e4193fc7f932","tarball":"https://registry.npmjs.org/@0x50b/mcp-yahoofinance2/-/mcp-yahoofinance2-0.1.1.tgz","fileCount":21,"integrity":"sha512-80nyvv/Ab70/CcABZq5jwIXxzjOiCZfTXig/usGH3Lok1U5QajGPVMbQXafLEB1W2Ge3sUxzC7XDRuQh2f0v6A==","signatures":[{"sig":"MEUCIFi1IzEMXGpUuDcXbGqTwuCewITPLpA/SY4YkkTJa0tvAiEAv04Y9WNlpRru0sC/EDuZRYPRLvzIB0kyUheKS8fdUbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39082},"type":"module","_from":"file:0x50b-mcp-yahoofinance2-0.1.1.tgz","engines":{"node":">=20"},"scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"0x50b","email":"ryowa@boom.haus"},"_resolved":"/private/var/folders/5h/18f8dgm14y31rrtxn2t93m_w0000gn/T/24c4e014b8ff9b5a16ec410fe21b9308/0x50b-mcp-yahoofinance2-0.1.1.tgz","_integrity":"sha512-80nyvv/Ab70/CcABZq5jwIXxzjOiCZfTXig/usGH3Lok1U5QajGPVMbQXafLEB1W2Ge3sUxzC7XDRuQh2f0v6A==","repository":{"url":"git+https://github.com/designoor/mcp-yahoofinance2.git","type":"git"},"_npmVersion":"11.2.0","description":"MCP server exposing Yahoo Finance quotes, multi-window price changes, and symbol search via the yahoo-finance2 library.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"zod":"^3.23.0","yahoo-finance2":"^3.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vitest":"^2.1.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-yahoofinance2_0.1.1_1777101940892_0.49527868902936234","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@0x50b/mcp-yahoofinance2","version":"0.2.0","description":"MCP server exposing Yahoo Finance quotes, multi-window price changes, and symbol search via the yahoo-finance2 library.","license":"MIT","author":{"name":"0x50b","email":"0x50b@proton.me"},"repository":{"type":"git","url":"git+https://github.com/designoor/mcp-yahoofinance2.git"},"homepage":"https://github.com/designoor/mcp-yahoofinance2#readme","bugs":{"url":"https://github.com/designoor/mcp-yahoofinance2/issues"},"keywords":["mcp","model-context-protocol","claude","anthropic","yahoo-finance","stocks","quotes","finance"],"type":"module","bin":{"mcp-yahoofinance2":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","test":"vitest run","test:watch":"vitest","prepublishOnly":"pnpm test && pnpm build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","yahoo-finance2":"^3.14.0","zod":"^3.23.0"},"devDependencies":{"@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.5.0","vitest":"^2.1.0"},"engines":{"node":">=20"},"packageManager":"pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316","_id":"@0x50b/mcp-yahoofinance2@0.2.0","gitHead":"f450c839bd7be6c01e4540005efd1b999bdb2a8c","_nodeVersion":"22.11.0","_npmVersion":"11.2.0","dist":{"integrity":"sha512-brkrx1fAOJfXZtuugzdGHcHa+Mamf0e9lSz5ojeP4zvWJx6NgqKewyJ2a2MpO/K1FUEi3/uraoz6wBgq1dP7Ow==","shasum":"652787e620b07bd5c0d7d8aa933c78bc77775b91","tarball":"https://registry.npmjs.org/@0x50b/mcp-yahoofinance2/-/mcp-yahoofinance2-0.2.0.tgz","fileCount":23,"unpackedSize":55080,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDay3YB18dL4oHgk7ycWMKCR451vHI2lQGvuc6Q/pF7FgIgDyIvT236ELPCjDtmglFxm5e4/rHsQEugCBQoOKKBPN8="}]},"_npmUser":{"name":"0x50b","email":"ryowa@boom.haus"},"directories":{},"maintainers":[{"name":"0x50b","email":"ryowa@boom.haus"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-yahoofinance2_0.2.0_1778148518605_0.2869949439767412"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-24T16:19:00.631Z","modified":"2026-05-07T10:08:38.843Z","0.1.0":"2026-04-24T16:19:00.850Z","0.1.1":"2026-04-25T07:25:41.029Z","0.2.0":"2026-05-07T10:08:38.741Z"},"bugs":{"url":"https://github.com/designoor/mcp-yahoofinance2/issues"},"author":{"name":"0x50b","email":"0x50b@proton.me"},"license":"MIT","homepage":"https://github.com/designoor/mcp-yahoofinance2#readme","keywords":["mcp","model-context-protocol","claude","anthropic","yahoo-finance","stocks","quotes","finance"],"repository":{"type":"git","url":"git+https://github.com/designoor/mcp-yahoofinance2.git"},"description":"MCP server exposing Yahoo Finance quotes, multi-window price changes, and symbol search via the yahoo-finance2 library.","maintainers":[{"name":"0x50b","email":"ryowa@boom.haus"}],"readme":"# mcp-yahoofinance2\n\nA local [MCP](https://modelcontextprotocol.io) server for **stock, ETF, crypto, index, and FX** prices and multi-window price changes. Wraps [yahoo-finance2](https://www.npmjs.com/package/yahoo-finance2). No API key required.\n\n```\n░█░█░█░█░█▀▀░█▀█░█▀▄░▀█▀░░░█▀█░█░░░█░█░█▀▀░▀█▀░█▀█░█▀▀\n░█▀▄░█░█░▀▀█░█▀█░█▀▄░░█░░░░█▀▀░█░░░█░█░█░█░░█░░█░█░▀▀█\n░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░░░▀░░░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀\n```\nBuild with [create-mcp@kusari-plugin](https://github.com/kusarixyz/kusari-plugins) skill.\n\n## Requirements\n\n- Node.js 22+\n- No API key required\n\n## Install\n\nThe package is on [npm](https://www.npmjs.com/package/@0x50b/mcp-yahoofinance2) but you don't have to install it. Using npx is perfectly fine.\n\n| Client | Config file |\n|---|---|\n| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |\n| Claude Desktop (Windows) | `%APPDATA%\\Claude\\claude_desktop_config.json` |\n| Claude Code | project-local `.mcp.json` (also set `enableAllProjectMcpServers: true` in `.claude/settings.local.json`) |\n\n```json\n{\n  \"mcpServers\": {\n    \"yahoofinance\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@0x50b/mcp-yahoofinance2\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop fully (⌘Q on macOS, not just close the window).\n\n### Run from a local clone\n\nIf you'd rather run your own checkout (e.g. for a forked version, an unpublished change), build the server first:\n\n```sh\ngit clone https://github.com/designoor/mcp-yahoofinance2.git\ncd mcp-yahoofinance2\npnpm install\npnpm build\n```\n\nThen point your client config at the built `dist/index.js` using an **absolute path**:\n\n```json\n{\n  \"mcpServers\": {\n    \"yahoofinance\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp-yahoofinance2/dist/index.js\"]\n    }\n  }\n}\n```\n\nRe-run `pnpm build` after any source change, then restart the client.\n\n## Tools\n\n| Tool | Purpose | When to use |\n|---|---|---|\n| [`search_symbols`](#search_symbols) | Name → ticker lookup | User gives a company name instead of a symbol |\n| [`get_quotes`](#get_quotes) | Snapshot: price + 1d change | Only the latest price is needed |\n| [`get_price_changes`](#get_price_changes) | Snapshot + multi-window change | Need performance over time (1w, 1mo, 1y, etc.) |\n| [`get_historical_quotes`](#get_historical_quotes) | Raw OHLCV time series | Charting, single-date lookup, custom analysis |\n\n---\n\n### `search_symbols`\n\nResolve a company name or keyword to matching tickers (e.g. `Apple` → `AAPL`).\n\n| Input | Type | Required | Description |\n|---|---|---|---|\n| `query` | string | ✓ | Company name, ticker fragment, or keyword |\n| `limit` | int 1–20 |  | Max results (default 10) |\n\nReturns an array of `{ symbol, name, exchange, type }`. Cached 10 min.\n\n---\n\n### `get_quotes`\n\nCurrent price and 1-day change for up to 100 tickers in a **single batched request**.\n\n| Input | Type | Required | Description |\n|---|---|---|---|\n| `symbols` | string[], 1–100 | ✓ | Yahoo tickers, e.g. `AAPL`, `BTC-USD`, `^GSPC`, `EURUSD=X` |\n\nReturns `{ found, missing }`:\n\n| Field | Type | Notes |\n|---|---|---|\n| `found[]` | object[] | Resolved symbols — see below |\n| `missing[]` | string[] | Symbols Yahoo silently dropped |\n\nPer-symbol shape:\n\n| Field | Type | Description |\n|---|---|---|\n| `symbol`, `name`, `currency` | string | Identity |\n| `price` | number | Latest regular-market price |\n| `change1d`, `changePct1d` | number | Change vs. previous close |\n| `previousClose` | number | Previous session's close |\n| `marketState` | string | `REGULAR` \\| `CLOSED` \\| `PRE` \\| `POST` … |\n| `preMarketPrice`, `postMarketPrice` | number? | Present only during extended hours |\n\nPer-symbol quote cached 15 s.\n\n---\n\n### `get_price_changes`\n\nCurrent price plus change over any combination of windows. Heavier than `get_quotes` — one batched `quote()` plus one `chart()` per symbol, then windows are computed client-side from a single ~1-year daily-history response.\n\n| Input | Type | Required | Description |\n|---|---|---|---|\n| `symbols` | string[], 1–50 | ✓ | Yahoo tickers |\n| `windows` | enum[] |  | Subset of the windows below; default: all |\n\nSupported windows:\n\n| Key | Source | Notes |\n|---|---|---|\n| `1d` | Live quote `previousClose` | Always accurate to the latest tick |\n| `1w`, `1mo`, `3mo`, `6mo`, `1y` | Chart close at/before cutoff | Weekends/holidays padded automatically |\n| `ytd` | Chart close on first trading day of calendar year | |\n\nReturns `{ found, missing, windows }`. Per-symbol window entry:\n\n| Field | Type | Notes |\n|---|---|---|\n| `changeAbs` | number | Current price − past price |\n| `changePct` | number | Percent change |\n| `fromPrice` | number | The past price used as the baseline |\n| `fromDate` | string (ISO date) | The trading day the baseline came from |\n\n`null` windows indicate the symbol's history didn't reach that cutoff (newly listed). Per-symbol chart history cached 5 min.\n\n---\n\n### `get_historical_quotes`\n\nRaw OHLCV time series across a date range. One `chart()` request per symbol, parallelized.\n\n| Input | Type | Required | Description |\n|---|---|---|---|\n| `symbols` | string[], 1–50 | ✓ | Yahoo tickers |\n| `from` | string (ISO `YYYY-MM-DD`) | ✓ | Start date, inclusive |\n| `to` | string (ISO `YYYY-MM-DD`) |  | End date, inclusive. Default: today |\n| `interval` | `1d` \\| `1wk` \\| `1mo` |  | Bar granularity. Default: `1d` |\n\nReturns `{ found, missing, from, to, interval }`. Per-symbol shape:\n\n| Field | Type | Description |\n|---|---|---|\n| `symbol`, `name`, `currency` | string | Identity |\n| `interval` | string | Echo of the requested interval |\n| `quotes[]` | object[] | OHLCV rows — see below |\n| `note` | string? | Present only when `quotes` is empty (e.g. `\"Non-trading day (weekend). Last available trading day: 2026-03-13.\"`) |\n| `lastAvailable` | object? | Present only when `quotes` is empty — the most recent trading row before `from` (same shape as a `quotes[]` row) |\n\nPer-row shape:\n\n| Field | Type | Notes |\n|---|---|---|\n| `date` | string (ISO date) | Trading day |\n| `open`, `high`, `low`, `close` | number? | Raw prices |\n| `adjClose` | number? | Close adjusted for splits and dividends |\n| `volume` | number? | Shares traded |\n\nSingle-date queries (`from === to`) return one row, or an empty `quotes` with a `note` and `lastAvailable` (the most recent prior trading row, e.g. Friday's close for a Sunday request) if the date is a weekend / market holiday / before listing. The fetch always extends 14 days before `from` to surface that fallback. Per `(symbol, from, to, interval)` cached 30 min.\n\n## Performance & batching\n\n| Endpoint | Batched? | Behaviour |\n|---|---|---|\n| Yahoo `quote()` | ✓ up to 100 symbols/request | One HTTP call regardless of symbol count |\n| Yahoo `chart()` | ✗ single symbol | Parallelized via `yahoo-finance2`'s queue (concurrency 4) |\n\nAll caches are in-memory for the server-process lifetime.\n\n## Local development\n\n```sh\ngit clone https://github.com/designoor/mcp-yahoofinance2.git\ncd mcp-yahoofinance2\npnpm install\n```\n\n| Command | What |\n|---|---|\n| `pnpm dev` | Run the server over stdio via tsx — no build step |\n| `pnpm test` | `vitest run` |\n| `pnpm build` | Compile to `dist/` |\n| `node dist/index.js` | Manual stdio run against the built output |\n\nTo test changes in Claude Desktop, point the config's `command` at `node` and `args` at your absolute `dist/index.js` instead of `npx`.\n","readmeFilename":"README.md"}