1. Install
Requires Node.js 18 or later.
2. Configure Claude Desktop
Add the following to your Claude Desktop configuration file:
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
3. Configure Cursor
Add to .cursor/mcp.json in your project root:
4. Configure Windsurf
Same JSON format. Add to Windsurf's MCP configuration file using the server block above.
5. What the MCP Server Provides
| Category | Count | Examples |
|---|---|---|
| Compliance tools | 31 | witness inference, guardrails, consent, RAG provenance, output filtering, incident reporting, data provenance, human review, gate evaluation, timeline reconstruction |
| Prompt templates | 1 | compliance-check |
| Resources | 2 | Server status, procedure registry |
Each tool maps to a specific SWT3 procedure (e.g., AI-INF.1, AI-GRD.1, AI-CONSENT.1). Every invocation produces a cryptographic SWT3 Witness Anchor.
6. Local-Only Mode
Without environment variables, the server runs in local-only mode. Anchors are generated locally but not persisted to the cloud. Useful for evaluation and development.
7. Verify It Works
After configuring, ask your AI assistant:
It should list all 33 compliance tools. If it does not, restart your MCP client to pick up the new configuration.
8. Witness Middleware (v0.6.5)
Already have an MCP server? The Witness Middleware wraps any MCP transport for zero-code witnessing. Every tool call automatically mints an AI-TOOL.1 anchor after the response is already sent. No changes to your tool handlers.
import { withSWT3 } from "@tenova/swt3-mcp/middleware";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const transport = withSWT3(new StdioServerTransport(), {
apiKey: process.env.SWT3_API_KEY,
});
await server.connect(transport);
The middleware is purely observational. It wraps the transport's send() and onmessage callbacks to observe tool call request/response pairs. The response is committed to the wire before the witness fires. Your tool calls cannot be blocked, delayed, or affected in any way. Witness failures are silently caught.
Omit the apiKey for demo mode. Anchors log to stderr instead of posting to the ledger.