bvandeusen
553c38200a
feat(fable-mcp): build wheel in Docker image, serve download, add admin log tool, and Settings install UI
...
- Dockerfile: build fable-mcp wheel into /app/dist/ during image build
- routes/fable_mcp_dist.py: GET /api/fable-mcp/info + /download endpoints
- app.py: register fable_mcp_dist_bp
- fable_mcp/tools/admin.py: get_app_logs() hitting /api/admin/logs
- fable_mcp/server.py: fable_get_app_logs MCP tool
- SettingsView: "Fable MCP" section in API Keys tab with download button and install instructions
- client.ts: getFableMcpInfo() helper
- ci.yml: add fable-mcp/** to trigger paths
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 17:26:05 -04:00
bvandeusen
359cb24d9a
feat(fable-mcp): implement FableClient, all tool modules, and server.py
...
- client.py: async httpx wrapper, FableAPIError, stream_get() SSE generator,
singleton init_client()/get_client() and _reset_client() for tests
- tools/: notes, tasks, projects, milestones, search, chat — thin async
functions that accept FableClient and call Fable REST endpoints
- server.py: FastMCP entry point with 20 tools registered via @mcp.tool(),
each opening a fresh FableClient context per call; validates env vars at startup
- tests: 34 tests covering client HTTP behaviour, error handling, singleton,
SSE streaming, and all tool modules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 21:51:32 -04:00