Files
NixOS/scripts/mcp-server/tests/test_server.py
Danilo Reyes 97053901c0 mcp
2026-01-30 23:17:02 -06:00

57 lines
1.8 KiB
Python

"""Server dispatch tests."""
from __future__ import annotations
from mcp_server import server as server_module
from mcp_server.server import handle_request
METHOD_NOT_FOUND = -32601
def test_list_tools_round_trip() -> None:
"""ListTools returns catalog entries."""
response = handle_request({"method": "listTools", "params": {}})
tools = response["result"]["tools"]
assert isinstance(tools, list)
assert any(entry["name"] == "show-constitution" for entry in tools)
def test_invoke_tool_round_trip() -> None:
"""InvokeTool returns standard shape."""
response = handle_request(
{"method": "invokeTool", "params": {"name": "show-constitution", "args": {}}}
)
result = response["result"]
assert result["status"] in {"ok", "unsupported", "invalid_input"}
assert "output" in result
def test_sync_docs_response_shape() -> None:
"""SyncDocs returns expected fields."""
response = handle_request({"method": "syncDocs", "params": {}})
result = response["result"]
assert "status" in result
assert "missingInDocs" in result
def test_invalid_method() -> None:
"""Unknown method yields error."""
response = handle_request({"method": "unknown", "params": {}})
assert "error" in response
assert response["error"]["code"] == METHOD_NOT_FOUND
def test_unavailable_service_returns_actions(monkeypatch) -> None:
"""Invoke tool failure returns guidance."""
def boom(*_: object, **__: object) -> dict:
raise RuntimeError("boom")
monkeypatch.setattr(server_module, "invoke_tool", boom)
response = handle_request(
{"method": "invokeTool", "params": {"name": "list-mcp-tasks", "args": {}}}
)
assert "result" in response
assert response["result"]["status"] == "failed"
assert "actions" in response["result"]