NestDaddy

CardDAV address books

io.github.ni-c/carddav-mcp · v0.1.4

Read and write CardDAV address books: contacts, groups and photos over the open standard

Connect Runs on your machine

Terminal
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]
claude_desktop_config.json
{
  "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>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "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>"
      }
    }
  }
}
.vscode/mcp.json
{
  "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

NameDescription
CARDDAV_URL
Required
Root of the CardDAV server, e.g. https://dav.example.net. An address book collection URL also works.
CARDDAV_USERNAME
Optional
Account name. Most hosted services want an app-specific password with it.
CARDDAV_PASSWORD
Optional, secret
Password or app-specific password. Deleted from the environment once read.
CARDDAV_TOKEN
Optional, secret
Bearer token, as an alternative to username and password. Not both.
CARDDAV_ADDRESSBOOKS
Optional
Comma-separated address books this server may touch, by path or final path segment. Default: all of them.
CARDDAV_MAX_CONTACTS
Optional
Contacts a listing returns by default, 1 to 500 (default: 100)
CARDDAV_READ_ONLY
Optional
Set to true to register only the read tools (default: false)
CARDDAV_INSECURE_TLS
Optional
Set to true to accept a self-signed certificate on the configured host only (default: false)
CARDDAV_ALLOW_PLAINTEXT
Optional
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_TOOLS
Optional
Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)
CARDDAV_DENY_TOOLS
Optional
Comma-separated tool names or list_* prefixes to remove from whatever the allow list left
ELICITATION
Optional
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)
Packageghcr.io/ni-c/carddav-mcp:0.1.4 (OCI, stdio)
First published22 Oct 2026
Last updated22 Oct 2026
Registry nameio.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.