A local MCP server that gives your AI agent semantic search over the OutSystems ODC & O11 documentation - with verified source links and a freshness timestamp. Runs fully local (offline embeddings, no hosted services).
Unofficial / community project. Docs are (C) OutSystems (CC BY-NC-ND 4.0); this tool keeps everything local and never redistributes them.
Credit: Original project by donnieprakoso - Thanks for the great foundation!
Inspired by his tagline: :wq! and made it better!
Enhancements:
- Windows installer for one-click setup - download from releases
- GPU acceleration (DirectML) AMD/Intel/NVIDIA GPU via DirectML, with automatic CPU fallback
- Fixed path resolution so the server works regardless of launch directory
- Faster CLI - no MCP server startup cost on
--syncand other commands - Windows symlink workaround for the Hugging Face cache
- Agent configuration: add/remove/status/backup/restore in one command
- Additional logging and documentation in
docs/folder. - Richer MCP results: every
search_docs/get_docresult now carriesurl,category, andlast_updated- see MCP Definitions - Windows builds trust Zscaler and Cloudflare corporate proxies automatically, so syncing docs and downloading the AI model works on locked-down company networks
Prerequisites: uv, Python 3.10+, and supported AI agents (see Agent Configuration).
Clone the repo (same on every OS):
git clone <your-repo-url> outsystems-docs
cd outsystems-docsThen build the local docs index - scripts\run.cmd/scripts/run.sh create the .venv (via uv sync) on first run automatically:
Windows (cmd):
scripts\run.cmd --syncmacOS / Linux:
./scripts/run.sh --syncThe first sync downloads a ~100 MB embedding model and builds a local vector index in data/ (offline from then on). Re-run anytime to refresh the docs.
Windows (cmd):
scripts\run.cmd --sync
scripts\run.cmd --sync --source odc
scripts\run.cmd --sync --source o11macOS / Linux:
./scripts/run.sh --sync
./scripts/run.sh --sync --source odc
./scripts/run.sh --sync --source o11Automated (recommended):
Windows (cmd):
scripts\run.cmd --agent-add claude_code
scripts\run.cmd --agent-status
scripts\run.cmd --agent-interactive
scripts\run.cmd --agent-backup claude_code
scripts\run.cmd --agent-restore claude_codemacOS / Linux:
./scripts/run.sh --agent-add claude_code
./scripts/run.sh --agent-status
./scripts/run.sh --agent-interactive
./scripts/run.sh --agent-backup claude_code
./scripts/run.sh --agent-restore claude_codeSee Agent Configuration for the full list of supported agents.
Example - this is what --agent-add claude_desktop writes into claude_desktop_config.json (edit it by hand instead if you'd rather skip the script):
Windows:
{
"mcpServers": {
"outsystems-docs": {
"command": "C:\\path\\to\\outsystems-docs\\scripts\\run.cmd"
}
}
}macOS / Linux:
{
"mcpServers": {
"outsystems-docs": {
"command": "/path/to/outsystems-docs/scripts/run.sh"
}
}
}Manual - Claude Code:
Windows (cmd):
claude mcp add outsystems-docs -- C:\path\to\outsystems-docs\scripts\run.cmdmacOS / Linux:
claude mcp add outsystems-docs -- /path/to/outsystems-docs/scripts/run.shOr let an agent install it - paste this prompt into your coding agent:
Clone <your-repo-url>, then run scripts\run.cmd --sync (Windows) or
./scripts/run.sh --sync (macOS/Linux) to build the local docs index.
Register that same script (no args) as a stdio MCP server named "outsystems-docs".
Then call search_docs to confirm it works.| Capability | What it does |
|---|---|
search_docs(query, k, source?, category?) |
Semantic search; optional odc/o11 and TOC-section filters; every result includes its verified url, category, and last_updated |
get_doc(source, path) |
Full Markdown of a single doc, with its url and last_updated |
llms://index (resource) |
Combined, labeled ODC + O11 navigation |
last_updated |
When your local docs were last synced |
| Verified links | URLs resolved against the official sitemap (never broken) |
| Fully local | Offline embeddings + NumPy search; nothing leaves your machine |
See MCP Definitions for full parameter/response schemas.
-
How does it work?
--syncfetches the official docs, generatesllms.txt/llms-full.txt, and builds a local vector index. The server loads those and answerssearch_docsby embedding your query locally and ranking by cosine similarity. -
Is it accurate? Answers come from the official OutSystems docs and link back to verified URLs. Results are only as fresh as your last sync - check the timestamp shown with each answer.
-
How do I sync?
scripts\run.cmd --sync(Windows) or./scripts/run.sh --sync(macOS/Linux); add--source odcor--source o11to limit;--no-linksto skip URL resolution. -
How do I make it sync automatically? Schedule it locally - no CI (license: don't redistribute). Example cron (daily 7am, macOS/Linux):
0 7 * * * cd /path/to/outsystems-docs && ./scripts/run.sh --sync >> sync.log 2>&1
On macOS you can use a
launchdLaunchAgent withStartCalendarIntervalinstead. On Windows, use Task Scheduler to runscripts\run.cmd --syncon a daily trigger.
Feel free to open an issue or share feedback.
