freeWeb MCP Server
freeWeb MCP Server
A lightweight MCP (Model Context Protocol) server providing web search and page content extraction tools powered by DuckDuckGo.
Tools
web_search- Search the web using DuckDuckGo, returning title, URL, and snippet for each result.web_visit- Visit a URL and extract its page content in various formats (markdown, plain text, rich text).
Quick Start
1. Create the conda environment
conda create -n mcp python=3.12
conda activate mcp
pip install -r requirements.txt2. Run the server
python main.py # HTTP mode on http://127.0.0.1:8101/mcp
python main.py --stdio # Stdio mode (for MCP clients)3. Run tests
python test_server.pyBrowser-based MCP Clients
MCP 2.x returns a plain Starlette app with no built-in CORS handling. When connecting from a browser-based MCP client (e.g., at http://127.0.0.1:8080), add CORSMiddleware:
from starlette.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["http://127.0.0.1:8080"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["Mcp-Session-Id", "Mcp-Protocol-Version"],
)The SDK intentionally provides no opinionated middleware — auth, rate limiting, and CORS are left to the user.
Project Structure
freeWeb/
├── main.py # Server entry point (HTTP + stdio modes)
├── test_server.py # Test suite (run with: python test_server.py)
└── tools/
├── __init__.py
├── search.py # web_search tool
└── visit.py # web_visit toolMCP Client Configuration
Stdio transport
{
"mcpServers": {
"freeWeb": {
"command": "conda",
"args": ["run", "-n", "mcp", "python", "/path/to/freeWeb/main.py", "--stdio"]
}
}
}HTTP transport (browser clients)
Connect your browser-based MCP client to http://127.0.0.1:8101/mcp with CORS configured as shown above.
Requirements
See requirements.txt. Test uses starlette (TestClient), which is a transitive dependency of mcp.
Package | Version |
mcp | 2.0.0 |
ddgs | 9.14.4 |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AdityaAWaghmare/freeWeb-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server