Use CARDDAV_URL as address book URL
All checks were successful
Build And Test / publish (push) Successful in 49s

This commit is contained in:
2026-01-01 15:56:38 -08:00
parent bd8e1412e4
commit 64af784998
4 changed files with 6 additions and 13 deletions

View File

@@ -51,10 +51,9 @@ CALDAV_PASSWORD=your-caldav-password
# - Nextcloud: https://cloud.example.com/remote.php/dav # - Nextcloud: https://cloud.example.com/remote.php/dav
# - Fastmail: https://carddav.fastmail.com/dav/addressbooks/user/you@fastmail.com # - Fastmail: https://carddav.fastmail.com/dav/addressbooks/user/you@fastmail.com
# - Radicale: https://radicale.example.com/user/ # - Radicale: https://radicale.example.com/user/
CARDDAV_URL=https://carddav.example.com/dav CARDDAV_URL=https://carddav.example.com/dav/addressbooks/users/user@example.com/contacts/
CARDDAV_USERNAME=user@example.com CARDDAV_USERNAME=user@example.com
CARDDAV_PASSWORD=your-carddav-password CARDDAV_PASSWORD=your-carddav-password
CONTACTS_ADDRESSBOOK_URL=https://carddav.example.com/dav/addressbooks/users/user@example.com/contacts/
# ============================================================================= # =============================================================================
# Cache Configuration # Cache Configuration

View File

@@ -91,13 +91,12 @@ ICS_CALENDAR_TIMEOUT=20
ICS_CALENDARS=Team|https://example.com/team.ics,Family|https://example.com/family.ics ICS_CALENDARS=Team|https://example.com/team.ics,Family|https://example.com/family.ics
ICS_CALENDAR_TIMEOUT=20 ICS_CALENDAR_TIMEOUT=20
CARDDAV_URL=https://carddav.example.com/dav CARDDAV_URL=https://carddav.example.com/dav/addressbooks/users/you@example.com/contacts/
CARDDAV_USERNAME=you@example.com CARDDAV_USERNAME=you@example.com
CARDDAV_PASSWORD=your-password CARDDAV_PASSWORD=your-password
CONTACTS_ADDRESSBOOK_URL=https://carddav.example.com/dav/addressbooks/users/you@example.com/contacts/
``` ```
Contacts tools always use `CONTACTS_ADDRESSBOOK_URL` (full CardDAV address book URL). Listing address books is not exposed via MCP. Contacts tools always use `CARDDAV_URL` as the full CardDAV address book URL. Listing address books is not exposed via MCP.
ICS calendars are optional and read-only. Set `ICS_CALENDARS` to a comma-separated list of entries, each as `name|url` or just `url` if you want the name inferred. ICS calendars are optional and read-only. Set `ICS_CALENDARS` to a comma-separated list of entries, each as `name|url` or just `url` if you want the name inferred.

View File

@@ -40,10 +40,6 @@ class Settings(BaseSettings):
carddav_url: Optional[str] = Field(default=None, alias="CARDDAV_URL") carddav_url: Optional[str] = Field(default=None, alias="CARDDAV_URL")
carddav_username: Optional[str] = Field(default=None, alias="CARDDAV_USERNAME") carddav_username: Optional[str] = Field(default=None, alias="CARDDAV_USERNAME")
carddav_password: Optional[SecretStr] = Field(default=None, alias="CARDDAV_PASSWORD") carddav_password: Optional[SecretStr] = Field(default=None, alias="CARDDAV_PASSWORD")
contacts_addressbook_url: Optional[str] = Field(
default=None,
alias="CONTACTS_ADDRESSBOOK_URL",
)
# SQLite Cache # SQLite Cache
sqlite_path: str = Field(default="/data/cache.db", alias="SQLITE_PATH") sqlite_path: str = Field(default="/data/cache.db", alias="SQLITE_PATH")
@@ -154,7 +150,6 @@ class Settings(BaseSettings):
self.carddav_url, self.carddav_url,
self.carddav_username, self.carddav_username,
self.carddav_password, self.carddav_password,
self.contacts_addressbook_url,
]) ])
def is_notification_configured(self) -> bool: def is_notification_configured(self) -> bool:

View File

@@ -495,6 +495,6 @@ class ContactsService:
def _resolve_addressbook_id(self, addressbook_id: Optional[str]) -> str: def _resolve_addressbook_id(self, addressbook_id: Optional[str]) -> str:
if addressbook_id: if addressbook_id:
return addressbook_id return addressbook_id
if self.settings.contacts_addressbook_url: if self.settings.carddav_url:
return self.settings.contacts_addressbook_url return self.settings.carddav_url
raise ValueError("CONTACTS_ADDRESSBOOK_URL must be set to use contacts tools") raise ValueError("CARDDAV_URL must be set to use contacts tools")