Skip to content

Commit d9f28df

Browse files
authored
Fix: Correct MCPServerConfig import to resolve Docker container crash (#20)
* fix: correct MCPServerConfig import to resolve Docker container crash Fixes #19 The application was attempting to import MCPServerConfig from src.models, but it's actually defined in src.mcp_client as a dataclass. Updated the import statement to import from the correct module. Changes: - Remove MCPServerConfig from src.models import - Add MCPServerConfig to src.mcp_client import * fix: correct constants import in tool_manager.py Also fixes import issue that would cause container to crash after the MCPServerConfig fix. The import was missing the src. prefix. * fix: correct rate_limit_endpoint decorator usage Fixes incorrect parameter usage in rate_limit_endpoint decorators. The decorator expects an endpoint category string (e.g., "general", "chat") but was being called with numeric limit= parameters. Changes: - Replace @rate_limit_endpoint(limit=X) with @rate_limit_endpoint("general") - Affects 9 endpoints: /v1/tools/* and /v1/mcp/* endpoints - Also includes the tool_manager.py constants import fix All import and decorator issues are now resolved. Docker container starts successfully and all endpoints are properly configured.
1 parent df65f01 commit d9f28df

2 files changed

Lines changed: 11 additions & 12 deletions

File tree

src/main.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,14 @@
3232
MCPServerInfoResponse,
3333
MCPServersListResponse,
3434
MCPConnectionRequest,
35-
MCPServerConfig,
3635
)
3736
from src.claude_cli import ClaudeCodeCLI
3837
from src.message_adapter import MessageAdapter
3938
from src.auth import verify_api_key, security, validate_claude_code_auth, get_claude_code_auth_info
4039
from src.parameter_validator import ParameterValidator, CompatibilityReporter
4140
from src.session_manager import session_manager
4241
from src.tool_manager import tool_manager
43-
from src.mcp_client import mcp_client
42+
from src.mcp_client import mcp_client, MCPServerConfig
4443
from src.rate_limiter import (
4544
limiter,
4645
rate_limit_exceeded_handler,
@@ -897,7 +896,7 @@ async def delete_session(
897896

898897

899898
@app.get("/v1/tools", response_model=ToolListResponse)
900-
@rate_limit_endpoint(limit=100)
899+
@rate_limit_endpoint("general")
901900
async def list_tools(
902901
request: Request, credentials: Optional[HTTPAuthorizationCredentials] = Depends(security)
903902
):
@@ -922,7 +921,7 @@ async def list_tools(
922921

923922

924923
@app.get("/v1/tools/config", response_model=ToolConfigurationResponse)
925-
@rate_limit_endpoint(limit=100)
924+
@rate_limit_endpoint("general")
926925
async def get_tool_config(
927926
request: Request,
928927
session_id: Optional[str] = None,
@@ -944,7 +943,7 @@ async def get_tool_config(
944943

945944

946945
@app.post("/v1/tools/config", response_model=ToolConfigurationResponse)
947-
@rate_limit_endpoint(limit=30)
946+
@rate_limit_endpoint("general")
948947
async def update_tool_config(
949948
config_request: ToolConfigurationRequest,
950949
request: Request,
@@ -991,7 +990,7 @@ async def update_tool_config(
991990

992991

993992
@app.get("/v1/tools/stats")
994-
@rate_limit_endpoint(limit=100)
993+
@rate_limit_endpoint("general")
995994
async def get_tool_stats(
996995
request: Request, credentials: Optional[HTTPAuthorizationCredentials] = Depends(security)
997996
):
@@ -1004,7 +1003,7 @@ async def get_tool_stats(
10041003

10051004

10061005
@app.get("/v1/mcp/servers", response_model=MCPServersListResponse)
1007-
@rate_limit_endpoint(limit=100)
1006+
@rate_limit_endpoint("general")
10081007
async def list_mcp_servers(
10091008
request: Request, credentials: Optional[HTTPAuthorizationCredentials] = Depends(security)
10101009
):
@@ -1040,7 +1039,7 @@ async def list_mcp_servers(
10401039

10411040

10421041
@app.post("/v1/mcp/servers")
1043-
@rate_limit_endpoint(limit=30)
1042+
@rate_limit_endpoint("general")
10441043
async def register_mcp_server(
10451044
body: MCPServerConfigRequest,
10461045
request: Request,
@@ -1069,7 +1068,7 @@ async def register_mcp_server(
10691068

10701069

10711070
@app.post("/v1/mcp/connect")
1072-
@rate_limit_endpoint(limit=30)
1071+
@rate_limit_endpoint("general")
10731072
async def connect_mcp_server(
10741073
body: MCPConnectionRequest,
10751074
request: Request,
@@ -1100,7 +1099,7 @@ async def connect_mcp_server(
11001099

11011100

11021101
@app.post("/v1/mcp/disconnect")
1103-
@rate_limit_endpoint(limit=30)
1102+
@rate_limit_endpoint("general")
11041103
async def disconnect_mcp_server(
11051104
body: MCPConnectionRequest,
11061105
request: Request,
@@ -1125,7 +1124,7 @@ async def disconnect_mcp_server(
11251124

11261125

11271126
@app.get("/v1/mcp/stats")
1128-
@rate_limit_endpoint(limit=100)
1127+
@rate_limit_endpoint("general")
11291128
async def get_mcp_stats(
11301129
request: Request, credentials: Optional[HTTPAuthorizationCredentials] = Depends(security)
11311130
):

src/tool_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from threading import Lock
1111
from datetime import datetime
1212

13-
from constants import CLAUDE_TOOLS, DEFAULT_ALLOWED_TOOLS, DEFAULT_DISALLOWED_TOOLS
13+
from src.constants import CLAUDE_TOOLS, DEFAULT_ALLOWED_TOOLS, DEFAULT_DISALLOWED_TOOLS
1414

1515
logger = logging.getLogger(__name__)
1616

0 commit comments

Comments
 (0)