Skip to main content
Web search using Parallel’s MCP server. API key is optional (keyless access is rate-limited).

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

1

Clone and set up

git clone https://github.com/agno-agi/agno.git
cd agno
2

Create virtual environment

./scripts/demo_setup.sh
source .venvs/demo/bin/activate
3

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.
4

Run the example

python cookbook/91_tools/mcp/parallel.py