Add debug logging middleware for troubleshooting
Added RequestLoggingMiddleware to help diagnose 400 Bad Request errors: - Logs all request methods and paths in DEBUG mode - Logs request headers for debugging - Warns on any 4xx/5xx responses with details - Only enabled when LOG_LEVEL=DEBUG to avoid spam This helps troubleshoot MCP protocol issues without modifying the core request handling logic.
This commit is contained in:
parent
fe71704bf8
commit
e4a8748af5
1 changed files with 25 additions and 0 deletions
|
|
@ -10,7 +10,9 @@ import sys
|
|||
|
||||
import uvicorn
|
||||
from mcp.server.fastmcp import FastMCP
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
from starlette.requests import Request
|
||||
|
||||
from .config import settings
|
||||
from .middleware import AuthenticationMiddleware
|
||||
|
|
@ -25,6 +27,24 @@ logging.basicConfig(
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RequestLoggingMiddleware(BaseHTTPMiddleware):
|
||||
"""Log request details for debugging."""
|
||||
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
"""Log request and response details."""
|
||||
logger.debug(f"Request: {request.method} {request.url.path}")
|
||||
logger.debug(f"Headers: {dict(request.headers)}")
|
||||
|
||||
response = await call_next(request)
|
||||
|
||||
if response.status_code >= 400:
|
||||
logger.warning(
|
||||
f"Error response: {request.method} {request.url.path} -> {response.status_code}"
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def main():
|
||||
"""Main entry point for the server."""
|
||||
|
||||
|
|
@ -71,6 +91,10 @@ def main():
|
|||
logger.error("Unsupported transport: %s", settings.TRANSPORT)
|
||||
return
|
||||
|
||||
# Add request logging middleware for debugging (first, so it logs everything)
|
||||
if settings.LOG_LEVEL == "DEBUG":
|
||||
mcp_app.add_middleware(RequestLoggingMiddleware)
|
||||
|
||||
# Always add CORS middleware for browser compatibility
|
||||
mcp_app.add_middleware(
|
||||
CORSMiddleware,
|
||||
|
|
@ -110,6 +134,7 @@ def main():
|
|||
host=settings.HOST,
|
||||
port=settings.PORT,
|
||||
log_level=settings.LOG_LEVEL.lower(),
|
||||
access_log=True,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue