# ByteAsk Embedded MCP
**Page-cited answers from embedded & firmware reference docs — for coding agents that can't afford to guess a register value.**
[](https://smithery.ai/servers/kulkarnianirudha8/byteaskai)
[](LICENSE)
[](pyproject.toml)
[](https://modelcontextprotocol.io)
[](#)
[](#contributing)
[](https://docs.byteask.ai/embedded)
Official MCP Registry Namespace: `ai.byteask/embedded-docs` · Remote MCP Endpoint: `https://mcp.byteask.ai/mcp`
[Quickstart](#quickstart) · [Tools](#tools) · [Connect a client](#connect-a-client) · [Configuration](#configuration) · [Hosted server](#hosted-server) · [Contributing](#contributing)
---
ByteAsk Embedded MCP is the open-source server behind [ByteAsk Embedded Docs](https://docs.byteask.ai/embedded):
a **source-grounded, page-cited evidence-retrieval** MCP server for coding agents
(Claude Code, Codex, Cursor) that write firmware / driver / protocol code and need
*exact* facts — SunSpec points, register offsets, Modbus function codes, trip
thresholds, SCPI commands, API symbols.
It returns **verbatim snippets with page citations** — never an authored answer — and
when nothing is relevant enough it says **no match** rather than fabricate. Every
document is treated equally: no authority layer, no filters.
> [!NOTE]
> **What's in this repo:** the MCP *server* — tools, transports (stdio + Streamable
> HTTP), bearer auth, DNS-rebinding protection, result rendering — plus a small,
> pluggable retrieval interface.
>
> **What's _not_ in this repo:** the retrieval engine and the document corpus. How
> documents are parsed, chunked, embedded, and ranked, and the licensed source
> material itself, sit behind the [`SearchBackend`](src/byteask_embedded_mcp/backend.py)
> seam and power the hosted endpoint at `https://mcp.byteask.ai/mcp`. This repo ships
> an in-memory [`SampleBackend`](src/byteask_embedded_mcp/backend.py) (a few
> illustrative, public-knowledge records) so the server runs out of the box.
## Why
- **Cited, or nothing.** Every hit is verbatim source text with a section + page
citation. On a miss it returns an honest "no confident match" — it never invents a
register value.
- **Built for coding agents.** The tool descriptions and triggers are tuned so agents
call `search_docs` reflexively the moment they see a hex literal, a Modbus code, an
IEEE clause, a SCPI verb, or an MCU part number — before answering from memory.
- **Two transports, one server.** `stdio` for local agents, Streamable HTTP for hosted.
- **Bring your own retrieval.** The search engine is a two-method interface — swap in
anything behind `BYTEASK_BACKEND` without touching the server.
- **Zero-setup demo.** The bundled `SampleBackend` runs immediately. No API keys.
## Quickstart
Requires Python ≥ 3.10 and [`uv`](https://docs.astral.sh/uv/).
```bash
uv sync
uv run byteask-embedded-mcp # run as an MCP server (stdio)
```
That's it — the bundled `SampleBackend` serves a couple of illustrative records, so
`search_docs` works immediately. Run the offline tests with `uv run pytest`.
## Connect a client
### Hosted (no install)
The hosted server speaks **Streamable HTTP** at `https://mcp.byteask.ai/mcp` and is
backed by the full licensed corpus.
[](https://cursor.com/install-mcp?name=byteask-embedded-docs&config=eyJ1cmwiOiJodHRwczovL21jcC5ieXRlYXNrLmFpL21jcCJ9)
**Claude Code:**
```bash
claude mcp add --transport http byteask-embedded-docs https://mcp.byteask.ai/mcp
```