Skip to main content
Using the Parallel MCP server to create an Agent that can search the web using Parallel’s AI-optimized search capabilities. The API key is optional. Keyless access is rate-limited; setting a key raises the ceiling.
cookbook/91_tools/mcp/parallel.py
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?"))

Prerequisites

uv pip install agno mcp anthropic
export ANTHROPIC_API_KEY=***
# Optional — keyless access is rate-limited
export PARALLEL_API_KEY=***

Developer Resources