Fix middleware schema caching error #7

Merged
NyxiumYuuki merged 13 commits from claude/fix-middleware-schema-cache-01SXnBSQQ8ptLgqViF4UsUYx into master 2025-12-01 03:03:24 +01:00
Showing only changes of commit e4a8748af5 - Show all commits

View file

@ -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,
) )