diff --git a/eval_protocol/mcp/mcpgym.py b/eval_protocol/mcp/mcpgym.py index 83b4cfd6..edc1a244 100644 --- a/eval_protocol/mcp/mcpgym.py +++ b/eval_protocol/mcp/mcpgym.py @@ -26,6 +26,7 @@ from mcp.server.fastmcp import Context, FastMCP from starlette.requests import Request from starlette.responses import JSONResponse +from uvicorn.middleware.proxy_headers import ProxyHeadersMiddleware from .adapter import EnvironmentAdapter @@ -562,11 +563,18 @@ def run(self, transport: str = "streamable-http", **kwargs): async def run_with_high_concurrency(): starlette_app = self.mcp.streamable_http_app() + if not kwargs.get("redirect_slashes", True) and hasattr(starlette_app, "router"): + starlette_app.router.redirect_slashes = False + + starlette_app.add_middleware(ProxyHeadersMiddleware, trusted_hosts="*") + config = uvicorn.Config( starlette_app, host=self.mcp.settings.host, port=self.mcp.settings.port, log_level=self.mcp.settings.log_level.lower(), + proxy_headers=True, + forwarded_allow_ips="*", # HIGH CONCURRENCY SETTINGS limit_concurrency=200, # Increase for HTTP endpoints + MCP limit_max_requests=100000, # Higher request limit diff --git a/eval_protocol/mcp_env.py b/eval_protocol/mcp_env.py index 209dddf0..f52b1793 100644 --- a/eval_protocol/mcp_env.py +++ b/eval_protocol/mcp_env.py @@ -104,17 +104,17 @@ def make( if evaluation_rows: for i, row in enumerate(evaluation_rows): dataset_info = row.input_metadata.dataset_info if row.input_metadata else {} - + system_message = row.get_system_message() system_prompt = system_message.content or "" - + dataset_entry = { "id": row.input_metadata.row_id if row.input_metadata and row.input_metadata.row_id else f"task_{i}", "system_prompt": system_prompt, "user_prompt_template": dataset_info.get("user_prompt_template", ""), "environment_context": dataset_info.get("environment_context", {}), "user_simulation": dataset_info.get("user_simulation", {}), - "evaluation_criteria": dataset_info.get("evaluation_criteria", {}) + "evaluation_criteria": dataset_info.get("evaluation_criteria", {}), } internal_dataset.append(dataset_entry) elif dataset: