diff --git a/Dockerfile b/Dockerfile index 9016742..5dc3a63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,6 @@ EXPOSE 3000 ENV PORT=3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ - CMD python -c "import httpx; r = httpx.get('http://localhost:3000/mcp', timeout=5); assert r.status_code == 405" || exit 1 + CMD python -c "import httpx; r = httpx.get('http://localhost:3000/mcp', timeout=5); assert r.status_code == 200" || exit 1 CMD ["python", "src/server.py"] diff --git a/src/server.py b/src/server.py index 22fb445..3525d65 100755 --- a/src/server.py +++ b/src/server.py @@ -117,6 +117,14 @@ def resolve_account(accounts: list[dict], account_id: Optional[str] = None) -> d for acc in accounts: if acc["id"] == account_id: return acc + # Fallback: match by email address (from_address, imap_username, smtp_username) + for acc in accounts: + if account_id in ( + acc.get("from_address"), + acc.get("imap_username"), + acc.get("smtp_username"), + ): + return acc raise ValueError( f"Unknown account_id: {account_id}. Available: {[a['id'] for a in accounts]}" ) @@ -493,6 +501,13 @@ if not mcp_api_key: mcp = FastMCP("poke-mail", lifespan=lifespan, auth=auth) +@mcp.custom_route("/mcp", methods=["GET"]) +async def health(request): + from starlette.responses import JSONResponse + + return JSONResponse({"status": "ok"}) + + @mcp.tool( description="Search emails by criteria. Returns a list of matching emails with metadata." )