CardDAV address books
Rank #9,873io.github.ni-c/carddav-mcp
Read and write CardDAV address books: contacts, groups and photos over the open standard
CardDAV address books is a Model Context Protocol (MCP) server published by ni-c. It ranks #9,873 of 132,046 servers tracked on MCP Toplist. CardDAV address books is listed across 2 registries — Official MCP and Glama, with 4 tracked versions. It was first listed on Sep 6, 2026 and most recently updated on Sep 8, 2026.
Ranks ahead of 122,173 of 132,046 servers on MCP Toplist.
Use CardDAV address books
Requires user-supplied configuration before first use — typically an API key, token or connection string set via environment variables.
claude mcp add carddav-mcp -e "CARDDAV_URL=<your CARDDAV_URL>" -e "CARDDAV_USERNAME=<your CARDDAV_USERNAME>" -e "CARDDAV_PASSWORD=<your CARDDAV_PASSWORD>" -e "CARDDAV_TOKEN=<your CARDDAV_TOKEN>" -e "CARDDAV_ADDRESSBOOKS=<your CARDDAV_ADDRESSBOOKS>" -e "CARDDAV_MAX_CONTACTS=<your CARDDAV_MAX_CONTACTS>" -e "CARDDAV_READ_ONLY=<your CARDDAV_READ_ONLY>" -e "CARDDAV_INSECURE_TLS=<your CARDDAV_INSECURE_TLS>" -e "CARDDAV_ALLOW_PLAINTEXT=<your CARDDAV_ALLOW_PLAINTEXT>" -e "CARDDAV_ALLOW_TOOLS=<your CARDDAV_ALLOW_TOOLS>" -e "CARDDAV_DENY_TOOLS=<your CARDDAV_DENY_TOOLS>" -e "ELICITATION=<your ELICITATION>" -- npx -y @ni-c/carddav-mcpReplace each placeholder with your own value before saving.
claude mcp add carddav-mcp -e "CARDDAV_URL=<your CARDDAV_URL>" -e "CARDDAV_USERNAME=<your CARDDAV_USERNAME>" -e "CARDDAV_PASSWORD=<your CARDDAV_PASSWORD>" -e "CARDDAV_TOKEN=<your CARDDAV_TOKEN>" -e "CARDDAV_ADDRESSBOOKS=<your CARDDAV_ADDRESSBOOKS>" -e "CARDDAV_MAX_CONTACTS=<your CARDDAV_MAX_CONTACTS>" -e "CARDDAV_READ_ONLY=<your CARDDAV_READ_ONLY>" -e "CARDDAV_INSECURE_TLS=<your CARDDAV_INSECURE_TLS>" -e "CARDDAV_ALLOW_PLAINTEXT=<your CARDDAV_ALLOW_PLAINTEXT>" -e "CARDDAV_ALLOW_TOOLS=<your CARDDAV_ALLOW_TOOLS>" -e "CARDDAV_DENY_TOOLS=<your CARDDAV_DENY_TOOLS>" -e "ELICITATION=<your ELICITATION>" -- docker run -i --rm ghcr.io/ni-c/carddav-mcp:0.1.3Replace each placeholder with your own value before saving.
[mcp_servers.carddav-mcp]
command = "npx"
args = ["-y", "@ni-c/carddav-mcp"]
[mcp_servers.carddav-mcp.env]
CARDDAV_URL = "<your CARDDAV_URL>"
CARDDAV_USERNAME = "<your CARDDAV_USERNAME>"
CARDDAV_PASSWORD = "<your CARDDAV_PASSWORD>"
CARDDAV_TOKEN = "<your CARDDAV_TOKEN>"
CARDDAV_ADDRESSBOOKS = "<your CARDDAV_ADDRESSBOOKS>"
CARDDAV_MAX_CONTACTS = "<your CARDDAV_MAX_CONTACTS>"
CARDDAV_READ_ONLY = "<your CARDDAV_READ_ONLY>"
CARDDAV_INSECURE_TLS = "<your CARDDAV_INSECURE_TLS>"
CARDDAV_ALLOW_PLAINTEXT = "<your CARDDAV_ALLOW_PLAINTEXT>"
CARDDAV_ALLOW_TOOLS = "<your CARDDAV_ALLOW_TOOLS>"
CARDDAV_DENY_TOOLS = "<your CARDDAV_DENY_TOOLS>"
ELICITATION = "<your ELICITATION>"Add to ~/.codex/config.toml. Replace each placeholder with your own value before saving.
[mcp_servers.carddav-mcp]
command = "docker"
args = ["run", "-i", "--rm", "ghcr.io/ni-c/carddav-mcp:0.1.3"]
[mcp_servers.carddav-mcp.env]
CARDDAV_URL = "<your CARDDAV_URL>"
CARDDAV_USERNAME = "<your CARDDAV_USERNAME>"
CARDDAV_PASSWORD = "<your CARDDAV_PASSWORD>"
CARDDAV_TOKEN = "<your CARDDAV_TOKEN>"
CARDDAV_ADDRESSBOOKS = "<your CARDDAV_ADDRESSBOOKS>"
CARDDAV_MAX_CONTACTS = "<your CARDDAV_MAX_CONTACTS>"
CARDDAV_READ_ONLY = "<your CARDDAV_READ_ONLY>"
CARDDAV_INSECURE_TLS = "<your CARDDAV_INSECURE_TLS>"
CARDDAV_ALLOW_PLAINTEXT = "<your CARDDAV_ALLOW_PLAINTEXT>"
CARDDAV_ALLOW_TOOLS = "<your CARDDAV_ALLOW_TOOLS>"
CARDDAV_DENY_TOOLS = "<your CARDDAV_DENY_TOOLS>"
ELICITATION = "<your ELICITATION>"Add to ~/.codex/config.toml. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/carddav-mcp"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to claude_desktop_config.json (Settings → Developer → Edit Config). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ni-c/carddav-mcp:0.1.3"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to claude_desktop_config.json (Settings → Developer → Edit Config). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/carddav-mcp"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ni-c/carddav-mcp:0.1.3"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Replace each placeholder with your own value before saving.
{
"servers": {
"carddav-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ni-c/carddav-mcp"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Save as .vscode/mcp.json in your workspace. Replace each placeholder with your own value before saving.
{
"servers": {
"carddav-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ni-c/carddav-mcp:0.1.3"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Save as .vscode/mcp.json in your workspace. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/carddav-mcp"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ni-c/carddav-mcp:0.1.3"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json. Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "npx",
"args": [
"-y",
"@ni-c/carddav-mcp"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Replace each placeholder with your own value before saving.
{
"mcpServers": {
"carddav-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/ni-c/carddav-mcp:0.1.3"
],
"env": {
"CARDDAV_URL": "<your CARDDAV_URL>",
"CARDDAV_USERNAME": "<your CARDDAV_USERNAME>",
"CARDDAV_PASSWORD": "<your CARDDAV_PASSWORD>",
"CARDDAV_TOKEN": "<your CARDDAV_TOKEN>",
"CARDDAV_ADDRESSBOOKS": "<your CARDDAV_ADDRESSBOOKS>",
"CARDDAV_MAX_CONTACTS": "<your CARDDAV_MAX_CONTACTS>",
"CARDDAV_READ_ONLY": "<your CARDDAV_READ_ONLY>",
"CARDDAV_INSECURE_TLS": "<your CARDDAV_INSECURE_TLS>",
"CARDDAV_ALLOW_PLAINTEXT": "<your CARDDAV_ALLOW_PLAINTEXT>",
"CARDDAV_ALLOW_TOOLS": "<your CARDDAV_ALLOW_TOOLS>",
"CARDDAV_DENY_TOOLS": "<your CARDDAV_DENY_TOOLS>",
"ELICITATION": "<your ELICITATION>"
}
}
}
}Replace each placeholder with your own value before saving.
Show your rank
Maintain this server? Add the live rank badge to your README — it updates automatically as the leaderboard changes.
[](https://mcptoplist.com/server/io.github.ni-c%2Fcarddav-mcp)<a href="https://mcptoplist.com/server/io.github.ni-c%2Fcarddav-mcp"><img src="https://mcptoplist.com/badge/io.github.ni-c%2Fcarddav-mcp.svg" alt="MCP Toplist: Top 10% of 132,046" /></a>Variants: append ?metric=score or ?metric=stars to the image URL.
Listed on 2 registries
ni-c
Other servers by ni-c
- mcp-hub#3,790 · 16 vers
- FreshRSS#5,244 · 9 vers
- Hetzner DNS#5,552 · 9 vers
- wg-easy#5,639 · 8 vers
- Audiobookshelf#5,866 · 7 vers
- Linkwarden#5,867 · 7 vers
- Opengist#5,924 · 7 vers
- Calibre-Web#6,360 · 6 vers
- Mealie MCP Server#6,557 · 5 vers
- OpenStreetMap#6,697 · 5 vers
- Rustpad MCP Server#6,786 · 5 vers
- Wiki.js#6,813 · 5 vers
Available versions (4)
| Version | Published |
|---|---|
| 0.1.3 | Sep 8, 2026 |
| 0.1.2 | Sep 7, 2026 |
| 0.1.1 | Sep 6, 2026 |
| 0.1.0 | Sep 6, 2026 |
Frequently asked questions
- Who maintains CardDAV address books?
- CardDAV address books is maintained by ni-c, which publishes 20 MCP servers (118 total versions) tracked on MCP Toplist.
- Is CardDAV address books listed on the Official MCP Registry?
- Yes — CardDAV address books is listed on the Official MCP Registry, alongside Glama.
- How many versions does CardDAV address books have?
- MCP Toplist tracks 4 versions of CardDAV address books, most recently published on Sep 8, 2026.
- Where can I find the source code for CardDAV address books?
- The source code for CardDAV address books is hosted at github.com/ni-c/carddav-mcp.
Do you run this server?
Community projects list the MCP servers behind real agents and apps. Publish yours and this page will link to it.