Commit Graph

  • e68d4a80e4 refactor: simplify path validation and connection_init via shared helpers feat/google-oauth Jacob Magar 2026-03-23 11:57:00 -04:00
  • dc1e5f18d8 docs: add CHANGELOG.md covering v0.1.0 through v1.1.2 Jacob Magar 2026-03-23 11:38:27 -04:00
  • 2b777be927 fix(security): path traversal, timing-safe auth, stale credential bindings Jacob Magar 2026-03-23 11:37:05 -04:00
  • d59f8c22a8 docs: rename GOOGLE_OAUTH.md → AUTHENTICATION.md, update references Jacob Magar 2026-03-16 11:12:25 -04:00
  • cc24f1ec62 feat: add API key bearer token authentication Jacob Magar 2026-03-16 11:11:38 -04:00
  • 6f7a58a0f9 docs: add Google OAuth setup guide and update README/CLAUDE.md Jacob Magar 2026-03-16 10:59:30 -04:00
  • 440245108a fix(tests): clear subscription_configs before auto-start tests to account for default SNAPSHOT_ACTIONS Jacob Magar 2026-03-16 10:54:43 -04:00
  • 9754261402 fix(auth): use setenv('') instead of delenv to prevent dotenv re-injection in tests Jacob Magar 2026-03-16 10:51:14 -04:00
  • 9e9915b2fa docs(auth): document Google OAuth setup in CLAUDE.md Jacob Magar 2026-03-16 10:48:38 -04:00
  • 2ab61be2df feat(auth): wire GoogleProvider into FastMCP, log auth status on startup Jacob Magar 2026-03-16 10:42:51 -04:00
  • b319cf4932 fix(auth): use dict[str, Any] for kwargs, add typing.Any import Jacob Magar 2026-03-16 10:40:29 -04:00
  • 0f46cb9713 test(auth): add _build_google_auth() unit tests and bump to v1.1.1 Jacob Magar 2026-03-16 10:37:52 -04:00
  • 1248ccd53e fix(auth): hoist _build_google_auth import to module level for ty compatibility Jacob Magar 2026-03-16 10:37:36 -04:00
  • 4a1ffcfd51 feat(auth): add _build_google_auth() builder with stdio warning Jacob Magar 2026-03-16 10:36:41 -04:00
  • f69aa94826 feat(dx): add fastmcp.json configs, module-level tool registration, tool timeout Jacob Magar 2026-03-16 10:32:16 -04:00
  • 5187cf730f fix(auth): use Any return type in _reload_settings for ty compatibility Jacob Magar 2026-03-16 10:29:56 -04:00
  • 896fc8db1b feat(auth): add Google OAuth settings with is_google_auth_configured() Jacob Magar 2026-03-16 10:28:53 -04:00
  • 7db878b80b docs: fix stale references in CLAUDE.md post-consolidation refactor refactor/consolidate-unified-tool Jacob Magar 2026-03-16 10:21:58 -04:00
  • 3888b9cb4a fix: address markdown lint and doc accuracy issues (threads 6-13) Jacob Magar 2026-03-16 10:01:25 -04:00
  • cf9449a15d fix: address 18 PR review comments (threads 1-18) Jacob Magar 2026-03-16 10:01:12 -04:00
  • 884319ab11 fix: address 14 PR review comments from coderabbitai/chatgpt-codex Jacob Magar 2026-03-16 03:10:01 -04:00
  • efaab031ae fix: address all 17 PR review comments Jacob Magar 2026-03-16 02:58:54 -04:00
  • dab1cd6995 refactor(tools)!: consolidate 15 individual tools into single unified unraid tool Jacob Magar 2026-03-16 02:29:57 -04:00
  • faf9fb9ad7 fix(guards): use Pydantic model for elicitation to get labeled checkbox instead of 'Value: []' Jacob Magar 2026-03-15 23:48:53 -04:00
  • fe7b6485fd chore: ruff format types.py (pre-existing unformatted file) Jacob Magar 2026-03-15 23:40:27 -04:00
  • d7545869e2 feat(guards): wire elicitation into notifications/vm/rclone/settings/storage Jacob Magar 2026-03-15 23:38:20 -04:00
  • cdab970c12 refactor(guards): migrate array/keys/plugins to gate_destructive_action Jacob Magar 2026-03-15 23:33:07 -04:00
  • 80d2dd39ee refactor(guards): remove elicit_destructive_confirmation from setup.py (moved to guards.py) Jacob Magar 2026-03-15 23:29:22 -04:00
  • aa5fa3e177 feat(guards): add core/guards.py with gate_destructive_action helper Jacob Magar 2026-03-15 23:25:39 -04:00
  • a3ea468bd9 fix(tools): remove 10 dead actions referencing mutations absent from live API main Jacob Magar 2026-03-15 23:22:33 -04:00
  • 4b43c47091 fix(tools): remove 10 dead actions referencing mutations absent from live API Jacob Magar 2026-03-15 23:21:25 -04:00
  • c37d4b1c5a fix(subscriptions): use x-api-key connectionParams format for WebSocket auth Jacob Magar 2026-03-15 22:56:58 -04:00
  • 06368ce156 chore: bump version to 0.6.0 Jacob Magar 2026-03-15 22:33:16 -04:00
  • 9249950dff fix(tests): remove http_layer and property tests for removed actions Jacob Magar 2026-03-15 22:10:50 -04:00
  • 16bb5a6146 fix(storage): remove unassigned action (unassignedDevices not in live API) Jacob Magar 2026-03-15 21:59:06 -04:00
  • 83df768135 fix(notifications): remove warnings action (warningsAndAlerts not in live API) Jacob Magar 2026-03-15 21:58:56 -04:00
  • 569956ade0 fix(docker): remove 19 stale actions absent from live API v4.29.2 Jacob Magar 2026-03-15 21:58:50 -04:00
  • f5978d67ec feat(resources): add unraid://live/{action} MCP resources for 9 snapshot subscriptions Jacob Magar 2026-03-15 21:51:20 -04:00
  • 7c99fe1527 refactor(subscriptions): extract SNAPSHOT_ACTIONS/COLLECT_ACTIONS to subscriptions/queries.py Jacob Magar 2026-03-15 21:43:18 -04:00
  • e87a33ef1a test(safety): add strict no-GraphQL-call and non-destructive regression tests Jacob Magar 2026-03-15 20:16:23 -04:00
  • 389b88f560 feat(settings): add update_ssh action with confirm=True guard Jacob Magar 2026-03-15 20:13:51 -04:00
  • 94850333e8 fix(safety): add stop_array to DESTRUCTIVE_ACTIONS, add error propagation test Jacob Magar 2026-03-15 20:02:33 -04:00
  • 252ec520d1 fix(lint): remove __future__ annotations from new tools, fix 4 failing tests Jacob Magar 2026-03-15 19:57:46 -04:00
  • 1f35c20cdf chore: update schema tests, docs, bump version to 0.5.0 Jacob Magar 2026-03-15 19:42:05 -04:00
  • b68347bc1e refactor(tests): remove duplicate fixture in test_array.py, unify on _mock_graphql Jacob Magar 2026-03-15 19:32:17 -04:00
  • 6eafc16af7 feat(oidc): add unraid_oidc tool with providers, provider, configuration, public_providers, validate_session Jacob Magar 2026-03-15 19:30:22 -04:00
  • ebba60c095 fix(types): suppress ty union-attr false positives on elicitation result.data access Jacob Magar 2026-03-15 19:27:43 -04:00
  • 2b4b1f0395 feat(plugins): add unraid_plugins tool with list, add, remove actions Jacob Magar 2026-03-15 19:26:42 -04:00
  • d26467a4d0 feat(customization): add unraid_customization tool with theme, public_theme, is_initial_setup, sso_enabled, set_theme Jacob Magar 2026-03-15 19:19:06 -04:00
  • 76391b4d2b feat(keys): add add_role and remove_role actions for API key role management Jacob Magar 2026-03-15 19:13:03 -04:00
  • 0d4a3fa4e2 fix(live): validate log_tail path against allowlist, move guards before error handler Jacob Magar 2026-03-15 19:08:43 -04:00
  • 3a72f6c6b9 feat(array): add parity_history, start/stop array, disk add/remove/mount/unmount/clear_stats Jacob Magar 2026-03-15 19:03:01 -04:00
  • 675a466d02 feat(live): add unraid_live tool with 11 subscription snapshot actions Jacob Magar 2026-03-15 18:56:14 -04:00
  • 5a3e8e285b fix(subscriptions): bound snapshot loops with asyncio.timeout, raise on collect errors Jacob Magar 2026-03-15 18:52:27 -04:00
  • 181ad53414 feat(subscriptions): add subscribe_once and subscribe_collect snapshot helpers Jacob Magar 2026-03-15 18:48:42 -04:00
  • 72ccf9b074 chore: add settings slash command and bump to 0.4.8 Jacob Magar 2026-03-14 16:40:04 -04:00
  • 5740f4848a chore: bump version to 0.4.7 Jacob Magar 2026-03-14 14:49:13 -04:00
  • 4ce3edd423 docs: update credential setup to reflect ~/.unraid-mcp/.env flow Jacob Magar 2026-03-14 14:48:06 -04:00
  • 2c0f4a1730 feat(creds): add optional env_file from ~/.unraid-mcp/.env to docker-compose Jacob Magar 2026-03-14 14:46:10 -04:00
  • a3754e37c3 feat(creds): setup declined message includes manual path and variable names Jacob Magar 2026-03-14 14:43:31 -04:00
  • c4f1b2eb00 test(creds): add replacement test for credentials propagation through tool_error_handler Jacob Magar 2026-03-14 14:21:21 -04:00
  • c80ab0ca6b refactor(creds): remove per-tool elicitation from unraid_info Jacob Magar 2026-03-14 14:20:20 -04:00
  • 08afdcc50e refactor(creds): remove per-tool elicitation from unraid_settings Jacob Magar 2026-03-14 14:19:42 -04:00
  • ba7b8dfaa6 refactor(creds): remove per-tool elicitation from unraid_keys Jacob Magar 2026-03-14 14:18:20 -04:00
  • 23e70e46d0 refactor(creds): remove per-tool elicitation from unraid_users Jacob Magar 2026-03-14 14:17:14 -04:00
  • fe66e8742c refactor(creds): remove per-tool elicitation from unraid_rclone Jacob Magar 2026-03-14 14:16:34 -04:00
  • 77f3d897a3 refactor(creds): remove per-tool elicitation from unraid_notifications Jacob Magar 2026-03-14 14:16:07 -04:00
  • 8c67145bcc refactor(creds): remove per-tool elicitation from unraid_vm Jacob Magar 2026-03-14 14:14:22 -04:00
  • 9fc85ea48c refactor(creds): remove per-tool elicitation from unraid_storage Jacob Magar 2026-03-14 14:13:52 -04:00
  • d99855973a refactor(creds): remove per-tool elicitation from unraid_docker Jacob Magar 2026-03-14 14:13:14 -04:00
  • 9435a8c534 refactor(creds): remove per-tool elicitation from unraid_array Jacob Magar 2026-03-14 14:09:14 -04:00
  • 81f1fe174d feat(creds): tool_error_handler converts CredentialsNotConfiguredError to ToolError with path Jacob Magar 2026-03-14 14:03:27 -04:00
  • e930b868e4 feat(creds): write to ~/.unraid-mcp/.env with 700/600 permissions, seed from .env.example Jacob Magar 2026-03-14 13:57:04 -04:00
  • d8ce45c0fc feat(creds): add CREDENTIALS_DIR and CREDENTIALS_ENV_PATH to settings Jacob Magar 2026-03-14 13:51:32 -04:00
  • 14e9dca8bc chore: bump version to 0.4.6 Jacob Magar 2026-03-14 04:30:01 -04:00
  • f0a97edbf7 docs: update credential setup docs to reflect elicitation flow Jacob Magar 2026-03-14 04:29:35 -04:00
  • 85cd173449 fix(elicitation): guard ctx=None in elicit_and_configure, cover all settings/docker/notifications actions Jacob Magar 2026-03-14 04:28:34 -04:00
  • e1c80cf1da feat(elicitation): add ctx + credential elicitation to unraid_settings Jacob Magar 2026-03-14 04:19:08 -04:00
  • ba14a8d341 feat(elicitation): add ctx + credential elicitation to unraid_keys Jacob Magar 2026-03-14 04:18:06 -04:00
  • cec254b432 feat(elicitation): add ctx + credential elicitation to unraid_users Jacob Magar 2026-03-14 04:17:17 -04:00
  • dec80832ea feat(elicitation): add ctx + credential elicitation to unraid_rclone Jacob Magar 2026-03-14 04:16:54 -04:00
  • 4b4c8ddf63 feat(elicitation): add ctx + credential elicitation to unraid_notifications Jacob Magar 2026-03-14 04:16:08 -04:00
  • dfcaa37614 feat(elicitation): add ctx + credential elicitation to unraid_vm Jacob Magar 2026-03-14 04:14:43 -04:00
  • 060acab239 feat(elicitation): add ctx + credential elicitation to unraid_storage Jacob Magar 2026-03-14 04:14:15 -04:00
  • be186dc2d7 feat(elicitation): add ctx + credential elicitation to unraid_docker Jacob Magar 2026-03-14 04:13:34 -04:00
  • 13f85bd499 feat(elicitation): add ctx + credential elicitation to unraid_array Jacob Magar 2026-03-14 04:11:38 -04:00
  • 49264550b1 feat(elicitation): auto-elicit credentials on CredentialsNotConfiguredError in unraid_info Jacob Magar 2026-03-14 04:07:51 -04:00
  • 9be46750b8 feat(elicitation): add setup action to unraid_health Jacob Magar 2026-03-14 04:02:15 -04:00
  • 61604b313f fix(elicitation): pass CredentialsNotConfiguredError through tool_error_handler Jacob Magar 2026-03-14 03:58:44 -04:00
  • 8a986a84c2 feat(elicitation): raise CredentialsNotConfiguredError in client when creds absent Jacob Magar 2026-03-14 03:55:57 -04:00
  • 02e61b4290 refactor(elicitation): use PROJECT_ROOT directly (already a Path) Jacob Magar 2026-03-14 03:50:45 -04:00
  • e73f791fd3 feat(elicitation): add elicit_and_configure() with .env persistence Jacob Magar 2026-03-14 03:49:11 -04:00
  • 7458409147 test(elicitation): assert warning is logged when creds missing at startup Jacob Magar 2026-03-14 03:47:29 -04:00
  • 42bfcc1998 feat(elicitation): degrade gracefully when credentials are missing at startup Jacob Magar 2026-03-14 03:45:42 -04:00
  • a7988e1eae test(elicitation): fix os.environ leak in apply_runtime_config test Jacob Magar 2026-03-14 03:44:34 -04:00
  • 520d92af57 feat(elicitation): add is_configured() and apply_runtime_config() to settings Jacob Magar 2026-03-14 03:43:20 -04:00
  • 1952720ef9 test(elicitation): fix test_setup.py style and add ToolError contract test Jacob Magar 2026-03-14 03:41:24 -04:00
  • ea839ec09c feat(elicitation): add CredentialsNotConfiguredError sentinel Jacob Magar 2026-03-14 03:39:49 -04:00
  • b734eff902 docs: add version bump reminder to CLAUDE.md Jacob Magar 2026-03-14 03:11:04 -04:00
  • 3f13cf89c8 chore: bump plugin.json version to 0.4.5 Jacob Magar 2026-03-14 03:09:58 -04:00