Skip to main content
MCP connections in PraisonAI Agents support context managers and explicit shutdown() so subprocesses, streams, and sockets close reliably.
The user runs an agent inside an MCP context manager; connections shut down cleanly when the session ends.

Quick Start

1

Simple Usage

2

With Configuration

How It Works

Manual Cleanup

For cases where a context manager is not suitable:

Request Cancellation

An MCP client can abort an in-flight request by sending a notifications/cancelled notification naming the requestId it wants to stop.
1

Send the request

The client calls a tool with a JSON-RPC id it can reference later.
2

Cancel it

The client sends a cancellation notification with the same id as requestId.
3

Receive the cancelled response

The server cancels the running task and replies with a JSON-RPC error.
Only id-bearing requests can be cancelled. Fire-and-forget notifications have no id to reference and return nothing.

Lifecycle Methods

Authenticating the HTTP transport

When api_key is configured on the MCP HTTP-stream server, all of GET, POST, and DELETE require:
Comparison uses constant-time hmac.compare_digest (timing-attack resistant). Missing or wrong tokens return 401 Unauthorized with {"error": "Unauthorized"}. DELETE returning 401 instead of 405 prevents information disclosure about whether sessions exist.

__enter__ / __exit__

Context manager protocol for automatic resource management:

shutdown()

Explicitly close all connections and cleanup resources:

__del__

Destructor ensures cleanup even if shutdown() was not called:

Connection Types

MCP supports multiple connection types, all with proper cleanup:

Best Practices

Prefer with MCP(...) as mcp: — cleanup runs even when an exception is raised.
Wrap tool calls in try/except inside the with block; __exit__ still closes the connection.
Open each MCP in its own with block or nest them — both instances shut down in reverse order.
Use the env= parameter with os.getenv(...) rather than hard-coding API keys in recipe files.

MCP CLI

Run and inspect MCP servers from the terminal

MCP Transports

Stdio, SSE, HTTP stream, and WebSocket options