Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/crewai/src/crewai/agent/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -971,12 +971,14 @@ def _get_native_mcp_tools(
url=mcp_config.url,
headers=mcp_config.headers,
streamable=mcp_config.streamable,
verify=mcp_config.verify,
)
server_name = self._extract_server_name(mcp_config.url)
elif isinstance(mcp_config, MCPServerSSE):
transport = SSETransport(
url=mcp_config.url,
headers=mcp_config.headers,
verify=mcp_config.verify,
)
server_name = self._extract_server_name(mcp_config.url)
else:
Expand Down
8 changes: 8 additions & 0 deletions lib/crewai/src/crewai/mcp/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ class MCPServerHTTP(BaseModel):
default=True,
description="Whether to use streamable HTTP transport (default: True).",
)
verify: bool = Field(
default=True,
description="Whether to verify SSL certificates (default: True). Set to False to disable SSL verification.",
)
tool_filter: ToolFilter | None = Field(
default=None,
description="Optional tool filter for filtering available tools.",
Expand Down Expand Up @@ -110,6 +114,10 @@ class MCPServerSSE(BaseModel):
default=None,
description="Optional HTTP headers for authentication or other purposes.",
)
verify: bool = Field(
default=True,
description="Whether to verify SSL certificates (default: True). Set to False to disable SSL verification.",
)
tool_filter: ToolFilter | None = Field(
default=None,
description="Optional tool filter for filtering available tools.",
Expand Down
4 changes: 4 additions & 0 deletions lib/crewai/src/crewai/mcp/transports/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def __init__(
url: str,
headers: dict[str, str] | None = None,
streamable: bool = True,
verify: bool = True,
**kwargs: Any,
) -> None:
"""Initialize HTTP transport.
Expand All @@ -46,12 +47,14 @@ def __init__(
url: Server URL (e.g., "https://api.example.com/mcp").
headers: Optional HTTP headers.
streamable: Whether to use streamable HTTP (default: True).
verify: Whether to verify SSL certificates (default: True).
**kwargs: Additional transport options.
"""
super().__init__(**kwargs)
self.url = url
self.headers = headers or {}
self.streamable = streamable
self.verify = verify
self._transport_context: Any = None

@property
Expand Down Expand Up @@ -79,6 +82,7 @@ async def connect(self) -> Self:
self.url,
headers=self.headers if self.headers else None,
terminate_on_close=True,
verify=self.verify,
)

try:
Expand Down
4 changes: 4 additions & 0 deletions lib/crewai/src/crewai/mcp/transports/sse.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,21 @@ def __init__(
self,
url: str,
headers: dict[str, str] | None = None,
verify: bool = True,
**kwargs: Any,
) -> None:
"""Initialize SSE transport.

Args:
url: Server URL (e.g., "https://api.example.com/mcp/sse").
headers: Optional HTTP headers.
verify: Whether to verify SSL certificates (default: True).
**kwargs: Additional transport options.
"""
super().__init__(**kwargs)
self.url = url
self.headers = headers or {}
self.verify = verify
self._transport_context: Any = None

@property
Expand All @@ -66,6 +69,7 @@ async def connect(self) -> Self:
self._transport_context = sse_client(
self.url,
headers=self.headers if self.headers else None,
verify=self.verify,
)

read, write = await self._transport_context.__aenter__()
Expand Down