Read and write CardDAV address books: contacts, groups and photos over the open standard
Connect Runs on your machine
claude mcp add carddav-mcp -e CARDDAV_URL=<CARDDAV_URL> -e CARDDAV_USERNAME=<CARDDAV_USERNAME> -e CARDDAV_PASSWORD=<CARDDAV_PASSWORD> -e CARDDAV_TOKEN=<CARDDAV_TOKEN> -e CARDDAV_ADDRESSBOOKS=<CARDDAV_ADDRESSBOOKS> -e CARDDAV_MAX_CONTACTS=<CARDDAV_MAX_CONTACTS> -e CARDDAV_READ_ONLY=<CARDDAV_READ_ONLY> -e CARDDAV_INSECURE_TLS=<CARDDAV_INSECURE_TLS> -e CARDDAV_ALLOW_PLAINTEXT=<CARDDAV_ALLOW_PLAINTEXT> -e CARDDAV_ALLOW_TOOLS=<CARDDAV_ALLOW_TOOLS> -e CARDDAV_DENY_TOOLS=<CARDDAV_DENY_TOOLS> -e ELICITATION=<ELICITATION> -- npx -y @ni-c/[email protected]
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CARDDAV_URL": "<CARDDAV_URL>",
"CARDDAV_USERNAME": "<CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<CARDDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CARDDAV_URL": "<CARDDAV_URL>",
"CARDDAV_USERNAME": "<CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<CARDDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
{
"servers": {
"carddav-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ni-c/[email protected]"
],
"env": {
"CARDDAV_URL": "<CARDDAV_URL>",
"CARDDAV_USERNAME": "<CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<CARDDAV_DENY_TOOLS>",
"ELICITATION": "<ELICITATION>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
CARDDAV_URLRequired | Root of the CardDAV server, e.g. https://dav.example.net. An address book collection URL also works. |
CARDDAV_USERNAMEOptional | Account name. Most hosted services want an app-specific password with it. |
CARDDAV_PASSWORDOptional, secret | Password or app-specific password. Deleted from the environment once read. |
CARDDAV_TOKENOptional, secret | Bearer token, as an alternative to username and password. Not both. |
CARDDAV_ADDRESSBOOKSOptional | Comma-separated address books this server may touch, by path or final path segment. Default: all of them. |
CARDDAV_MAX_CONTACTSOptional | Contacts a listing returns by default, 1 to 500 (default: 100) |
CARDDAV_READ_ONLYOptional | Set to true to register only the read tools (default: false) |
CARDDAV_INSECURE_TLSOptional | Set to true to accept a self-signed certificate on the configured host only (default: false) |
CARDDAV_ALLOW_PLAINTEXTOptional | Set to true to allow a plain http:// URL to a host that is not loopback, which sends the credentials and every contact unencrypted (default: false) |
CARDDAV_ALLOW_TOOLSOptional | Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools) |
CARDDAV_DENY_TOOLSOptional | Comma-separated tool names or list_* prefixes to remove from whatever the allow list left |
ELICITATIONOptional | Deliberately unprefixed, and reaches every MCP server in the environment. Set to false to make guarded tools use the two-call token instead of a dialog (default: true) |
Details
| Package | @ni-c/[email protected] (NPM, stdio) |
| Package | ghcr.io/ni-c/carddav-mcp:0.1.4 (OCI, stdio) |
| First published | 22 Oct 2026 |
| Last updated | 22 Oct 2026 |
| Registry name | io.github.ni-c/carddav-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
