MCP Hub
Back to servers

@cellar-door/mcp-server

MCP server exposing cellar-door EXIT and ENTRY verifiable markers as AI-native tools

npm251/wk
Updated
Mar 13, 2026

Quick Install

npx -y @cellar-door/mcp-server

@cellar-door/mcp-server

npm version tests license NIST

𓉸 Passage Protocol · exit-door · entry-door · mcp · langchain · vercel · eliza · eas · erc-8004 · sign · python

⚠️ Pre-release software — no formal security audit has been conducted. This project is published for transparency, review, and community feedback. It should not be used in production systems where security guarantees are required. If you find a vulnerability, please report it to hawthornhollows@gmail.com.

Give any MCP-compatible AI (Claude, Cursor, Windsurf) the ability to create and verify agent departure records.

Ecosystem

PackageLanguageDescription
cellar-door-exitTypeScriptCore protocol (reference impl)
cellar-door-exitPythonCore protocol
cellar-door-entryTypeScriptArrival/entry markers
@cellar-door/langchainTypeScriptLangChain integration
cellar-door-langchainPythonLangChain integration
@cellar-door/vercel-ai-sdkTypeScriptVercel AI SDK
@cellar-door/mcp-serverTypeScriptMCP server ← you are here
@cellar-door/elizaTypeScriptElizaOS plugin
@cellar-door/easTypeScriptEAS attestation anchoring
@cellar-door/erc-8004TypeScriptERC-8004 identity/reputation
@cellar-door/sign-protocolTypeScriptSign Protocol attestation

Paper · Website

Quick Start

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "cellar-door": {
      "command": "npx",
      "args": ["@cellar-door/mcp-server"],
      "env": {
        "CELLAR_DOOR_SERVER_POLICY": "STRICT"
      }
    }
  }
}

Restart Claude Desktop. You can now say:

"Create a departure record for my agent leaving platform-x.example.com"

Claude will call the quick_exit tool and return a signed, verifiable EXIT marker.

Cursor / Windsurf

npm install @cellar-door/mcp-server

Point your MCP client at the server. It exposes 7 tools automatically.

Tools

EXIT Tools

ToolDescription
generate_identityGenerate an Ed25519 DID keypair for signing
quick_exitOne-shot: create + sign a departure marker
create_exit_markerCreate and sign a marker with full options
verify_exit_markerVerify a marker from JSON

ENTRY Tools

ToolDescription
verify_and_admitVerify EXIT marker, evaluate admission policy, create arrival
evaluate_admissionCheck if EXIT marker meets an admission policy
verify_transferVerify a complete EXIT→ENTRY transfer chain
list_admission_policiesList available admission policy presets

⚠️ Security: Admission Policy

IMPORTANT: By default, the server uses STRICT admission policy when no policy is specified by the LLM. This is intentional; an LLM can freely choose the most permissive policy (OPEN_DOOR) or omit the parameter entirely to bypass admission checks.

For production deployments, always set a server-side policy override using one of:

  • Environment variable: CELLAR_DOOR_SERVER_POLICY=STRICT (or EMERGENCY_ONLY)
  • Constructor option: createServer({ serverPolicy: "STRICT" })

When serverPolicy is set, any LLM-provided admissionPolicy parameter is ignored.

PolicyBehavior
OPEN_DOORAccept any departure with a valid signature
STRICTVoluntary only, <24h old, requires lineage + stateSnapshot modules
EMERGENCY_ONLYAccept only emergency exits

Sample Conversation (Claude Desktop)

User: I need to leave Platform X. Can you create a departure record?

Claude: I'll create a signed EXIT marker for your departure from Platform X.

→ Calls: quick_exit({ origin: "did:web:platform-x.example.com", reason: "Migrating to new platform" })

Claude: Here's your signed departure marker:
- ID: exit:abc123...
- Subject: did:key:z6Mk...
- Origin: did:web:platform-x.example.com
- Exit Type: Voluntary
- Signature: ✅ Verified

User: Now verify this on Platform Y and create my arrival.

→ Calls: verify_and_admit({
    exitMarkerJson: "{...}",
    destination: "did:web:platform-y.example.com",
    admissionPolicy: "STRICT"
  })

Claude: ✅ Admitted. Arrival marker created with continuity verified.

Programmatic Usage

import { createServer } from "@cellar-door/mcp-server";

const server = createServer({
  serverPolicy: "STRICT",  // Lock admission policy server-side
});

Example Tool Calls

Quick Exit

{
  "name": "quick_exit",
  "arguments": { "origin": "did:example:my-agent", "reason": "Task complete" }
}

Verify and Admit

{
  "name": "verify_and_admit",
  "arguments": {
    "exitMarkerJson": "{...exit marker JSON...}",
    "destination": "did:example:new-platform",
    "admissionPolicy": "OPEN_DOOR"
  }
}

Verify Transfer

{
  "name": "verify_transfer",
  "arguments": {
    "exitMarkerJson": "{...exit marker...}",
    "arrivalMarkerJson": "{...arrival marker...}"
  }
}

Production Deployment

⚠️ Authentication: The MCP server does not include built-in authentication. In production, deploy behind an authenticated reverse proxy or API gateway. Do not expose MCP tools directly to untrusted clients.

⚠️ Disclaimer

WARNING: Automated admission decisions should be reviewed by platform operators. This integration does not constitute legal advice. Platforms are responsible for their own admission policies and the consequences of admitting agents.

License

Apache-2.0

Reviews

No reviews yet

Sign in to write a review