Feature · MCP

MCP, both directions.

Mount any MCP server under /host/<name>/ and the LLM treats it like any other VFS path. Or expose your page as an MCP server so Claude Desktop can read it directly.

As a client

Plug your CRM, KB, or internal tools into the agent in one line.

import { mcpClientMount } from "@dornick/core";

dornick.mount("/host/crm",
  mcpClientMount({
    transport: "sse",
    url: "wss://crm.example.com/mcp",
    auth: { type: "bearer", token: process.env.CRM_TOKEN },
  })
);

// The LLM can now read /host/crm/accounts/123.json, call /host/crm/tools/search, etc.

As a server

Expose your page's VFS + tool primitives over MCP so Claude Desktop, Cursor, or Continue can read it directly.

import { DornickMcpServer } from "@dornick/core";

const server = new DornickMcpServer({
  dornick,
  expose: {
    resources: ["/page", "/conversation", "/user"],
    tools: ["read", "write", "act", "extract", "observe"],
  },
});

// Connect from Claude Desktop:
// { "mcpServers": { "dornick": { "transport": "sse", "url": "wss://..." } } }

Plug the URL into Claude Desktop's mcpServers config and the agent in Claude Desktop can read /page, /conversation, and call act / extract / observe on your page from outside the browser.

Why MCP matters here

MCP is the bridge between agents and your stuff. Dornick's job is to be the agent on your page; MCP lets the agent read external data without bespoke integrations, and lets external agents read your page without bespoke APIs.

MCP or WebMCP?

They solve adjacent problems and get confused constantly.

  • MCP connects an agent to external systems — your CRM, your knowledge base, a desktop client. Transport-agnostic, usually across a network boundary. That's this page.
  • WebMCP is the W3C standard for how a page exposes its own functionality to agents in the browser, through document.modelContext. No network hop; the tools are the page's own JavaScript.

Dornick speaks both. MCP mounts other people's systems under /host/*; WebMCP is how Dornick and the page in front of it talk to each other.

Patterns

  • Agent + your KB. Mount your Notion / Confluence MCP under /host/kb. The agent grounds answers without retrieval boilerplate.
  • Agent + your CRM. Mount Salesforce / HubSpot MCP. The agent enriches form fills with account context.
  • Claude Desktop + your page. Expose Dornick as MCP. Your PM/sales team can talk to Claude Desktop and have it read the same page the user is on, in real time.

Read the full MCP docs →

Ship an agent-driven flow this afternoon.

Install Dornick, paste a config, and your form turns into an agent that fills its own inputs.