A Python package for determining platform-specific directories (e.g. user data, config, cache, logs). Handles the differences between macOS, Windows, Linux/Unix, and Android so you don't have to.
from platformdirs import PlatformDirs
dirs = PlatformDirs("MyApp", "MyCompany")
dirs.user_data_dir # ~/.local/share/MyApp (Linux)
dirs.user_config_dir # ~/.config/MyApp (Linux)
dirs.user_cache_dir # ~/.cache/MyApp (Linux)
dirs.user_state_dir # ~/.local/state/MyApp (Linux)
dirs.user_log_dir # ~/.local/state/MyApp/log (Linux)
dirs.user_documents_dir # ~/Documents
dirs.user_downloads_dir # ~/Downloads
dirs.user_runtime_dir # /run/user/<uid>/MyApp (Linux)
For Path objects instead of strings:
from platformdirs import PlatformDirs
dirs = PlatformDirs("MyApp", "MyCompany")
dirs.user_data_path # pathlib.Path('~/.local/share/MyApp')
dirs.user_config_path # pathlib.Path('~/.config/MyApp')
Convenience functions for quick access:
from platformdirs import user_data_dir, user_config_path
user_data_dir("MyApp", "MyCompany") # returns str
user_config_path("MyApp", "MyCompany") # returns pathlib.Path
Application directories — scoped to your app name and version:
user_data_dir, site_data_dir)user_config_dir, site_config_dir)user_preference_dir)user_cache_dir, site_cache_dir)user_state_dir, site_state_dir)user_log_dir, site_log_dir)user_runtime_dir, site_runtime_dir)App dirs have both user_* (per-user, writable) and site_* (system-wide, read-only) variants where applicable.
User media directories — standard user-facing folders, not scoped to app name:
user_documents_dir), Downloads (user_downloads_dir)user_pictures_dir), Videos (user_videos_dir), Music (user_music_dir)user_desktop_dir), Projects (user_projects_dir)user_publicshare_dir), Templates (user_templates_dir)user_fonts_dir) — user-writable font installation directoryuser_bin_dir, site_bin_dir), Applications (user_applications_dir, site_applications_dir)Full documentation is available at platformdirs.readthedocs.io:
Contributions are welcome! See CONTRIBUTING.md for details.
$ claude mcp add platformdirs \
-- python -m otcore.mcp_server <graph>