Skip to content

MCP

Security: To verify the container’s authenticity and inspect its SBOM, see the Attestation & Verification Guide.

The Model Context Protocol (MCP) is an open protocol that standardizes how AI assistants communicate with data sources and tools. The Subnoto MCP Server implements this protocol to allow AI assistants like Claude Desktop and Cursor to interact with Subnoto’s signature services.

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
"mcpServers": {
"subnoto": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"API_ACCESS_KEY",
"-e",
"API_SECRET_KEY",
"subnoto/mcp-server:latest"
],
"env": {
"MCP_TRANSPORT": "stdio",
"API_ACCESS_KEY": "your_access_key_here",
"API_SECRET_KEY": "your_secret_key_here"
}
}
}
}

Add to your Cursor MCP configuration (~/.cursor/mcp.json):

{
"mcpServers": {
"subnoto": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT",
"-e",
"API_ACCESS_KEY",
"-e",
"API_SECRET_KEY",
"subnoto/mcp-server:latest"
],
"env": {
"MCP_TRANSPORT": "stdio",
"API_ACCESS_KEY": "your_access_key_here",
"API_SECRET_KEY": "your_secret_key_here"
}
}
}
}

The stdio transport is designed for integration with AI assistants like Claude Desktop and Cursor:

Terminal window
docker run -i --rm \
-e MCP_TRANSPORT=stdio \
-e API_ACCESS_KEY=your_access_key_here \
-e API_SECRET_KEY=your_secret_key_here \
subnoto/mcp-server:latest

Note: This mode is interactive and expects MCP protocol messages on stdin. It’s meant to be used by AI tools, not directly by users.

For web-based integrations, use the HTTP transport:

Terminal window
docker run -p 8080:8080 --rm \
-e API_ACCESS_KEY=your_access_key_here \
-e API_SECRET_KEY=your_secret_key_here \
subnoto/mcp-server:latest

The MCP server will be available at http://localhost:8080/mcp.

Mac users (Apple Silicon): If you encounter connection issues, explicitly bind to localhost and specify the platform:

Terminal window
docker run --platform linux/amd64 -p 127.0.0.1:8080:8080 --rm \
-e API_ACCESS_KEY=your_access_key_here \
-e API_SECRET_KEY=your_secret_key_here \
subnoto/mcp-server:latest

The MCP server supports two authentication methods:

  • API Keys — Static access key + secret key pair. See Create API keys.
  • SPIFFE Agent Auth — Short-lived JWT SVIDs from your SPIRE infrastructure. See Agent Authentication for setup and configuration, including Workload API integration for automatic token rotation.

The MCP server automatically exposes all Subnoto public API endpoints as MCP tools. Common tools include:

  • workspace_list - List all workspaces
  • utils_whoami - Get authenticated user information

The MCP server supports the following environment variables:

VariableDescriptionDefaultRequired
MCP_TRANSPORTTransport mode: stdio or httphttpNo
API_ACCESS_KEYSubnoto API access key-Yes*
API_SECRET_KEYSubnoto API secret key-Yes*
SPIFFE_ENDPOINT_SOCKETPath to SPIRE Workload API Unix socket-No*
SPIFFE_JWT_SVIDStatic JWT SVID string-No*
SPIFFE_JWT_SVID_PATHPath to a file containing a JWT SVID-No*
SPIFFE_AUDIENCEComma-separated JWT audience valuessubnoto.comNo
API_BASE_URLSubnoto API base URLhttps://enclave.subnoto.comNo
DISABLE_ATTESTATIONDisable attestation verificationfalseNo
ATTESTATION_PUBLIC_KEYSBase64-encoded attestation public keys-No
OPENAPI_PATHPath to OpenAPI schema/app/public-openapi.jsonNo

* Provide either API_ACCESS_KEY+API_SECRET_KEY or one of the SPIFFE options. Priority: SPIFFE_ENDPOINT_SOCKET > SPIFFE_JWT_SVID > SPIFFE_JWT_SVID_PATH > API keys.

Once configured, you can interact with the MCP server through your AI assistant. For example, in Claude Desktop or Cursor:

User: “List all my signature templates”

AI Assistant: Uses the template_list tool to fetch templates

User: “Create an envelope from the NDA template for [email protected]

AI Assistant: Uses envelope_create-from-template and envelope_add-recipients tools

User: “Send the envelope”

AI Assistant: Uses the envelope_send tool