MCP Servers
MCPServer
Bases: ABC
Base class for Model Context Protocol servers.
Source code in src/cai/sdk/agents/mcp/server.py
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
|
name
abstractmethod
property
name: str
A readable name for the server.
connect
abstractmethod
async
connect()
Connect to the server. For example, this might mean spawning a subprocess or
opening a network connection. The server is expected to remain connected until
cleanup()
is called.
Source code in src/cai/sdk/agents/mcp/server.py
22 23 24 25 26 27 28 |
|
cleanup
abstractmethod
async
cleanup()
Cleanup the server. For example, this might mean closing a subprocess or closing a network connection.
Source code in src/cai/sdk/agents/mcp/server.py
36 37 38 39 40 41 |
|
list_tools
abstractmethod
async
list_tools() -> list[Tool]
List the tools available on the server.
Source code in src/cai/sdk/agents/mcp/server.py
43 44 45 46 |
|
call_tool
abstractmethod
async
call_tool(
tool_name: str, arguments: dict[str, Any] | None
) -> CallToolResult
Invoke a tool on the server.
Source code in src/cai/sdk/agents/mcp/server.py
48 49 50 51 |
|
MCPServerStdioParams
Bases: TypedDict
Mirrors mcp.client.stdio.StdioServerParameters
, but lets you pass params without another
import.
Source code in src/cai/sdk/agents/mcp/server.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
|
command
instance-attribute
command: str
The executable to run to start the server. For example, python
or node
.
args
instance-attribute
args: NotRequired[list[str]]
Command line args to pass to the command
executable. For example, ['foo.py']
or
['server.js', '--port', '8080']
.
env
instance-attribute
env: NotRequired[dict[str, str]]
The environment variables to set for the server. .
cwd
instance-attribute
cwd: NotRequired[str | Path]
The working directory to use when spawning the process.
encoding
instance-attribute
encoding: NotRequired[str]
The text encoding used when sending/receiving messages to the server. Defaults to utf-8
.
encoding_error_handler
instance-attribute
encoding_error_handler: NotRequired[
Literal["strict", "ignore", "replace"]
]
The text encoding error handler. Defaults to strict
.
See https://docs.python.org/3/library/codecs.html#codec-base-classes for explanations of possible values.
MCPServerStdio
Bases: _MCPServerWithClientSession
MCP server implementation that uses the stdio transport. See the [spec] (https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#stdio) for details.
Source code in src/cai/sdk/agents/mcp/server.py
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
|
name
property
name: str
A readable name for the server.
__init__
__init__(
params: MCPServerStdioParams,
cache_tools_list: bool = False,
name: str | None = None,
)
Create a new MCP server based on the stdio transport.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
params
|
MCPServerStdioParams
|
The params that configure the server. This includes the command to run to start the server, the args to pass to the command, the environment variables to set for the server, the working directory to use when spawning the process, and the text encoding used when sending/receiving messages to the server. |
required |
cache_tools_list
|
bool
|
Whether to cache the tools list. If |
False
|
name
|
str | None
|
A readable name for the server. If not provided, we'll create one from the command. |
None
|
Source code in src/cai/sdk/agents/mcp/server.py
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
|
create_streams
create_streams() -> AbstractAsyncContextManager[
tuple[
MemoryObjectReceiveStream[
JSONRPCMessage | Exception
],
MemoryObjectSendStream[JSONRPCMessage],
]
]
Create the streams for the server.
Source code in src/cai/sdk/agents/mcp/server.py
215 216 217 218 219 220 221 222 223 224 |
|
connect
async
connect()
Connect to the server.
Source code in src/cai/sdk/agents/mcp/server.py
99 100 101 102 103 104 105 106 107 108 109 110 |
|
cleanup
async
cleanup()
Cleanup the server.
Source code in src/cai/sdk/agents/mcp/server.py
135 136 137 138 139 140 141 142 |
|
list_tools
async
list_tools() -> list[Tool]
List the tools available on the server.
Source code in src/cai/sdk/agents/mcp/server.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
call_tool
async
call_tool(
tool_name: str, arguments: dict[str, Any] | None
) -> CallToolResult
Invoke a tool on the server.
Source code in src/cai/sdk/agents/mcp/server.py
128 129 130 131 132 133 |
|
invalidate_tools_cache
invalidate_tools_cache()
Invalidate the tools cache.
Source code in src/cai/sdk/agents/mcp/server.py
95 96 97 |
|
MCPServerSseParams
Bases: TypedDict
Mirrors the params inmcp.client.sse.sse_client
.
Source code in src/cai/sdk/agents/mcp/server.py
232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
|
url
instance-attribute
url: str
The URL of the server.
headers
instance-attribute
headers: NotRequired[dict[str, str]]
The headers to send to the server.
timeout
instance-attribute
timeout: NotRequired[float]
The timeout for the HTTP request. Defaults to 5 seconds.
sse_read_timeout
instance-attribute
sse_read_timeout: NotRequired[float]
The timeout for the SSE connection, in seconds. Defaults to 5 minutes.
MCPServerSse
Bases: _MCPServerWithClientSession
MCP server implementation that uses the HTTP with SSE transport. See the [spec] (https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/transports/#http-with-sse) for details.
Source code in src/cai/sdk/agents/mcp/server.py
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
|
name
property
name: str
A readable name for the server.
__init__
__init__(
params: MCPServerSseParams,
cache_tools_list: bool = False,
name: str | None = None,
)
Create a new MCP server based on the HTTP with SSE transport.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
params
|
MCPServerSseParams
|
The params that configure the server. This includes the URL of the server, the headers to send to the server, the timeout for the HTTP request, and the timeout for the SSE connection. |
required |
cache_tools_list
|
bool
|
Whether to cache the tools list. If |
False
|
name
|
str | None
|
A readable name for the server. If not provided, we'll create one from the URL. |
None
|
Source code in src/cai/sdk/agents/mcp/server.py
254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 |
|
create_streams
create_streams() -> AbstractAsyncContextManager[
tuple[
MemoryObjectReceiveStream[
JSONRPCMessage | Exception
],
MemoryObjectSendStream[JSONRPCMessage],
]
]
Create the streams for the server.
Source code in src/cai/sdk/agents/mcp/server.py
282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
|
connect
async
connect()
Connect to the server.
Source code in src/cai/sdk/agents/mcp/server.py
99 100 101 102 103 104 105 106 107 108 109 110 |
|
cleanup
async
cleanup()
Cleanup the server.
Source code in src/cai/sdk/agents/mcp/server.py
135 136 137 138 139 140 141 142 |
|
list_tools
async
list_tools() -> list[Tool]
List the tools available on the server.
Source code in src/cai/sdk/agents/mcp/server.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
call_tool
async
call_tool(
tool_name: str, arguments: dict[str, Any] | None
) -> CallToolResult
Invoke a tool on the server.
Source code in src/cai/sdk/agents/mcp/server.py
128 129 130 131 132 133 |
|
invalidate_tools_cache
invalidate_tools_cache()
Invalidate the tools cache.
Source code in src/cai/sdk/agents/mcp/server.py
95 96 97 |
|