mirror of
https://github.com/Monadical-SAS/cubbi.git
synced 2025-12-21 04:39:07 +00:00
feat: add option for custom docker host socket
Why: The socket is different when we use rootless mode with docker.
This commit is contained in:
@@ -1347,6 +1347,9 @@ def add_mcp(
|
|||||||
env: List[str] = typer.Option(
|
env: List[str] = typer.Option(
|
||||||
[], "--env", "-e", help="Environment variables (format: KEY=VALUE)"
|
[], "--env", "-e", help="Environment variables (format: KEY=VALUE)"
|
||||||
),
|
),
|
||||||
|
docker_host: Optional[str] = typer.Option(
|
||||||
|
None, "--docker-host", help="Docker host socket file that should be mounted on the MCP container",
|
||||||
|
),
|
||||||
no_default: bool = typer.Option(
|
no_default: bool = typer.Option(
|
||||||
False, "--no-default", help="Don't add MCP server to defaults"
|
False, "--no-default", help="Don't add MCP server to defaults"
|
||||||
),
|
),
|
||||||
@@ -1380,6 +1383,7 @@ def add_mcp(
|
|||||||
proxy_options,
|
proxy_options,
|
||||||
environment,
|
environment,
|
||||||
host_port,
|
host_port,
|
||||||
|
docker_host,
|
||||||
add_as_default=not no_default,
|
add_as_default=not no_default,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class ContainerManager:
|
|||||||
):
|
):
|
||||||
self.config_manager = config_manager or ConfigManager()
|
self.config_manager = config_manager or ConfigManager()
|
||||||
self.session_manager = session_manager or SessionManager()
|
self.session_manager = session_manager or SessionManager()
|
||||||
|
|
||||||
self.user_config_manager = user_config_manager or UserConfigManager()
|
self.user_config_manager = user_config_manager or UserConfigManager()
|
||||||
self.mcp_manager = MCPManager(config_manager=self.user_config_manager)
|
self.mcp_manager = MCPManager(config_manager=self.user_config_manager)
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ class MCPManager:
|
|||||||
proxy_options: Dict[str, Any] = None,
|
proxy_options: Dict[str, Any] = None,
|
||||||
env: Dict[str, str] = None,
|
env: Dict[str, str] = None,
|
||||||
host_port: Optional[int] = None,
|
host_port: Optional[int] = None,
|
||||||
|
docker_host: Optional[str] = None,
|
||||||
add_as_default: bool = True,
|
add_as_default: bool = True,
|
||||||
) -> Dict[str, Any]:
|
) -> Dict[str, Any]:
|
||||||
"""Add a proxy-based MCP server.
|
"""Add a proxy-based MCP server.
|
||||||
@@ -191,6 +192,7 @@ class MCPManager:
|
|||||||
proxy_options: Options for the MCP proxy
|
proxy_options: Options for the MCP proxy
|
||||||
env: Environment variables to set in the container
|
env: Environment variables to set in the container
|
||||||
host_port: Host port to bind the MCP server to (auto-assigned if not specified)
|
host_port: Host port to bind the MCP server to (auto-assigned if not specified)
|
||||||
|
docker_host: Docker host socket file that should be mounted on the MCP container
|
||||||
add_as_default: Whether to add this MCP to the default MCPs list
|
add_as_default: Whether to add this MCP to the default MCPs list
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -223,6 +225,7 @@ class MCPManager:
|
|||||||
proxy_options=proxy_options or {},
|
proxy_options=proxy_options or {},
|
||||||
env=env or {},
|
env=env or {},
|
||||||
host_port=host_port,
|
host_port=host_port,
|
||||||
|
docker_host=docker_host or "/var/run/docker.sock",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add to the configuration
|
# Add to the configuration
|
||||||
@@ -570,7 +573,7 @@ ENTRYPOINT ["/entrypoint.sh"]
|
|||||||
detach=True,
|
detach=True,
|
||||||
network=None, # Start without network, we'll add it with aliases
|
network=None, # Start without network, we'll add it with aliases
|
||||||
volumes={
|
volumes={
|
||||||
"/var/run/docker.sock": {
|
mcp_config.get("docker_host", "/var/run/docker.sock"): {
|
||||||
"bind": "/var/run/docker.sock",
|
"bind": "/var/run/docker.sock",
|
||||||
"mode": "rw",
|
"mode": "rw",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ class ProxyMCP(BaseModel):
|
|||||||
proxy_options: Dict[str, Any] = Field(default_factory=dict)
|
proxy_options: Dict[str, Any] = Field(default_factory=dict)
|
||||||
env: Dict[str, str] = Field(default_factory=dict)
|
env: Dict[str, str] = Field(default_factory=dict)
|
||||||
host_port: Optional[int] = None # External port to bind the SSE port to on the host
|
host_port: Optional[int] = None # External port to bind the SSE port to on the host
|
||||||
|
docker_host: Optional[str] = None # Docker host to use for the proxy container
|
||||||
|
|
||||||
|
|
||||||
MCP = Union[RemoteMCP, DockerMCP, ProxyMCP]
|
MCP = Union[RemoteMCP, DockerMCP, ProxyMCP]
|
||||||
|
|||||||
Reference in New Issue
Block a user