carddav-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CARDDAV_URL | Yes | Root of the CardDAV server, e.g. https://dav.example.net. An address book collection URL works too and limits the server to that one book. | |
| ELICITATION | No | Not prefixed. false makes guarded tools use the two-call token instead of a dialog. Default true. | true |
| CARDDAV_TOKEN | No | Bearer token instead of username and password. Not both. | |
| CARDDAV_PASSWORD | No | Password or app-specific password. Required with CARDDAV_USERNAME unless CARDDAV_TOKEN is used. Deleted from the environment once read. | |
| CARDDAV_USERNAME | No | Account name. Required with CARDDAV_PASSWORD unless CARDDAV_TOKEN is used. | |
| CARDDAV_READ_ONLY | No | Set to true registers only the read tools. Default false. | false |
| CARDDAV_DENY_TOOLS | No | Subtracted from whatever the allow list left. | |
| CARDDAV_ALLOW_TOOLS | No | Tool names, a prefix with one trailing *, or 'essential'. Default: all tools. | |
| CARDDAV_ADDRESSBOOKS | No | Comma-separated address books this server may touch, by path or final path segment. Default: every book the account can see. | |
| CARDDAV_INSECURE_TLS | No | Set to true accepts a self-signed certificate on the configured host only. Default false. | false |
| CARDDAV_MAX_CONTACTS | No | Contacts a listing returns by default, 1–500. Default 100. | 100 |
| CARDDAV_ALLOW_PLAINTEXT | No | Set to true allows a plain http:// URL to a host that is not loopback, sending credentials and contacts unencrypted. Otherwise such a URL refuses to start. Default false. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_address_booksA | Every address book this server may use, with the id to pass to the other tools. Always asks the server rather than answering from a cache — being current is this tool’s whole job. |
| get_server_infoA | Reports the DAV compliance tokens, which vCard versions each address book accepts, and whether the optional features this server relies on actually work here. The first thing to run when something behaves differently than expected — CardDAV implementations differ more than the specification suggests. |
| list_contactsA | Contacts in one or more address books, as short summaries: name, organisation, addresses and phone numbers, and whether a photo is present. Only the summary properties are fetched, so this stays cheap on a large address book — get_contact returns the whole card. |
| get_contactA | The complete card behind an id: every address, every phone number, the note, the birthday, and the names of any properties this server does not model. The free text comes back inside a fence marking it as somebody else’s writing. |
| search_contactsA | Finds contacts whose name, organisation, email address, phone number or note contains a term. One request per address book — CardDAV combines the fields with OR, unlike CalDAV — and the result is checked again here, because some servers filter only partially. |
| get_contact_photoA | Returns the photo stored on a card as an image. Only a photo embedded in the card itself — one stored as a link is reported by get_contact and never fetched, because that address was chosen by whoever wrote the card. |
| export_contactsA | The raw vCard text of one or more contacts, exactly as stored. The only way to see a property this server does not model, and the only way to take a backup of an address book from here. |
| list_changesA | Cards created, changed or deleted since a sync token, using RFC 6578. Call it once without a token to get the current token, then again later with it. Not every server implements this — get_server_info reports whether this one does. |
| list_groupsA | Groups in one or more address books, with how many members each has. The members themselves are not resolved here — that is one extra request per book, and get_group is where a caller has said they want the names. |
| get_groupA | A group card and the contacts in it, resolved to names and ids where the members live in the same address book. A member this server cannot resolve is still reported, as the reference the card holds. |
| create_contactA | Adds a card to an address book. The UID and the file name are generated here. The vCard version follows what the address book accepts — 3.0 unless it says otherwise, because that is what phones and desktop clients read completely. |
| update_contactA | Changes the fields named and leaves everything else exactly as it was — including properties this server does not model. Guarded by the card’s ETag, so a change made elsewhere in the meantime is refused rather than overwritten. A CardDAV server keeps no version history, so a person is asked first. |
| delete_contactA | Removes a card. Cannot be undone — a CardDAV server has no trash and no version history. Guarded by the card’s ETag, so a card changed since it was read is refused rather than deleted blind. |
| move_contactA | Copies a card into another address book and removes it from the first. The id changes, because an id names a card in a collection. There is no transaction behind this: the copy is verified before the original is removed. |
| create_groupA | Creates a group card and puts the named contacts in it. The convention follows whatever groups the address book already uses, because a group written the other way is invisible in the client the person is actually looking at. |
| update_groupA | Changes a group’s name or note, and adds or removes members. Removing a member removes the grouping only — the contact itself is untouched. A CardDAV server keeps no version history, so a person is asked first. |
| delete_groupA | Removes a group card. The contacts that were in it are not touched — only the grouping goes. Cannot be undone. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/carddav-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server