Skip to main content
Glama
cakhiltej9001-source

Internet Search MCP Server

Internet Search Agent with Custom MCP Tool

This project is for the AI Engineer homework task:

  • Create a custom MCP tool named internet_search

  • Register it inside an MCP server

  • Test the MCP server independently

  • Connect the MCP server to a PydanticAI agent

  • Connect the MCP server to CrewAI agents

  • Use two CrewAI roles: Search Agent and Summary Agent

1. Project architecture

User query
   │
   ▼
PydanticAI Agent OR CrewAI Search Agent
   │
   ▼
Custom MCP Server over stdio
   │
   ▼
internet_search MCP Tool
   │
   ▼
DuckDuckGo web results
   │
   ▼
Structured result: title, url, snippet, source
   │
   ▼
Agent summarizes answer with sources

Related MCP server: web-mcp-server

2. Files

File

Purpose

internet_search_mcp_server.py

MCP server exposing the custom internet_search tool

search_models.py

Pydantic models for structured search responses

test_mcp_direct.py

Tests MCP server independently without LLM/API key

pydanticai_agent.py

PydanticAI agent connected to the MCP server

crewai_agents.py

CrewAI Search Agent + Summary Agent connected to MCP server

.env.example

Environment variable template

requirements.txt

Python dependencies

3. Setup

Use Python 3.11 or 3.12.

python -m venv .venv

Windows PowerShell:

.venv\Scripts\Activate.ps1

macOS/Linux:

source .venv/bin/activate

Install dependencies:

pip install --upgrade pip
pip install -r requirements.txt

4. Test the custom MCP tool directly

This step proves that the MCP server works independently.

python test_mcp_direct.py "AI engineering roadmap 2026"

Expected behavior:

  • It prints available MCP tools

  • It calls internet_search

  • It prints structured JSON search results

This step does not need an OpenAI key.

5. Add API key for agent demos

Copy the example env file:

copy .env.example .env

On macOS/Linux:

cp .env.example .env

Then edit .env and add your real API key:

OPENAI_API_KEY=sk-your-real-key

Important: ChatGPT Plus is separate from API credits. PydanticAI and CrewAI need an API key from a model provider.

6. Run PydanticAI agent

python pydanticai_agent.py "Latest trends in AI agents"

What happens:

  1. PydanticAI starts the MCP server as a subprocess using stdio.

  2. The agent receives your question.

  3. The agent calls the internet_search MCP tool.

  4. The agent summarizes the returned search results.

7. Run CrewAI agents

python crewai_agents.py "Latest trends in AI product management"

CrewAI roles:

  • Search Agent: calls the internet_search MCP tool

  • Summary Agent: cleans and summarizes the information

The tasks run sequentially:

  1. Search task

  2. Summary task

8. Optional: Test with MCP Inspector

You can inspect the MCP server visually with:

npx -y @modelcontextprotocol/inspector

For stdio server configuration, use:

  • Command: python

  • Args: internet_search_mcp_server.py

9. What to tell your sir/demo explanation

I created a custom MCP server using Python FastMCP. It exposes a tool called internet_search, which accepts a user query and returns structured web search results. I tested the server independently using the MCP Python client. Then I integrated the same MCP server with PydanticAI using MCPServerStdio. Finally, I integrated it with CrewAI using a Search Agent and Summary Agent. The Search Agent retrieves search results through MCP, and the Summary Agent converts them into a clean final answer with sources.

10. Common errors

OPENAI_API_KEY is missing

Run the direct test first:

python test_mcp_direct.py "AI agents"

For PydanticAI/CrewAI, create .env and add your key.

DuckDuckGo search failed

Check internet connection. Try a smaller query or run again after a few seconds.

Import errors with CrewAI MCP

Upgrade packages:

pip install --upgrade crewai crewai-tools "mcp[cli]"

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that exposes web_search and web_fetch tools, allowing LLM applications to search the web via DuckDuckGo and fetch page content as cleaned markdown.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Small Python MCP server that provides web search and page fetching tools via DuckDuckGo, requiring no API key.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for internet search via direct Google and DuckDuckGo HTML scraping with AI-powered result normalization and optional summarization, requiring no API keys for search.
    MIT