{
  "markdown": "# oracle-feeds-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server for on-chain price oracle data, covering **two independent providers** — Chainlink and Pyth Network — instead of one.\n\n## Why this exists\n\nThe only prior MCP server in this space, [`kukapay/chainlink-feeds-mcp`](https://github.com/kukapay/chainlink-feeds-mcp), is Chainlink-only, hard-requires an Infura API key, has a `queryPriceByRound` tool that's a placeholder (it silently calls `latestRoundData()` again regardless of the round you asked for), and ships with no tests. This project covers the same ground plus more, and fixes those specific gaps:\n\n| | `chainlink-feeds-mcp` | `oracle-feeds-mcp` |\n|---|---|---|\n| Providers | Chainlink only | Chainlink **and** Pyth |\n| RPC | Requires your own Infura key | Free public RPCs by default, no key needed |\n| Historical round lookup | Placeholder — re-fetches latest round | Real `getRoundData(roundId)` call |\n| Staleness | Not surfaced | Every result flags `stale: true/false` based on the feed's own on-chain/publish timestamp |\n| Feed discovery | Static list only | Static Chainlink registry **plus** live search over Pyth's full catalog (`searchPythFeeds`) |\n| Tests | None | 21 tests covering staleness math, feed lookup, and both providers (network calls mocked) |\n\nThis is a **data-access** tool: it returns oracle-reported prices as-is, with a timestamp and an age-based staleness flag. It does not attempt to verify, reconcile, or arbitrate between providers — if you need a \"which source is more trustworthy\" judgment, that's a different, harder problem this project deliberately does not take on.\n\n**Downstream use note:** oracle price data is commonly consumed by autonomous on-chain trading or rebalancing agents. This server is read-only and moves no funds itself, but if you wire its output into an agent that executes trades, you are responsible for whatever risk controls that agent needs — this tool has no opinion on trade sizing, slippage, or execution safety.\n\n## Tools\n\n- `getChainlinkPrice({ chain, pair })` — latest Chainlink price, with staleness flag.\n- `getChainlinkRoundPrice({ chain, pair, roundId })` — a specific historical Chainlink round.\n- `listChainlinkFeeds()` — every chain + pair in the curated Chainlink registry.\n- `listSupportedChains()` — just the chain list.\n- `getPythPrice({ symbol })` — latest Pyth price, by symbol (`SOL/USD`) or raw feed ID.\n- `getPythHistoricalPrice({ symbol, unixTimestamp })` — Pyth price as of a given time.\n- `searchPythFeeds({ query })` — search Pyth's live catalog (hundreds of feeds, not hardcoded).\n\nEvery price result includes `updatedAt`, `ageSeconds`, and `stale` (age beyond a 1-hour default threshold).\n\n## Coverage\n\nChainlink feeds are a **curated** registry (not an exhaustive mirror) across 5 EVM chains — Ethereum, Base, Arbitrum, Polygon, Optimism — with major pairs (BTC, ETH, USDC, USDT, DAI, LINK, SOL, and a few chain-native assets) on each. See [`src/feeds/chainlink.ts`](src/feeds/chainlink.ts); it's a plain data file, easy to extend with more chains or pairs.\n\nPyth coverage is effectively everything in [Pyth's live catalog](https://www.pyth.network/price-feeds) — `searchPythFeeds` and `getPythPrice` query Hermes directly rather than vendoring a static list, so new Pyth feeds show up automatically.\n\n## Install & run\n\n```bash\nnpm install\nnpm run build\nnpm start\n```\n\nRuns as a standard stdio MCP server — point any MCP client at `node dist/index.js`.\n\nNo API keys or environment variables are required. Chainlink reads use free public RPC endpoints (`*.publicnode.com`); Pyth reads use its public Hermes REST API.\n\n## Development\n\n```bash\nnpm test        # 21 tests, network calls mocked\nnpm run typecheck\n```\n\n## Disclosure\n\nThis repository is built and maintained by an AI agent (`rileybuilds`), operating with human oversight. See the account bio.\n\n## License\n\nMIT\n",
  "bytes": 3884,
  "sha": "76381bdb2bc73032c7d4d249686651745bb70a16bfaab60ba6bc1091da82a9e9",
  "repo_slug": "rileybuilds/oracle-feeds-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_rileybuilds_oracle_feeds_mcp_41a00a44/readme"
}