Add birdcage-mcp FastMCP server for satellite dish control

34 tools (connection, movement, signal, system, satellite, console),
5 resources, 3 prompts. Backed by DemoDevice for offline testing.
46 tests passing against the demo backend via run_server_async.
This commit is contained in:
Ryan Malloy 2026-02-17 16:01:51 -07:00
parent 16ca4892b3
commit 8a6b99bd8c
21 changed files with 3233 additions and 0 deletions

View file

@ -0,0 +1,29 @@
"""Tests for connection tools (connect, disconnect, status)."""
import pytest
from conftest import parse_result
from fastmcp import Client
@pytest.mark.anyio
async def test_status_shows_connected(mcp_client: Client):
result = await mcp_client.call_tool("status", {})
data = parse_result(result)
assert data["connected"] is True
assert data["demo_mode"] is True
assert data["firmware"] == "g2"
@pytest.mark.anyio
async def test_connect_demo_noop(mcp_client: Client):
result = await mcp_client.call_tool("connect", {})
data = parse_result(result)
assert data["mode"] == "demo"
assert data["status"] == "connected"
@pytest.mark.anyio
async def test_disconnect_demo_noop(mcp_client: Client):
result = await mcp_client.call_tool("disconnect", {})
data = parse_result(result)
assert data["status"] == "demo"