MCP server for Stalwart CardDAV (axum + rmcp). Bring your own IdP. Self-host.
Quick Install
Copy the config for your editor. Some servers may need additional setup — check the README.
Claude Desktop
Claude Code
Cursor
Add to claude_desktop_config.json:
{
"mcpServers": {
"carddav-mcp": {
"command": "cargo",
"args": [
"run",
"--",
"carddav-mcp"
]
}
}
}
📋 Copy
Run in terminal:
claude mcp add carddav-mcp cargo run -- carddav-mcp
📋 Copy
Add to .cursor/mcp.json:
{
"mcpServers": {
"carddav-mcp": {
"command": "cargo",
"args": [
"run",
"--",
"carddav-mcp"
]
}
}
}
📋 Copy
README Excerpt
`carddav-mcp` is a self-hosted, streamable-HTTP MCP server for per-user address books on [Stalwart](https://stalw.art/) CardDAV. It validates a user's JWT with a Logto-compatible identity provider and forwards that same bearer to Stalwart. It never accepts or stores Basic credentials or app passwords.
Tools (20)
CARDDAV_MCP_AUTHORIZATION_SERVER CARDDAV_MCP_BIND_ADDR CARDDAV_MCP_DAV_MAX_RESPONSE_BYTES CARDDAV_MCP_DCR_CLIENT_ID CARDDAV_MCP_LOG_FORMAT CARDDAV_MCP_METRICS_BIND_ADDR CARDDAV_MCP_OAUTH_REDIRECT_URIS CARDDAV_MCP_RATE_LIMIT_READS_PER_MIN CARDDAV_MCP_RATE_LIMIT_WRITES_PER_MIN CARDDAV_MCP_RESOURCE_URL CARDDAV_MCP_STALWART_AUDIENCE CARDDAV_MCP_STALWART_CONNECT_IP CARDDAV_MCP_STALWART_DAV_BASE_URL CARDDAV_MCP_TRUSTED_PROXY_HOPS OTEL_EXPORTER_OTLP_ENDPOINT RUST_LOG create_contact list_address_books list_contacts search_contacts