{"name":"io.github.ni-c/carddav-mcp","slug":"ni-c-carddav-mcp","title":"CardDAV address books","description":"Read and write CardDAV address books: contacts, groups and photos over the open standard","url":"https://mcp.market/server/ni-c-carddav-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":27,"stars":0,"forks":0,"downloads_week":76,"last_push_at":"2026-09-19T22:39:42.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ni-c/carddav-mcp","website":"https://carddav-mcp.ni-c.de","version":"0.1.3","remotes":[],"packages":[{"registryType":"npm","identifier":"@ni-c/carddav-mcp","version":"0.1.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Root of the CardDAV server, e.g. https://dav.example.net. An address book collection URL also works.","isRequired":true,"format":"string","name":"CARDDAV_URL"},{"description":"Account name. Most hosted services want an app-specific password with it.","format":"string","name":"CARDDAV_USERNAME"},{"description":"Password or app-specific password. Deleted from the environment once read.","format":"string","isSecret":true,"name":"CARDDAV_PASSWORD"},{"description":"Bearer token, as an alternative to username and password. Not both.","format":"string","isSecret":true,"name":"CARDDAV_TOKEN"},{"description":"Comma-separated address books this server may touch, by path or final path segment. Default: all of them.","format":"string","name":"CARDDAV_ADDRESSBOOKS"},{"description":"Contacts a listing returns by default, 1 to 500 (default: 100)","format":"number","name":"CARDDAV_MAX_CONTACTS"},{"description":"Set to true to register only the read tools (default: false)","format":"boolean","name":"CARDDAV_READ_ONLY"},{"description":"Set to true to accept a self-signed certificate on the configured host only (default: false)","format":"boolean","name":"CARDDAV_INSECURE_TLS"},{"description":"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)","format":"boolean","name":"CARDDAV_ALLOW_PLAINTEXT"},{"description":"Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)","format":"string","name":"CARDDAV_ALLOW_TOOLS"},{"description":"Comma-separated tool names or list_* prefixes to remove from whatever the allow list left","format":"string","name":"CARDDAV_DENY_TOOLS"},{"description":"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)","format":"boolean","name":"ELICITATION"}]},{"registryType":"oci","identifier":"ghcr.io/ni-c/carddav-mcp:0.1.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Root of the CardDAV server, e.g. https://dav.example.net. An address book collection URL also works.","isRequired":true,"format":"string","name":"CARDDAV_URL"},{"description":"Account name. Most hosted services want an app-specific password with it.","format":"string","name":"CARDDAV_USERNAME"},{"description":"Password or app-specific password. Deleted from the environment once read.","format":"string","isSecret":true,"name":"CARDDAV_PASSWORD"},{"description":"Bearer token, as an alternative to username and password. Not both.","format":"string","isSecret":true,"name":"CARDDAV_TOKEN"},{"description":"Comma-separated address books this server may touch, by path or final path segment. Default: all of them.","format":"string","name":"CARDDAV_ADDRESSBOOKS"},{"description":"Contacts a listing returns by default, 1 to 500 (default: 100)","format":"number","name":"CARDDAV_MAX_CONTACTS"},{"description":"Set to true to register only the read tools (default: false)","format":"boolean","name":"CARDDAV_READ_ONLY"},{"description":"Set to true to accept a self-signed certificate on the configured host only (default: false)","format":"boolean","name":"CARDDAV_INSECURE_TLS"},{"description":"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)","format":"boolean","name":"CARDDAV_ALLOW_PLAINTEXT"},{"description":"Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)","format":"string","name":"CARDDAV_ALLOW_TOOLS"},{"description":"Comma-separated tool names or list_* prefixes to remove from whatever the allow list left","format":"string","name":"CARDDAV_DENY_TOOLS"},{"description":"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)","format":"boolean","name":"ELICITATION"}]}],"tools":[{"name":"create_contact","description":"Adds a card to an address book. The UID and the file name are","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_group","description":"Creates a group card and puts the named contacts in it. The","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_contact","description":"Removes a card. Cannot be undone — a CardDAV server has no trash and","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_group","description":"Removes a group card. The contacts that were in it are not touched","write_action":true,"price_micros":0,"input_schema":null},{"name":"export_contacts","description":"The raw vCard text of one or more contacts, exactly as stored. The","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_contact","description":"The complete card behind an id: every address, every phone number,","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_contact_photo","description":"Returns the photo stored on a card as an image. Only a photo","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_group","description":"A group card and the contacts in it, resolved to names and ids where","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_server_info","description":"Reports the DAV compliance tokens, which vCard versions each address","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_address_books","description":"Every address book this server may use, with the id to pass to the","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_changes","description":"Cards created, changed or deleted since a sync token, using RFC","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_contacts","description":"Contacts in one or more address books, as short summaries: name,","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_groups","description":"Groups in one or more address books, with how many members each has.","write_action":false,"price_micros":0,"input_schema":null},{"name":"move_contact","description":"Copies a card into another address book and removes it from the","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_contacts","description":"Finds contacts whose name, organisation, email address, phone","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_contact","description":"Changes the fields named and leaves everything else exactly as it","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_group","description":"Changes a group’s name or note, and adds or removes members.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T00:24:06.498Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:24:06.499Z","components":{"code":{"score":25,"max":25,"notes":["53 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@ni-c/carddav-mcp","version":"0.1.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":8,"publishedAt":"2026-09-08T13:30:13.504Z","repositoryUrl":"git+https://github.com/ni-c/carddav-mcp.git","weeklyDownloads":76}],"repo":{"found":true,"owner":"ni-c","repo":"carddav-mcp","archived":false,"pushedAt":"2026-09-19T22:39:42Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/283341?v=4","ownerCreatedAt":"2010-05-21T13:00:22Z","license":"MIT"},"icon":{"url":"https://carddav-mcp.ni-c.de/icon-512.png","source":"registry","width":512,"height":512},"presence":{"stars":0,"forks":0,"downloadsWeek":76,"license":"MIT","lastPushAt":"2026-09-19T22:39:42.000Z","score":27}}}},"grade_history":[],"reviews":[]}