Example
import asyncio
from datetime import timedelta
from os import getenv
from agno.agent import Agent
from agno.models.anthropic import Claude
from agno.tools.mcp import MCPTools
from agno.tools.mcp.params import StreamableHTTPClientParams
async def run_agent(message: str) -> None:
headers: dict[str, str] = {}
api_key = getenv("PARALLEL_API_KEY")
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
server_params = StreamableHTTPClientParams(
url="https://search.parallel.ai/mcp",
headers=headers,
timeout=timedelta(seconds=300),
)
async with MCPTools(
transport="streamable-http",
server_params=server_params,
include_tools=["web_search", "web_fetch"],
timeout_seconds=300,
) as parallel_mcp_server:
agent = Agent(
model=Claude(id="claude-sonnet-4-20250514"),
tools=[parallel_mcp_server],
markdown=True,
)
await agent.aprint_response(message, stream=True)
if __name__ == "__main__":
asyncio.run(run_agent("What is the weather in Tokyo?"))
Run the Example
Export API keys
export ANTHROPIC_API_KEY=***
export PARALLEL_API_KEY=***
The Parallel API key is optional. Keyless access is rate-limited; setting a key raises the ceiling.