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 "@linda/core";
linda.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 { LindaMcpServer } from "@linda/core";
const server = new LindaMcpServer({
linda,
expose: {
resources: ["/page", "/conversation", "/user"],
tools: ["read", "write", "act", "extract", "observe"],
},
});
// Connect from Claude Desktop:
// { "mcpServers": { "linda": { "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. Linda'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.
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 Linda 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.
Ship an agent-driven flow this afternoon.
Install Linda, paste a config, and your form turns into an agent that fills its own inputs.