Sandbox
@tikoci/rosetta

MCP server for RouterOS docs and commands

Rosetta connects agent clients to MikroTik RouterOS reference data through MCP. It serves search, page lookup, command explanations, hardware lookup, changelogs, and version checks from a SQLite database built from MikroTik sources. It also includes a terminal browser for people who want to search the same data without an agent.

44 stars3 forksTypeScriptUpdated 10d ago
Who it's for

Builders who want their agent to answer RouterOS questions from live MikroTik docs, commands, and hardware data.

What it delivers

You can ask an agent RouterOS questions and get grounded answers from a searchable local knowledge base instead of re-explaining the product.

What it does

Unified RouterOS search

`routeros_search` finds pages, callouts, videos, properties, changelogs, devices, and skills from one query.

Command and property lookup

`routeros_explain_command`, `routeros_command_tree`, and `routeros_lookup_property` turn RouterOS syntax into readable references.

Hardware and benchmark lookup

`routeros_device_lookup` and `routeros_search_tests` surface product specs and performance results.

Changelog and version tools

`routeros_search_changelogs`, `routeros_command_version_check`, `routeros_command_diff`, and `routeros_current_versions` help track behavior across releases.

Terminal browser

`bunx @tikoci/rosetta browse` opens a keyboard-driven search interface over the same database.

SQLite-as-RAG retrieval

The server uses SQLite FTS5 with BM25 ranking and stemming instead of embeddings or an external vector store.

How to get it

  1. 1Run
    bunx @tikoci/rosetta --setup
  2. 2Need to force a database reload later? Use
    bunx @tikoci/rosetta@latest --refresh
  3. 3New corpus builds sometimes ship first under a non-default npm dist-tag so testers can…
    bunx @tikoci/rosetta@next     # newest prerelease of any stage (alpha/beta/rc)
    bunx @tikoci/rosetta@alpha    # pinned to the alpha stage's latest
    bunx @tikoci/rosetta@beta     # pinned to the beta stage's latest
    bunx @tikoci/rosetta@rc       # pinned to the rc stage's latest
  4. 4Run
    claude mcp add rosetta -- bunx @tikoci/rosetta
  5. 5Run
    codex mcp add rosetta -- bunx @tikoci/rosetta
  6. 6Install Bun (if you don't have it)
    # macOS / Linux
    curl -fsSL https://bun.sh/install | bash
    
    # Windows
    powershell -c "irm bun.sh/install.ps1 | iex"

README

rosetta

MCP server that gives AI assistants searchable access to MikroTik RouterOS documentation — 363 pages extracted live from MikroTik's official Docusaurus manual (https://manual.mikrotik.com), 4,587 properties, a 40,000-entry command tree, hardware specs for 156 current products (part of a wider 255-device overlay also covering legacy/EOL gear and accessories), 722 YouTube video transcripts, and direct links to source docs.

If you need MikroTik docs, you likely have a MikroTik. Install rosetta once as a container on your router using RouterOS /app, and any AI assistant on the network can use it. Or run it locally on your workstation. No AI required — rosetta includes a terminal browser for searching the database directly.

SQL-as-RAG

Instead of vector embeddings, rosetta uses SQLite FTS5 full-text search as the retrieval layer — SQL-as-RAG. For structured technical docs, BM25 ranking with porter stemming beats vector similarity: terms like dhcp-snooping and /ip/firewall/filter are exact tokens, not fuzzy embeddings. No API keys, no vector database — just a single SQLite file that searches in milliseconds.

What's Inside

Data SourceCoverage
Documentation pages363 pages (~653K words) from MikroTik's live Docusaurus manual
Property definitions4,587 with types, defaults, descriptions
Command tree5,114 commands, 551 dirs, 34K arguments
Version history46 RouterOS versions tracked (7.9–7.23beta2)
Hardware products156 current matrix devices — specs, pricing, block diagrams
Hardware overlay255 devices (matrix + legacy/EOL + accessories), resolved via ~750 curated alias mappings for cross-source device lookup
Performance benchmarks2,874 tests across 125 devices (ethernet + IPSec)
YouTube transcripts722 videos, ~2,316 transcript segments
Callout blocks943 warnings, notes, and tips

Documentation covers RouterOS v7 only, tracking the current long-term release (~7.22). Prose is extracted live from https://manual.mikrotik.com on each release build — no more stale export to keep in sync. The site's Docusaurus CLI Reference (/console/inspect-derived command menus) isn't ingested yet; the command tree instead comes directly from inspect.json (see DESIGN.md).


Install on MikroTik (/app)

RouterOS 7.22+ includes the /app feature for running containers directly on the router. This is the simplest way to deploy rosetta — install once, and any AI assistant on your network can connect to the MCP endpoint URL shown in the router UI.

Requirements: RouterOS 7.22+, x86 or ARM64 architecture (CCR, RB5009, hAP ax series, CHR, etc.), container package installed, device-mode enabled.

1. Enable containers (two reboots required)

If you haven't already enabled the container package and device-mode:

# Install the container package (router reboots automatically)
/system/package/update/check-for-updates duration=10s
/system/package/enable container
# Apply changes restarts the router

After reboot:

# Enable container device-mode (requires physical power cycle or button press — follow the on-screen prompt)
/system/device-mode/update mode=advanced container=yes

See MikroTik's Container documentation for full prerequisites and troubleshooting.

2. Add the rosetta app

/app/add use-https=yes disabled=no yaml="name: rosetta
descr: \"RouterOS Docs for AI assistants - use URL as MCP server\"
page: https://tikoci.github.io/p/rosetta
category: development
icon: https://tikoci.github.io/p/rosetta.svg
default-credentials: \"none - just use 'ui-url' as the MCP server in your AI assistant\"
url-path: /mcp
auto-update: true
services:
  rosetta:
    image: ghcr.io/tikoci/rosetta:latest
    container_name: mcp-server
    ports:
      - 9803:8080/tcp:web
"

That's it. RouterOS downloads the container image, configures networking and firewall redirects, and starts the MCP server. The auto-update: true setting pulls the latest image on each boot.

3. Get the MCP endpoint URL

The URL to use with your AI assistant is shown as UI URL in WebFig (App → rosetta), or from the CLI:

:put [/app/get rosetta ui-url]

This URL includes the /mcp path and is ready to paste into any MCP client that supports HTTP transport. With use-https=yes, the URL uses HTTPS with a MikroTik-managed *.routingthecloud.net certificate.

4. Configure your AI assistant

Point any HTTP-capable MCP client at the URL from the previous step:

{ "url": "https://app-rosetta.XXX.routingthecloud.net/mcp" }

CHR note: Cloud Hosted Router in free or trial mode does not include the /ip/cloud service needed for HTTPS certificates. Set use-https=no on the /app — the URL will use HTTP instead. The UI URL always reflects the correct protocol.

HTTP option: On any platform, you may choose use-https=no if you prefer HTTP or are on an isolated network.

Browse the database from the router: If rosetta is running as a /app, you can use /container/shell to access the TUI browser directly:

/container/shell app-rosetta
# /app/rosetta browse

Install Locally (with Bun)

Run rosetta on your workstation using Bun. The MCP server runs over stdio — no network configuration needed. The database downloads automatically on first launch (~50 MB compressed).

Quick setup

bunx @tikoci/rosetta --setup

This downloads the database and prints config snippets for all supported MCP clients. Copy-paste the config for your client and you're done.

Need to force a database reload later? Use:

bunx @tikoci/rosetta@latest --refresh

Prerelease channels (optional)

New corpus builds sometimes ship first under a non-default npm dist-tag so testers can opt in without moving what everyone else gets by default:

bunx @tikoci/rosetta@next     # newest prerelease of any stage (alpha/beta/rc)
bunx @tikoci/rosetta@alpha    # pinned to the alpha stage's latest
bunx @tikoci/rosetta@beta     # pinned to the beta stage's latest
bunx @tikoci/rosetta@rc       # pinned to the rc stage's latest

bunx @tikoci/rosetta (no tag) and bunx @tikoci/rosetta@latest always resolve to the default, non-prerelease channel — publishing a prerelease never moves latest.

Dist-tags, not semver ranges. A version range like ^0.11.0-alpha is not equivalent to a dist-tag. npm's prerelease range matching only spans the exact [major,minor,patch] tuple written in the range, so it stops tracking new prereleases the moment a patch/minor bump happens. @next/@alpha/@beta/@rc are the actual "follow forever" mechanism — use those, not a range, to stay on a moving prerelease channel.

Configure your MCP client

VS Code Copilot

Open the Command Palette (Cmd+Shift+P / Ctrl+Shift+P), choose "MCP: Add Server…", select "Command (stdio)", enter bunx as the command, and @tikoci/rosetta as the argument.

Or add to User Settings JSON (Cmd+Shift+P → "Preferences: Open User Settings (JSON)"):

"mcp": {
  "servers": {
    "rosetta": {
      "command": "bunx",
      "args": ["@tikoci/rosetta"]
    }
  }
}
Claude Code
claude mcp add rosetta -- bunx @tikoci/rosetta
Claude Desktop

Edit your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "rosetta": {
      "command": "bunx",
      "args": ["@tikoci/rosetta"]
    }
  }
}

PATH note: Claude Desktop on macOS doesn't always inherit your shell PATH. If bunx isn't found, use the full path (typically ~/.bun/bin/bunx). Run bunx @tikoci/rosetta --setup to print the full-path config.

Restart Claude Desktop after editing.

Cursor

Open Settings → MCP and add a new server:

{
  "mcpServers": {
    "rosetta": {
      "command": "bunx",
      "args": ["@tikoci/rosetta"]
    }
  }
}
OpenAI Codex
codex mcp add rosetta -- bunx @tikoci/rosetta

Note: ChatGPT Apps require a remote HTTPS MCP endpoint. Use the MikroTik /app install or another container platform for a hosted endpoint, or Codex CLI for local stdio.

GitHub Copilot CLI

Inside a copilot session, type /mcp add:

  • Server Name: routeros-rosetta
  • Server Type: 2 (STDIO)
  • Command: bunx @tikoci/rosetta

Install Bun (if you don't have it):

# macOS / Linux
curl -fsSL https://bun.sh/install | bash

# Windows
powershell -c "irm bun.sh/install.ps1 | iex"

Auto-update: bunx checks the npm registry each session and uses the latest published version automatically. The database in ~/.rosetta/ros-help.db persists across updates.


Browse Without AI

Rosetta includes a terminal-based "card catalog" browser — no AI assistant or MCP client required. It searches the same database the MCP tools use, with a keyboard-driven REPL modeled after a 1980s library terminal.

bunx @tikoci/rosetta browse

Type a search query to find documentation pages, then select a numbered result to drill in. Beyond page search, the browser covers every data source in the database:

CommandWhat it searches
(bare text)Documentation pages (default)
dev <query>Device hardware specs, block diagrams, benchmarks
cmd [path]Command tree hierarchy
prop <name>Property definitions (scoped to current page when viewing one)
cal [query]Warnings, notes, and tips
cl [version]Changelogs — cl breaking for breaking changes only
vid <query>YouTube video transcripts with timestamped chapter links
diff <from> <to>Command tree diff between RouterOS versions
tests [type]Cross-device performance benchmarks
verLive-fetch current RouterOS versions

Type help for the full command list. URLs are clickable in terminals that support OSC 8 hyperlinks (iTerm2, Windows Terminal, GNOME Terminal, etc.).

The browser is also useful as an audit surface — it shares core query functions with MCP and exposes every MCP tool as a raw dot-command, so gaps or rough edges visible here often point to agent-facing improvements too.

From a router: If rosetta is installed as a /app, access the browser via /container/shell app-rosetta then /app/rosetta browse.


Try It

Ask your AI assistant questions like:

  • "What are the DHCP server properties in RouterOS?"
  • "How do I set up a bridge VLAN?"
  • "Is the /container command available in RouterOS 7.12?"
  • "Show me warnings about hardware offloading"
  • "Which MikroTik routers have L3HW offload, and more than 8 ports of 48V PoE? Include cost."
  • "Compare the RB5009 and CCR2004 IPSec throughput at 1518-byte packets."
  • "My BGP routes stopped working after upgrading from 7.15 to 7.22 — what changed in the routing commands?"

MCP Tools

The server exposes 14 tools designed to work together — agents start with routeros_search and drill into specific data as needed:

ToolWhat it does
routeros_searchStart here. Unified search with input classifier — returns pages + related callouts, videos, properties, changelogs, devices, skills
routeros_get_pageFull page content by ID or title, section-aware for large pages
routeros_lookup_propertyProperty by exact name — type, default, description
routeros_explain_commandRead-only explanation for a CLI command — canonical path/verb, args, warnings, docs, changelogs
routeros_command_treeBrowse the command hierarchy (/ip/firewall/filter style)
routeros_search_changelogsChangelogs filtered by version range, category, breaking flag
routeros_command_version_checkWhich RouterOS versions include a command path
routeros_command_diffAdded/removed commands between two RouterOS versions
routeros_device_lookupHardware specs — filter by architecture, RAM, PoE, wireless, etc.
routeros_search_testsCross-device ethernet and IPSec benchmarks
routeros_dude_searchFTS across archived Dude wiki docs (separate from RouterOS search)
routeros_dude_get_pageFull Dude wiki page by ID or title, with screenshot metadata
routeros_statsDatabase health and coverage stats
routeros_current_versionsLive-fetch current RouterOS versions from MikroTik

Each tool description includes workflow arrows (→ next_tool) and empty-result hints so agents chain tools effectively.

The server also exposes MCP Resources for bulk data and supplemental content — CSV datasets (rosetta://datasets/...), schema documentation (rosetta://schema...), and agent skill guides (rosetta://skills/{name}) from tikoci/routeros-skills. Skills are community-created, human-reviewed guides served with provenance attribution. See MANUAL.md for details.

RTFM for Details

For additional install options, HTTP transport configuration, data source details, and the database schema, see MANUAL.md.

Contributing

See CONTRIBUTING.md for building from source, running tests, development setup, and the release process.

License

MIT

Files in the repo

Repository payload50 top-level entries
  • .claude
  • .github
  • .vscode
  • bin
  • briefings
  • drafts
  • dude
  • fixtures
  • matrix
  • scripts
  • src
  • tasks
  • transcripts
  • .coderabbit.yaml
  • .dockerignore
  • .gitignore
  • .markdownlint-cli2.yaml
  • .markdownlint.yaml
  • .markdownlintignore
  • AGENTS.md
  • BACKLOG.md
  • biome.json
  • bunfig.toml
  • CHANGELOG.md
  • CLAUDE.md
  • cli-reference-links.tsv
  • commands-to-docs.csv
  • CONTRIBUTING.md
  • cspell.json
  • DESIGN.md
  • device-exceptions.toml
  • device-map.tsv
  • Dockerfile
  • Dockerfile.release
  • hardware-unmatched.tsv
  • hardware-www-map.toml
  • hardware-www-matrix.csv
  • LICENSE
  • Makefile
  • MANUAL.md
  • package.json
  • project-words.txt
  • README.md
  • ros-hardware-assessment.json
  • ros-html-assessment.json
  • ros-www-assessment.json
  • SECURITY.md
  • server.json
  • tsconfig.json
  • VALIDATION.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k