DomMCP is an HCL Domino server add-in that exposes Domino NSF databases as a Model Context Protocol (MCP) server over HTTP. It lets AI agents and automation platforms read, write, and build Domino applications — documents and design elements (forms, views, agents, pages, script libraries, ACL) — through a single governed endpoint.
This repository is a closed-source binary distribution. Source code is not published here.
Not read-only. Earlier public builds were retrieval-only. Current DomMCP performs full read and write and design authoring and server administration, gated by a per-token permission model.
- Read / query: discover databases, profile schema, read views, fetch documents, full-text search, DQL queries, and aggregations.
- Write: create / update / delete documents (typed fields, rich text, names/authors/readers).
- Design authoring: create and patch forms, subforms, views, folders, pages, outlines, framesets, navigators, agents (formula + LotusScript), script libraries, database scripts, shared fields, and image/file/stylesheet resources — driven entirely by DXL/parameters from the AI side.
- Administration: ACL and roles, group and person management, database lifecycle (create / compact / quota / delete), and scoped server-console commands.
AI agent / automation ──HTTP POST /mcp (JSON-RPC 2.0)──▶ DomMCP add-in ──Notes C API──▶ Domino NSF
Bearer token (load dommcp_addin, :8088)
The add-in runs as a Domino server task (load dommcp_addin) and listens on port 8088, serving
JSON-RPC 2.0 over POST /mcp. Configuration lives in an NSF on the server (NSF = source of truth);
a JSON config file is used only to seed a fresh install.
Both the config NSF and the license file live in the dommcp/ subfolder of the Domino data
directory — that is where the add-in looks for them (no env var or notes.ini entry needed):
<Domino data dir>/
dommcp/
dommcpcfg.nsf # config NSF (tokens, grants, settings, license doc) — token-less when shipped
dommcp-license.json # signed Ed25519 license (drop it here; auto-found next to the config NSF)
dommcpaudit.nsf # audit log (created automatically next to the config NSF)
The add-in binary itself goes in the Domino program directory (where nserver/nserver.exe lives).
DomMCP speaks standard MCP and works with:
- Anthropic Claude — via the OAuth 2.1 / Streamable-HTTP custom connector (claude.ai).
- OpenAI / ChatGPT — MCP-compatible connector.
- n8n / scripts / any Bearer client — plain
Authorization: Bearer <token>againstPOST /mcp.
The claude.ai and ChatGPT connectors need DomMCP reachable over public HTTPS, behind a reverse proxy
you run, forwarding Host and X-Forwarded-Proto: https. DomMCP derives the OAuth redirect URLs, the
issuer and the resource_metadata hint in its WWW-Authenticate challenge from those two headers — if
they do not arrive correctly, it builds addresses that are unreachable from outside and the sign-in fails
with an error that does not point at the cause.
Verify it in one call, from outside, through the public name:
curl -s https://dommcp.example.com/.well-known/oauth-protected-resource
# expect: {"resource":"https://dommcp.example.com/mcp", …}
# scheme MUST be https, host MUST be your public name — an http:// or an internal IP
# means the proxy is not passing the headers through.Ready-made nginx and Caddy configurations plus a full verification checklist ship with the handbook.
A Bearer client (n8n, a script) does not need any of this — it can talk to http://<host>:8088/mcp
directly on the internal network.
See QUICKSTART.md for connecting each client and
examples/ for a worked n8n workflow.
- Token → Grant → scope. Each Bearer token resolves (SHA-256) to one or more grants; a grant decides which databases, tools, views, and fields the token may touch, plus rate/size limits.
- Write-intent. A token carries a separate write-intent hash; without it, writes are refused even when a write tool is called. Over MCP HTTP the value is derived server-side from the same session — the client never sends it. It is therefore a per-token capability flag, not a second factor the caller supplies.
- Run-as ACL. A token can be mapped to a Domino user so reads are additionally enforced by the database ACL (a no-access user sees nothing).
- Audit. Every request is recorded to an audit NSF.
DomMCP uses an offline Ed25519 license — no phone-home. The verifying public key is compiled into the binary, so a license must be signed by the genuine key (a swapped public key cannot self-sign).
| Edition | Capability |
|---|---|
| READ | Read / query / aggregation tools. |
| PRO | READ plus write + design authoring. |
| ENTERPRISE | Full toolset incl. administration, higher limits. |
| TRIAL | Time-boxed evaluation. |
Runtime behavior without a valid license:
- Unlicensed: a 7-day read-only evaluation window, after which the server is blocked until a license is installed.
- Expired license: the server degrades to permanent read-only.
License installation is described in QUICKSTART.md.
Requirements: HCL Domino 12.0.2, 14.0 or 14.5 (server task add-in) — one binary covers all three, verified on all three. Linux x86_64, Windows x64, or the HCL domino-container.
All downloads are on the Releases page. They used to sit in version folders in this repository; those folders are gone — every artifact, including the older versions, is now a release asset. That keeps a clone small and gives each download a stable URL and a checksum.
Current release — v0.0.671
Linux and Windows come from the same commit (e304c36) in this release. Each binary ships with its own
manifest-*.json naming that commit and the artifact's SHA-256, so the claim is checkable rather than
promised.
| Artifact | Asset |
|---|---|
| Linux x86_64 add-in (glibc ≥ 2.38) | dommcp_addin-linux-x64-glibc2.38 |
| Windows x64 add-in | dommcp_addin-windows-x64.exe |
| HCL domino-container Custom Add-on | dommcp-0.0.671.taz (-custom-addon=<file>.taz#<sha256>) |
| DB master templates (config + audit, token-less) | dommcpcfg.ntf, dommcpaudit.ntf |
| Handbook (German / English, PDF) | DomMCP-Installationsanleitung.pdf, DomMCP-Installation-Guide.pdf |
| Build provenance | manifest-linux.json, manifest-windows.json, addon-manifest.json |
| Integrity checksums | SHA256SUMS |
Always verify after download: shasum -a 256 -c SHA256SUMS.
The add-in links against the libnotes of the target Domino, and that sets a minimum glibc. Detect yours
with ldd --version | head -n 1, then:
| Distribution | glibc | v0.0.671 (≥ 2.38) | v0.0.272 (≥ 2.34) |
|---|---|---|---|
| Ubuntu 24.04 LTS, Debian 13, RHEL/Rocky/Alma 10 | 2.38–2.41 | ✅ | ✅ |
| Ubuntu 22.04 LTS | 2.35 | ❌ | ✅ |
| RHEL / Rocky / Alma 9 | 2.34 | ❌ | ✅ |
| RHEL / Rocky / Alma 8 | 2.28 | ❌ | ❌ |
For glibc below 2.34 there is no working binary, and for Domino 14 there cannot be one. The floor is not
ours to choose: HCL's own libnotes.so — the library the add-in links against — requires it. Measured with
objdump -T on the shipped runtimes:
| Domino | libnotes.so requires |
|---|---|
| 12.0.2 | GLIBC_2.17 |
| 14.0 | GLIBC_2.34 |
| 14.5 | GLIBC_2.34 |
So on RHEL/Rocky/Alma 8 (glibc 2.28), Domino 14 itself does not run — with or without DomMCP. An earlier version of this page pointed glibc-2.28 hosts at v0.0.272 and offered to build against an older glibc; both were wrong, and we corrected them rather than leave them standing.
If you run Domino 12.0.2 on such a host, a build is possible — that runtime only needs glibc 2.17. Ask, and we will produce a 12.0.2-specific artifact. For Domino 14 the answer is the container add-on, or a newer host OS.
The container add-on sidesteps the issue entirely: the .taz runs inside the HCL domino-container image.
v0.0.650, v0.0.615 (Linux only), v0.0.272 and v0.0.249 remain available. Use v0.0.272 only if your glibc rules out the current build — it is many months behind.
New in v0.0.671: a grant's database list is now bound to allow_all_databases instead of being inferred
from allowed_tools: "*" — a token scoped to one database could otherwise see the server's whole inventory.
Grants can be scoped to a directory (DatabasePathPrefix) with a limit on how many databases may live
there and a default size quota. A design write that loses code now repairs itself instead of failing the
call, and a scheduled agent whose LotusScript does not compile is rolled back to the version that did — it
used to be left broken. Writes that had to fall back to the lower-fidelity path say so in one sentence, as
does a truncated server list. Several tools got cheaper to call: the batch design upsert writes many
elements in one round trip, and arguments the server fills in itself are no longer advertised.
New in v0.0.650: Windows binary current again (it had silently stopped being built for four weeks);
database titles with umlauts no longer break the JSON response; patching an agent keeps its UNID and note id;
MCP spec 2026-07-28 is served alongside the older revision, so existing clients are unaffected.
New in v0.0.615: a database created without a design reports it at startup and can be repaired with
tell dommcp repair-design; dommcp_upsert_html_page publishes a web UI from plain HTML; scheduled agents
keep their schedule when patched; patched file resources keep their MIME type; keyword choice fields are
clickable and verified after the write.
New in v0.0.272: browsable audit database, automatic re-signing of every DomMCP-written document, new
dommcp_sign_database tool, per-identity grant dedup, license doc kept in sync with the active license,
UTF-8 numeric-entity decode fix.
| File | Contents |
|---|---|
QUICKSTART.md |
Install per platform (Linux / Windows / container), first start, admin bootstrap, license, client setup. |
OPERATE.md |
Console verbs, backup/restore, monitoring, license renewal. |
TOOLS.md |
The MCP tool catalog by category (read / write / design / admin / DQL). |
| Handbook PDFs (release assets) | Administrator handbook, German and English: install (Linux, container, Windows), first administrator, licence, functional test, configuration database, AI client, operation, backup, troubleshooting, acceptance checklist. |
dommcpcfg.ntf / dommcpaudit.ntf (release assets) |
Recommended fresh-install DB master templates — token-less, no secrets: config (Token/Grant/License/Settings forms + views) and a browsable audit database. Put both into <data dir>/dommcp/; the add-in creates the databases from them on first load — see QUICKSTART step 1b. |
default-config.json |
Alternative JSON seed (token-less, super-admin grant template, placeholders; builds a config NSF without design). |
CONFIG_EXAMPLE.json |
Annotated config template (placeholders only). |
examples/ |
n8n workflow + connector notes. |
- Website: it-dallmann.de
- Product page: it-dallmann.de/dommcp.html (German)
- Background article: How DomMCP works (English)
- HCL Domino Marketplace: domino-dommcp
- Please test in your environment and open a GitHub issue for bugs, questions, or ideas.