Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DomMCP — HCL Domino as an MCP server

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.

What it does

  • 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.

How it works

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.

Runtime layout (data directory)

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).

Clients

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> against POST /mcp.

⚠️ Prerequisite for the hosted connectors: public HTTPS

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.

Security model

  • 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.

License & editions

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.

Platforms & artifacts

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.

⚠️ Check your glibc first (Linux)

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.

Older releases

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.

Documentation

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.

Contact

About

MCP server for HCL Domino — lets AI agents read, write and build NSF applications (documents, forms, views, agents, ACL) over JSON-RPC. Native C++17 Domino add-in with token/grant auth and offline Ed25519 licensing (READ/PRO/ENTERPRISE).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors