The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Novai MCP Server listing page.
A read-only Model Context Protocol (MCP) server that lets any MCP-equipped agent query the live NOVAI chain over its public JSON-RPC endpoint. It exposes query tools only. There is no write, sign, submit, or key-handling path anywhere in this package.
NOVAI is an AI-native layer 1 with chained-BFT consensus. This server is a thin, typed bridge: an agent discovers the tools through standard MCP tooling and reads the chain without writing any SDK code.
This is version 0 and it is read-only by design.
Run it directly with npx:
Or install it and run the binary:
The server speaks MCP over stdio. Point your MCP client at the command above.
NOVAI_RPC_URL overrides the JSON-RPC endpoint. It defaults to the public NOVAI URL, https://rpc.novai.network. No other configuration, no secrets, and no auth are required, because the public endpoint is open and read-only.All hashes and ids are 64 hex characters (32 bytes, no 0x prefix). All heights are non-negative integers. Every input is validated before any network call, and both chain errors and transport failures are returned as clean tool errors with no stack traces.
| Tool | Returns | Required params | Optional params |
|---|---|---|---|
novai_get_chain_status | The latest committed block, so you can verify the chain is live and learn the tip height | none | none |
novai_get_block | A single block | exactly one of height or hash | none |
novai_get_transaction | A confirmed transaction, or null if unknown | txid | none |
novai_get_ai_entity | An AI entity (agent) record, or null if unknown | entity_id | none |
novai_get_balance | Balance (decimal string) and nonce for an address | address | none |
novai_get_signals_by_height | Signal commitments recorded at a height | height | none |
novai_get_signals_by_issuer | Signals issued by an entity within a height range | issuer, start_height, end_height | none |
novai_get_signals_by_type | Signals of a type within a height range | signal_type, start_height, end_height | none |
novai_get_oracle_anchor | An oracle anchor by signal hash, or null if unknown | signal_hash | none |
novai_get_oracle_anchors_by_entity | Oracle anchors by issuer within a height range | entity_id, start_height, end_height | ts_min, ts_max |
novai_get_oracle_anchors_by_tag | Oracle anchors by data tag within a height range | data_tag, start_height, end_height | ts_min, ts_max |
novai_get_memory_objects | On-chain memory objects owned by an entity | entity_id | none |
The endpoint retains a bounded recent window of blocks by height, so a height far below the current tip can return null even though it was a valid block. Lookups by hash work for any block the node still indexes. Call novai_get_chain_status first to learn the current tip height.
npm test runs the offline unit and validation tests. To exercise the live endpoint:
An end-to-end stdio check that spawns the built server and drives it with a real MCP client is available:
MIT. See the LICENSE file.