{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.ni-c/carddav-mcp","description":"Read and write CardDAV address books: contacts, groups and photos over the open standard","title":"CardDAV address books","repository":{"url":"https://github.com/ni-c/carddav-mcp","source":"github"},"version":"0.1.2","websiteUrl":"https://carddav-mcp.ni-c.de","icons":[{"src":"https://carddav-mcp.ni-c.de/icon-512.png","mimeType":"image/png","sizes":["512x512"]},{"src":"https://carddav-mcp.ni-c.de/favicon.svg","mimeType":"image/svg+xml","sizes":["any"]}],"packages":[{"registryType":"npm","identifier":"@ni-c/carddav-mcp","version":"0.1.2","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.2","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"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-07T19:12:51.589337Z","publishedAt":"2026-09-07T19:12:51.589337Z","updatedAt":"2026-09-07T19:12:51.589337Z","isLatest":false}}}
