beacon
Provides web search via DuckDuckGo, returning search results with title, URL, and snippet.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@beaconsearch the web for best open source MCP servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
beacon
A zero-config web search MCP server for any MCP client (opencode, Claude Desktop, Cursor, etc.).
Gives your local models the ability to search the web and read page content — no API keys, no Docker, no setup beyond pip install.
What it gives you
Two MCP tools:
Tool | Description |
| Web search via DuckDuckGo. Returns |
| Fetches a URL and returns its main readable text (HTML-stripped, boilerplate removed). |
Related MCP server: mcp-ddg-research
Install
git clone <your-fork-url> beacon
cd beacon
python3 -m venv .venv
.venv/bin/pip install -e .Register with an MCP client
opencode
Add to your opencode.json:
{
"mcp": {
"beacon": {
"type": "local",
"command": ["/absolute/path/to/beacon/.venv/bin/beacon-mcp"]
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"beacon": {
"command": "/absolute/path/to/beacon/.venv/bin/beacon-mcp"
}
}
}Manual testing (CLI)
.venv/bin/beacon search "python async patterns"
.venv/bin/beacon fetch https://example.orgConfiguration (optional, via env vars)
Variable | Default | Purpose |
|
| HTTP timeout (seconds) for fetch |
| Firefox-like string | User-Agent for outbound requests |
|
| Logging verbosity |
No state is written to disk. No database. No API keys required.
Development
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest -vLicense
MIT.
Available Tools
2 toolsbeacon_fetchA
Fetch a URL and return its main readable text content.
Extracts the article/page body (drops navigation, ads, boilerplate). Returns plain text, not HTML.
Args: url: An http(s) URL. max_chars: Truncate content to protect context budget (default 8000).
Returns: {"url", "title", "content"} or None if the URL cannot be fetched.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully takes on the burden of behavioral transparency. It discloses that it drops navigation/ads/boilerplate, returns plain text not HTML, truncates via max_chars, and returns None on fetch failure. These behavioral traits go well beyond the basic schema and give the agent a realistic expectation of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise opening claim, followed by a brief detail on extraction, a note on return type, then a simple Args/Returns list. Every sentence contributes useful information, with zero redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, 1 required, no enums), the description is fully complete. It covers the purpose, behavior, parameters, return format, and failure case. The presence of an output schema is not strictly necessary because the description already states the return shape ('{"url", "title", "content"} or None').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0%, the description must fully explain parameters. It does: url is specified as an http(s) URL, and max_chars is explained as a truncation limit to protect context budget with a default of 8000. This adds meaningful semantics that the bare schema properties ('url', 'max_chars') lack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('Fetch a URL') and resource ('return its main readable text content'), clearly distinguishing it from the sibling beacon_search tool which searches rather than fetches. The first sentence is unambiguous about the tool's action and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for retrieving URL content, which implicitly differentiates it from beacon_search. However, it does not explicitly state 'use this when you have a URL' or provide exclusions/alternatives, so it falls just short of a perfect score. The context is clear enough for an agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beacon_searchA
Search the web (DuckDuckGo) and return ranked results.
Use this to discover URLs for a topic. Then call beacon_fetch on the most relevant URL to read its content.
Args: query: Search terms. max_results: Max hits to return (1..20, default 5).
Returns: List of {"title", "url", "snippet"} objects.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the search engine (DuckDuckGo), the output ranking behavior, and the return format ('List of {"title", "url", "snippet"} objects'). It does not mention potential errors or rate limits, but for a simple search tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a concise opening sentence, a usage hint, and clear Args/Returns sections. Every sentence earns its place, and the most important purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, no output schema, and no annotations, the description is complete enough. It explains the workflow with its sibling tool, parameter behavior, and return value shape, leaving no significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only titles with no descriptions, so the description adds critical meaning: 'query: Search terms' and 'max_results: Max hits to return (1..20, default 5).' It clarifies the range and default, fully compensating for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search the web (DuckDuckGo) and return ranked results.' It distinguishes itself from the sibling tool beacon_fetch by explaining that this tool discovers URLs, while beacon_fetch reads content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides usage guidance: 'Use this to discover URLs for a topic. Then call beacon_fetch on the most relevant URL to read its content.' This tells the agent when to use this tool and names the alternative for the next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.1.0- First observed
beacon_fetch - First observed
beacon_search
TDQS
The two tools have clearly distinct purposes: one searches the web for URLs and the other fetches a specific URL's content. There is no overlap or confusion between them.
Both tools use a consistent 'beacon_' prefix followed by a simple verb ('search' and 'fetch'), forming a predictable and coherent naming pattern.
With only two tools, the server feels minimally scoped for a web search/fetch utility. While each tool is essential, the count is borderline and may leave users wanting additional capabilities like URL validation or cached results.
The server provides a complete workflow: search for URLs, then fetch and read content. It covers the core domain of web searching and extraction without obvious gaps or dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Serper MCP — wraps the Serper Google Search API (serper.dev)
MCP server for Google search results via SERP API
Related MCP Servers
- AlicenseAqualityAmaintenanceA privacy-friendly MCP server that enables web searches and URL content extraction using DuckDuckGo, allowing AI assistants to access real-time web information without API keys.166542Apache 2.0
- AlicenseNot gradedqualityDmaintenanceLightweight MCP server for DuckDuckGo search with HTML fallback, safe webpage fetching, caching, and clean text extraction.AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceSmall Python MCP server that provides web search and page fetching tools via DuckDuckGo, requiring no API key.Apache 2.0
- FlicenseAqualityDmaintenanceA simple MCP server that provides web search functionality via DuckDuckGo, returning titles, URLs, and descriptions for results. Configurable result limit.1-
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/mason99-stack/beacon-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server