mirror of
https://github.com/jmagar/unraid-mcp.git
synced 2026-03-23 12:39:24 -07:00
feat(creds): setup declined message includes manual path and variable names
This commit is contained in:
@@ -227,3 +227,20 @@ async def test_health_setup_action_returns_declined_message() -> None:
|
|||||||
or "declined" in result.lower()
|
or "declined" in result.lower()
|
||||||
or "cancel" in result.lower()
|
or "cancel" in result.lower()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_health_setup_declined_message_includes_manual_path() -> None:
|
||||||
|
"""Declined setup message includes the exact credentials file path and variable names."""
|
||||||
|
from unittest.mock import AsyncMock, MagicMock, patch
|
||||||
|
|
||||||
|
from unraid_mcp.config.settings import CREDENTIALS_ENV_PATH
|
||||||
|
|
||||||
|
tool_fn = _make_tool()
|
||||||
|
|
||||||
|
with patch("unraid_mcp.tools.health.elicit_and_configure", new=AsyncMock(return_value=False)):
|
||||||
|
result = await tool_fn(action="setup", ctx=MagicMock())
|
||||||
|
|
||||||
|
assert str(CREDENTIALS_ENV_PATH) in result
|
||||||
|
assert "UNRAID_API_URL=" in result # inline variable shown
|
||||||
|
assert "UNRAID_API_KEY=" in result
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from fastmcp import Context, FastMCP
|
|||||||
|
|
||||||
from ..config.logging import logger
|
from ..config.logging import logger
|
||||||
from ..config.settings import (
|
from ..config.settings import (
|
||||||
|
CREDENTIALS_ENV_PATH,
|
||||||
UNRAID_API_URL,
|
UNRAID_API_URL,
|
||||||
UNRAID_MCP_HOST,
|
UNRAID_MCP_HOST,
|
||||||
UNRAID_MCP_PORT,
|
UNRAID_MCP_PORT,
|
||||||
@@ -72,14 +73,21 @@ def register_health_tool(mcp: FastMCP) -> None:
|
|||||||
raise ToolError(f"Invalid action '{action}'. Must be one of: {sorted(ALL_ACTIONS)}")
|
raise ToolError(f"Invalid action '{action}'. Must be one of: {sorted(ALL_ACTIONS)}")
|
||||||
|
|
||||||
if action == "setup":
|
if action == "setup":
|
||||||
|
|
||||||
configured = await elicit_and_configure(ctx)
|
configured = await elicit_and_configure(ctx)
|
||||||
if configured:
|
if configured:
|
||||||
return (
|
return (
|
||||||
"✅ Credentials configured successfully. You can now use all Unraid MCP tools."
|
"✅ Credentials configured successfully. You can now use all Unraid MCP tools."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
"⚠️ Credentials not configured. "
|
f"⚠️ Credentials not configured.\n\n"
|
||||||
"Run `unraid_health action=setup` again to provide credentials."
|
f"Your MCP client may not support elicitation, or setup was cancelled.\n\n"
|
||||||
|
f"**Manual setup** — create `{CREDENTIALS_ENV_PATH}` with:\n"
|
||||||
|
f"```\n"
|
||||||
|
f"UNRAID_API_URL=https://your-unraid-server:port\n"
|
||||||
|
f"UNRAID_API_KEY=your-api-key\n"
|
||||||
|
f"```\n\n"
|
||||||
|
f"Then run any Unraid tool to connect."
|
||||||
)
|
)
|
||||||
|
|
||||||
with tool_error_handler("health", action, logger):
|
with tool_error_handler("health", action, logger):
|
||||||
|
|||||||
Reference in New Issue
Block a user