Telescope is an MCP server that enables AI agents to search the web and retrieve cleaned, readable text content from search results without any search engine API keys, bridging the gap between AI agents and web content by providing structured access to web information straight from your local machine.
- Web Search Integration - Search the web using natural language queries
- Cleaned Text Extraction - Automatically removes ads, navigation, and other noise using ScrubberKit
- Result Re-Ranking (Default On) - Intelligent heuristic + BM25 based URL re-ranking powered by ScrubberKit to prioritize higher quality, deduplicated sources (can be disabled with
--disable-rerank) - No API Keys Required - Works out of the box; does NOT rely on Google/Bing/thirdโparty search API keys
- Configurable Results - Control the number of search results (10-20 documents)
- MCP Compatible - Works seamlessly with Claude Desktop, Cursor, and other MCP-compatible AI agents
- Privacy-Focused - Runs locally on your machine
You can either grab the prebuilt universal macOS binary from GitHub Releases (recommended) or build from source.
- Go to: https://github.com/nedithgar/Telescope/releases/latest
- Download the asset:
telescope-server-vX.Y.Z-macOS-universal(example:telescope-server-v0.1.0-macOS-universal) - Download the matching checksum:
telescope-server-vX.Y.Z-macOS-universal.sha256 - Verify integrity (substitute the actual version):
shasum -a 256 -c telescope-server-v0.1.0-macOS-universal.sha256Expected output ends with OK.
Install systemโwide (recommended for macOS). This places the binary where itโs already on your PATH.
chmod +x telescope-server-v0.1.0-macOS-universal
sudo mv telescope-server-v0.1.0-macOS-universal /usr/local/bin/telescope-serverVerify it runs:
telescope-server --help || echo "Install check failed"Example JSON snippet (macOS install via /usr/local/bin):
{
"mcpServers": {
"telescope": {
"command": "/usr/local/bin/telescope-server",
"args": []
}
}
}If you used a custom location (e.g. ~/bin/telescope-server), update the command accordingly.
Disable reranking (use raw ordering):
telescope-server --disable-rerankIncrease per-host result allowance:
telescope-server --rerank-keep-per-host=3If you prefer to build instead of downloading, see the next section.
- macOS 26.0+
- Swift 6.2+
- Xcode 26.0+ with Command Line Tools
# Clone the repository
git clone https://github.com/yourusername/Telescope.git
cd Telescope
# Build the server
swift build -c release
# The binary will be available at:
# .build/release/telescope-serverFor development and testing:
# Build in debug mode
swift build -c debug
# Run tests
swift testThe Telescope server requires no additional configuration. It uses ScrubberKit's built-in web search capabilities to fetch and clean web content.
Telescope performs discovery and retrieval directly via ScrubberKit's integrated search + extraction pipeline. You do not need to:
- Create a Google Custom Search Engine
- Supply Bing, SerpAPI, or other paid API credentials
- Manage rate limits or billing for third-party search APIs
Just build and runโTelescope will return cleaned textual excerpts from real web pages. (Normal network access from your machine is, of course, required.)
- Result Limit: 10-20 documents per search (configurable per request, clamped to this range)
- Text Truncation: Each document is limited to 20,000 characters to optimize token usage
- Thread Safety: All operations are performed on the main thread
- Re-Ranking: Enabled by default. Pass
--disable-rerankas a command line argument to the server binary to fall back to raw engine ordering.
If you prefer the original search engine result ordering without heuristic merging and BM25 scoring, launch the server with:
./.build/release/telescope-server --disable-rerankWhen disabled, the server logs: Rerank disabled via --disable-rerank on startup.
By default the balanced rerank profile limits results to 2 per hostname to improve diversity. You can change this with:
./.build/release/telescope-server --rerank-keep-per-host=3Use a value > 0. Set a very large number to effectively disable the cap.
Search the web for a query and return cleaned textual page excerpts.
Parameters:
query(required): The search query keywordslimit(optional): Maximum number of documents to return (default: 10, max: 20)
Telescope uses a modern service-based architecture:
- Telescope (Library) - Core service (
TelescopeSearchService) for web searching and text extraction using ScrubberKitSearchDocument- Lightweight, Sendable document structure for serializationsearch(query:limit:)- Async search method that runs ScrubberKit on main threadformatResults(query:documents:)- Formats search results as readable text
- TelescopeServer (Executable) - MCP server that exposes the Telescope service to AI agents
- Handles
ListToolsandCallToolMCP methods - Uses
StdioTransportfor communication
- Handles
- ServiceLifecycle - Manages the server lifecycle with graceful shutdown (SIGINT/SIGTERM)
Use the MCP Inspector to test the server:
npx @modelcontextprotocol/inspector /path/to/Telescope/.build/release/telescope-serverThe server uses Swift's Logging framework and logs to stderr by default at .info level. To view logs:
# When running directly
.build/release/telescope-server 2>&1 | tee telescope.log
# Claude Desktop logs can be found at:
~/Library/Logs/Claude/mcp*.logThe logger is initialized with label "dev.telescope.server" and logs client connections, shutdowns, and errors.
Contributions are welcome! Please:
- Fork the repository (or create a new branch if you have push access)
- Create a descriptive branch:
git checkout -b feature/<short-name>orbugfix/<issue-id> - Make your changes (add/update tests and docs where it helps)
- Run the test suite locally:
swift test - Commit with a clear message:
git commit -m "feat: concise summary" - Push your branch:
git push origin <branch-name> - Open a Pull Request describing the motivation, changes, and any notes for reviewers
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) - see the LICENSE file for details.
- ScrubberKit for powerful web content extraction
- Model Context Protocol team for the MCP specification and Swift SDK
Created by @nedithgar