Show HN: Naja-scope – Let AI agents explore SystemVerilog netlists over MCP Naja-scope, an MCP server built on the najaeda netlist engine, lets AI agents explore SystemVerilog netlists without pasting source code. In a head-to-head test on the CVA6 RISC-V core, it achieved 17/17 correct answers with 182k input tokens versus 10/17 and 888k tokens for grep-based file reading, demonstrating a 5× reduction in token usage. Let your AI assistant explore SystemVerilog designs — without pasting source code into the chat. naja-scope is an MCP https://modelcontextprotocol.io server that gives AI agents Claude, and any MCP-compatible assistant a precise, structured view of your elaborated SystemVerilog design. Instead of dumping thousands of lines of RTL into the model's context, the agent asks targeted questions — what drives this signal? what's inside this module? where does this net come from? — and gets back small, exact answers with file-and-line references. Built on the najaeda https://github.com/najaeda/naja netlist engine. Large designs don't fit in a chat window. Pasting RTL is slow, expensive, and the model still can't reliably trace connectivity across hierarchy. naja-scope turns your design into something an agent can navigate : - 🔎 Trace connectivity — find what drives or loads any signal, across module boundaries. - 🌲 Walk the hierarchy — explore modules, instances, and ports on demand. - 🎯 Jump to source — every answer comes with file:line ranges, so the agent can quote the exact RTL that matters. - 🧩 Logic cones — trace fan-in / fan-out combinational cones up to the register boundary. - 💡 Recover design intent — enum state names, struct/union fields, and parameter formulas that normally vanish when a design is elaborated. Works on RTL and gate-level netlists alike: load elaborated SystemVerilog, or load a post-synthesis structural Verilog netlist together with its Liberty standard-cell library and navigate the gates the same way see Gate-level designs gate-level-designs . All responses are token-bounded: lists paginate, large results truncate with clear markers. Your context stays small; your answers stay accurate. We ran a head-to-head on CVA6 https://github.com/openhwgroup/cva6 a production RISC-V core : the same 17 design questions, answered by Claude once with only naja-scope and once with only grep/file reading over the source tree. | Approach | Correct answers | Conversation turns | Input tokens | |---|---|---|---| naja-scope | 17 / 17 | 77 | 182 k | | grep + read source | 10 / 17 | 123 | 888 k | More correct answers, fewer back-and-forth turns, and ~5× fewer tokens — the agent stops scrolling through files and goes straight to the structural answer. pip install naja-scope pulls najaeda and the MCP runtime from PyPI naja-scope-mcp stdio MCP server claude mcp add naja-scope -- naja-scope-mcp Or add it to any MCP client's config: { "mcpServers": { "naja-scope": { "command": "naja-scope-mcp" } } } Then just ask your assistant to load a design and start exploring: "Load my UART design from rtl/uart.sv with top uart top , then show me everything that drives tx o ." The agent loads the design once and answers follow-up questions instantly — no re-reading source, no giant pastes. ChatGPT connects to MCP servers over an HTTP endpoint custom connectors / Developer mode , so run naja-scope as an HTTP server instead of stdio: naja-scope-mcp --transport streamable-http --host 127.0.0.1 --port 8000 This serves MCP at http://