Fix GET /mcp 405 log spam and resolve_account email matching

Add a custom GET /mcp health route so health checks and client polling
return 200 instead of flooding logs with 405. Also allow resolve_account
to match by email address (from_address, imap_username, smtp_username)
in addition to account ID.
This commit is contained in:
Kacper Kwapisz
2026-03-23 19:33:51 +01:00
parent bbee0acb13
commit fef9157c4a
2 changed files with 16 additions and 1 deletions
+15
View File
@@ -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."
)