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:
@@ -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."
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user