TEASER: RouterOS Documentation and Schema MCP @tikoci/rosetta
I should do a better writeup for forum - still working on concept and perhaps even naming.... More details are here in README.md:
TL;DR
To try the TUI interface, outside any AI, it's just:
# Install `bun` if not already, see https://bun.sh for details
curl -fsSL https://bun.sh/install | bash
# or Mac with Homebrew: `brew install bun`
# To launch, TUI this will get you the latest version and start it in TUI mode
bunx @tikoci/rosetta browse
Note the browse in CLI — without it, rosetta will run in MCP server mode
More to the story, but REST API now in SQLite...
And linked to documentation pages at help.mikrotik.com in the database (and eventually be incorporated into the OpenAPI schema).
Note the commands have links back to MikroTik docs, and eventually this data will be feed back into the OpenAPI 3 scheme add content from help.mikrotik.com inside the OpenAPI 3 schema....
Data Sources in SQLite...
The database combines multiple sources of MikroTik data:
-
HTML Documentation — Confluence space export from help.mikrotik.com. Pages are broken into sections, callout boxes, and property tables (~515K words).
-
Command Tree — inspect.json from tikoci/restraml, which runs /console/inspect against RouterOS CHR under QEMU for every version since 7.9 (46 versions tracked).
-
Product Matrix — CSV export from mikrotik.com/products/matrix (144 products, 34 columns).
-
Test Results — Ethernet and IPSec throughput benchmarks scraped from mikrotik.com product pages.
-
Changelogs — Parsed per-entry from MikroTik download server.
-
YouTube Transcripts — Auto-generated English transcripts from the official MikroTik YouTube channel (518 videos, ~1,890 transcript segments). Extracted via yt-dlp, cached as NDJSON in transcripts/ for reproducible CI builds. See make extract-videos / make extract-videos-from-cache.
Documentation covers RouterOS v7 only and aligns with the long-term release (~7.22) at export time.
But SQL is part of tikoci/rosetta "MCP Server" to provide MikroTik info to AI assistants...
To an AI assistant in a chat window, @tikoci/rosetta looks like this (CoPilot in VSCode), you can see the MCP tool is more like a function call, and the MCP what converts that into a SQL query to return the JSON with text version of MikroTik docs.
e.g. HTML tags waste a lot of "tokens", so less available are thinking/work if it has to read the Confluence page directly, so rosetta lets it get things in "chunks" based FTS keyword searches:
Rosetta MCP does not access your routers, or even have access to it – it just does SQL queries to its database, based HTTP requests from a chat session to extract chuck of data
It important to note that all information comes either from MikroTik website, so the core database goes well beyond just the "schema in SQL" — but my orginal need for a few of my https://tikoci.github.io projects was some ability to "link" to MikroTik docs (e.g. the OpenAPI schema, RouterOS LSP, TikBook, etc)
Easy path to use "rosetta" DB as new /app for most AI assistants....
This acts as a MCP server for AI assistants to access Mikrotik info, so essentially use the ui-url in something like Claude or CoPilot or ChatGPT Desktop things. See: GitHub - tikoci/rosetta: MCP Server with RouterOS docs + commands + products + changelogs, using SQLite-as-RAG, sourced from MikroTik · GitHub
[admin@CHR] > /app/print where name=rosetta
Flags: R - RUNNING; c - CUSTOM
Columns: NAME, UI-URL, MEMORY-CURRENT, APP-SIZE, CATEGORY, DESCRIPTION
# NAME UI-URL MEMORY-CURRENT APP-SIZE CATEGORY DESCRIPTION
0 Rc rosetta http://192.168.74.150:9803/mcp 58.7MiB 390.6MiB development RouterOS Docs for AI assistants - use URL as MCP server
[admin@CHR] > /app/print detail where name=rosetta
Flags: X - DISABLED, R - RUNNING; c - CUSTOM, s - FROM-APP-STORE
0 Rc app-store-url="" name="rosetta" description="RouterOS Docs for AI assistants - use URL as MCP server" container-command-lines=rosetta:app-rosetta:ghcr.io/tikoci/rosetta:latest
project-page="https://tikoci.github.io/p/rosetta" category="development" ui-url="http://192.168.74.150:9803/mcp"
default-credentials="none - just use 'ui-url' as the MCP server in your AI assistant" status="" auto-update=yes use-https=no default-network=internal network=default pvid=1
interface=veth-app-rosetta ip-address=172.18.0.7 firewall-redirects=9803:8080:tcp:web 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
cmds=
/interface set veth-app-rosetta name=veth-app-rosetta
/interface bridge port add bridge=internal interface=veth-app-rosetta pvid=1
/ip firewall nat add action=dst-nat chain=dstnat comment="app rosetta redirect to web" dst-address=192.168.74.150 dst-port=9803 protocol=tcp to-addresses=172.18.0.7 to-ports=8080
memory-current=58.7MiB app-size=390.6MiB required-mounts="" extra-mounts="" environment="" secrets="" configs="" variables-to-use-in-environment=
[containerIP]=172.18.0.7
[containerInterface]=veth-app-rosett
[routerIP]=192.168.74.150
[accessIP]=192.168.74.150
[accessPort]=9803
[accessProto]=http
required-hw-devices="" devices=""
And if you have a license CHR or any ARM64 device, the MCP connection use HTTPS — my output above has use-https=no since it needs /ip/cloud. The ui-url for the /app will show what to use in your AI MCP server configuration. The README.md has the setup details.
As a "Card Catalog" of SQL DB — no AI required, just 1980s interface...
If you have bun installed, a TUI "card catalog" of database is available... no install, no container, just one command will bring it up (links work better in "modern" trerminal, so even MacOS detail will only work with http:// links, in other terminals especially on Linux, more stuff is "clickable".
The basic idea is you can just type a query (no keyword) and it will search MikroTik docs. The help explains that you can search specifically catalogs of data using keywords, like dev rb5009 to find the 3 models, and select 1-3 to view the spec, block diagram, and test results form website ... from the SQLite database (that is updated by GitHub on new HTML export from MikroTik's help.mikrotik.com).... so it sub seconds to search.
The UI could be improved... it was designed to test the MCP interface so you are interacting with data more as a AI would than I'd design if goal use "human UX".... the 1980s library catalog system was my concept so it at least look more normal...e.g. the AI figured out the ANSI codes and API calls, the TUI UX design was more me.
bunx run @tikoci/rosetta browse
This is orginally was a "simple" debugging tool... since it actually models how an AI assistant would have interact with the system since the "commands" are mapped to MCP tools and output is what an LLM agent would see.
But it mostly works as a 1980s library terminal to access MikroTik resources stored is the rosetta database.
If you install rosetta as a /app based on the readme, you access the same TUI using /container/shell...
[admin@CHR] > /container/shell app-rosetta
# /app/rosetta browse
╭─ rosetta ──────────────────────────────────────────────────> ─────────────────╮
│ RouterOS Documentation Browser v"v0.5.0" │
│ 317 pages · 4,860 properties · 40,208 commands │
│ 144 devices · 1,034 callouts · 43 versions │
│ 510 videos · 1,882 transcript segments │
│ │
│ Type a search query, or help for commands. │
╰────────────────────────────────────────────────> ──────────────────────────────╯
rosetta> quit
# exit
done
[admin@CHR] >
Even YouTube videos...
Which extract the "chapters" and "[english] subtitles", links know the chapter (if any) where a keywords was found in the subtitles, so it goes roughly that that spot in the video:
Again, these all go to a AI assistant - the 1980s "browse" card catalog is just so demo what it has... But AI agent it could suggest "maybe watch this video at this spot" and/or read the transcript, since it might have subtle details not in the manual.
Per device data... with "test results" and "block diagram"
Note the "Test Data" shown and "Block Diagram" is available, linked to device, done in milliseconds
But just JS scripts & SQLite at its core...
But it all just scripts that pull data and SQL tables, and sophisticated FTS indexes - the "card catalog" does not use any AI itself – it feed this same info to an AI when asked via MCP protocol
sqlite3 ros-help.db
SQLite version 3.51.0 2025-06-12 13:14:41
Enter ".help" for usage hints.
sqlite> .tables
callouts pages_fts_data
callouts_fts pages_fts_docsize
callouts_fts_config pages_fts_idx
callouts_fts_data properties
callouts_fts_docsize properties_fts
callouts_fts_idx properties_fts_config
changelogs properties_fts_data
changelogs_fts properties_fts_docsize
changelogs_fts_config properties_fts_idx
changelogs_fts_data ros_versions
changelogs_fts_docsize schema_migrations
changelogs_fts_idx sections
command_versions video_segments
commands video_segments_fts
device_test_results video_segments_fts_config
devices video_segments_fts_data
devices_fts video_segments_fts_docsize
devices_fts_config video_segments_fts_idx
devices_fts_data videos
devices_fts_docsize videos_fts
devices_fts_idx videos_fts_config
pages videos_fts_data
pages_fts videos_fts_docsize
pages_fts_config videos_fts_idx
Even the CHANGELOG...
rosetta> cl 7.23beta2 iot
Changelogs for 7.23beta2
7.23beta2 2026-Mar-13 11:52
iot added Wiliot support;
iot improved LoRa Tx handling;
iot added LoRa Tx delay setting;
iot added MQTT subscribe message real-time monitoring option;
iot fixed LoRa LBT issues, which caused Tx packets not getting delivered;
[cl breaking] breaking only [cl <ver>] specific version [b] back
rosetta> cl breaking
Changelogs (breaking only)
7.22 2026-Mar-09 10:38
⚠ device-mode added option to configure device-mode via Netinstall or FlashFig using a “mode script”;
⚠ certificate added support for multiple ACME certificates (services that use a previously generated certificate need…
7.22rc4 2026-Mar-04 15:06
⚠ device-mode added option to configure device-mode via Netinstall or FlashFig using a “mode script” (additional fixe…
⚠ certificate added support for multiple ACME certificates (services that use a previously generated certificate need…
7.17 2025-Jan-16 10:19
⚠ device-mode after upgrade, mode "enterprise" is renamed to "advanced" and traffic-gen, partition (command "repartit…
⚠ webfig redesigned HTML, styling and functionality;
Command property are extracted from HTML, too.
This is what will eventually make into the schema since not all commands have F1 help (which only source for text description of things in OpenAPI/RAML schema here).
rosetta> p
Properties for VRRP
1 name string
VRRP interface name.
VRRP →
2 group-authority none | self | vrrp-interface default: none
Allows multiple VRRP interfaces to be grouped so they share the same VRRP state. Within a group, a single group autho…
VRRP →
3 version integer [2, 3] default: 3
Which VRRP version to use.
VRRP →
4 backup
The VRRP interface is in the backup state.
VRRP →
5 disabled
The VRRP interface is disabled by the user.
VRRP →
6 master
The VRRP interface is in the master state.
VRRP →
7 grp-authority
The VRRP interface is group-authority. It controls the state of the other group members and is the only interface tha…
VRRP →
8 interface string
Interface name on which VRRP instance will be running.
VRRP →
Long way to say the REST API is now available in SQL...
To tie the topic back to REST API, the commands and commands_versions (which know stores what version a command was seen similar to RouterOS Command Lookup
Updates when MikroTik update their HTML export of help.mikrotik.com
So currently the docs are from 2026-03-25, commands should be up 7.23beta5 since I just built another version. The idea is there be a new database monthly, assuming MikroTik gets back on track on this:
...which is actually the underpinning of the entire rosetta KB system, since the HTML dump of Confluences is slice-and-diced by scripts to build the database. Process is entirely repeatable as long as MikroTik does not change things, and updates the exports "monthly".
Still "experimental" but "safe"
The main work left is "aligning" the MCP tools to what things an AI might need from RouterOS. For example, there 14 tools offer to a "chat agent" to access the information... that is likely too many. And some of the "slicing-and-dicing" of docs/etc could be improved in various places. We do NOT modify or use AI generated content... but we do split up large HTML doc pages and YouTube transcripts in to fragments, to allow an LLM to only get certain sections.
To be clear, it do NOT access your router configuration at all. No password is required since all data is from publicly available sources. The code is all published by GitHub so even the extract process is transparent (in tikoci/rosetta GitHub Actions)
Anyway, still working on it in background. Tons of room for improvements, but it does "work", well, a many places, and LLM do use it if installed and start asking "RouterOS questions". The "card catalog" is just experiment and "test hardness"... so it not designed to be "best search tool" - although it works surprising well (still some bugs, which are also likely in how I also works with AI agents... this is where TUI catalog app is useful, since mimics how LLM interface with the database.