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
|
import uvicorn
|
||||||
from mcp.server.fastmcp import FastMCP
|
from mcp.server.fastmcp import FastMCP
|
||||||
|
from starlette.middleware.base import BaseHTTPMiddleware
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
|
from starlette.requests import Request
|
||||||
|
|
||||||
from .config import settings
|
from .config import settings
|
||||||
from .middleware import AuthenticationMiddleware
|
from .middleware import AuthenticationMiddleware
|
||||||
|
|
@ -25,6 +27,24 @@ logging.basicConfig(
|
||||||
logger = logging.getLogger(__name__)
|
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():
|
def main():
|
||||||
"""Main entry point for the server."""
|
"""Main entry point for the server."""
|
||||||
|
|
||||||
|
|
@ -71,6 +91,10 @@ def main():
|
||||||
logger.error("Unsupported transport: %s", settings.TRANSPORT)
|
logger.error("Unsupported transport: %s", settings.TRANSPORT)
|
||||||
return
|
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
|
# Always add CORS middleware for browser compatibility
|
||||||
mcp_app.add_middleware(
|
mcp_app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
|
|
@ -110,6 +134,7 @@ def main():
|
||||||
host=settings.HOST,
|
host=settings.HOST,
|
||||||
port=settings.PORT,
|
port=settings.PORT,
|
||||||
log_level=settings.LOG_LEVEL.lower(),
|
log_level=settings.LOG_LEVEL.lower(),
|
||||||
|
access_log=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue