MCP Seekr Server
The MCP Seekr Server enables web searching and content extraction from webpages using the Seekr API.
Core Features:
Web Search: Query Google or Wikipedia with customizable parameters including number of results (1-50), language/region filtering, safe search levels, time ranges, and advanced search operators for specific sites, file types, or exact phrases
Content Extraction: Extract clean text content from any valid HTTP/HTTPS webpage URL to get detailed information beyond search snippets
Real-time Data Access: Get current information on news, events, product details, and recent developments
Technical Capabilities:
Production-ready with input validation, rate limiting (100 calls/minute), and comprehensive error handling
Health monitoring with status endpoints
Environment variable configuration
Seamless integration with all MCP-enabled AI clients through stdio transport
Enables web search capabilities through Google search engine with advanced filtering options including language, region, safe search, time ranges, and search operators for site-specific, file type, and content-based searches
Provides search functionality for Wikipedia content with language and region filtering to access encyclopedic information across different languages and locales
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., "@MCP Seekr Serverfind recent articles about quantum computing breakthroughs"
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.
MCP Seekr Server
A production-ready Model Context Protocol (MCP) server that provides web search and content extraction capabilities via the Seekr API.
π Requirements
Python 3.10+: This MCP server requires Python 3.10 or higher to run
β¨ Features
Web Search: Search Google and Wikipedia with advanced filtering
Content Extraction: Extract clean text content from any webpage
Input Validation: Comprehensive validation for URLs and search queries
Rate Limiting: Built-in protection against API abuse (100 calls/minute)
Health Monitoring: Health check endpoint for monitoring
Environment Configuration: Configurable via environment variables
Production Ready: Comprehensive error handling and logging
MCP Compatible: Works with all MCP-enabled AI clients
π Quick Start
Installation
# Clone the repository
git clone https://github.com/seekr-sh/mcp-server-seekr.git
cd mcp-seekr
# Install dependencies
pip install -r requirements.txt
# Optional: Create and configure .env file
cp .env.example .envRunning the Server
# Start the server (for development)
python seekr.py
# Or after installation
mcp-server-seekrThe server runs with stdio transport for MCP client compatibility.
π§ Configuration
Environment Variables
Create a .env file in the project root:
# Seekr API Configuration
SEEKR_BASE_URL=https://engine.seekr.sh
SEEKR_API_KEY=your_api_key_here
SEEKR_TIMEOUT=30
SEEKR_MAX_RETRIES=3
# Rate Limiting
MAX_CALLS_PER_MINUTE=100
# Logging
LOG_LEVEL=INFO
# Server Configuration (optional)
PORT=8000
HOST=127.0.0.1Note: You can also set these as environment variables directly instead of using a .env file. The application will automatically load from .env if it exists, or fall back to system environment variables.
MCP Client Configuration
For Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"seekr": {
"command": "uvx",
"args": ["mcp-server-seekr"],
"env": {
"SEEKR_API_KEY": "your-api-key-here"
}
}
}
}Alternative configuration (using Python directly):
{
"mcpServers": {
"seekr": {
"command": "python3",
"args": ["/path/to/mcp-seekr/seekr.py"],
"env": {
"SEEKR_API_KEY": "your-api-key-here"
}
}
}
}This server uses stdio transport for MCP compatibility.
π οΈ Tools
seekr_query
Search the web using Google.
Parameters:
query(string, required): Search query (max 500 characters)num(integer, optional): Number of results 1-50 (default: 10)
Example:
{
"query": "latest AI developments 2024",
"num": 5
}seekr_prism
Extract text content from a webpage URL.
Parameters:
url(string, required): Valid HTTP/HTTPS URL to extract content from
Example:
{
"url": "https://example.com/article"
}"status": "healthy", "timestamp": 1694598000.123, "version": "1.0.0", "services": { "seekr_api": "healthy" } }
- **Robust Error Handling**: Automatic retries and detailed error reporting
- **Type Safety**: Full TypedDict definitions for reliable API interactions
## π Installation
### Prerequisites
- Python 3.10 or higher
- pip package manager
### Using pip
```bash
# Install from source
git clone <your-repo-url>
cd mcp-server-seekr
pip install -e .Development Installation
# Clone the repository
git clone <your-repo-url>
cd mcp-server-seekr
# Install with development dependencies
pip install -e ".[dev]"βοΈ Configuration
For Claude Desktop
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"seekr": {
"command": "seekr-mcp",
"env": {
"SEEKR_API_KEY": "your-api-key-here"
}
}
}
}Environment Variables (Optional)
Create a .env file in your project root:
# Seekr API Configuration (if needed in future)
SEEKR_BASE_URL=https://seekr.dfs.im
SEEKR_TIMEOUT=30
SEEKR_MAX_RETRIES=3π― Usage Examples
When to Use the Tools
Use seekr_search when you need:
Current information, recent news, or developments that may have changed since your last training data
Real-time web search results from Google or Wikipedia
Localized content in different languages and regions
Advanced search operators (site-specific, file types, date ranges, etc.)
Use seekr_fetch when you need:
To read the actual content of a webpage or article
Clean text extraction from websites you can't access directly
Analyzing web page content or online documents
Basic Web Search
# Current news and recent developments
{
"name": "seekr_search",
"arguments": {
"query": "latest developments in quantum computing 2024",
"engine": "google",
"language": "en",
"num": 10,
"time_range": "month"
}
}
# Localized search in Portuguese
{
"name": "seekr_search",
"arguments": {
"query": "notΓcias sobre inteligΓͺncia artificial no Brasil",
"engine": "google",
"language": "pt",
"region": "BR",
"num": 5
}
}Advanced Search with Operators
# Search specific sites for technical documentation
{
"name": "seekr_search",
"arguments": {
"query": "machine learning tutorial",
"site": "github.com",
"filetype": "pdf",
"intitle": "guide",
"num": 20
}
}
# News search with time filter
{
"name": "seekr_search",
"arguments": {
"query": "climate change solutions",
"search_type": "news",
"time_range": "week",
"language": "en"
}
}Web Content Extraction
# Extract article content
{
"name": "seekr_fetch",
"arguments": {
"url": "https://example.com/article",
"language": "en"
}
}
# Extract Portuguese content
{
"name": "seekr_fetch",
"arguments": {
"url": "https://example.com/artigo",
"language": "pt"
}
}
### Web Scraping
The `seekr_fetch` tool provides clean content extraction:
```python
{
"url": "https://example.com/article",
"language": "en"
}π§ API Reference
seekr_search Tool
Performs web searches using Seekr API with support for Google and Wikipedia.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Search query string |
| string | No | Search engine: "google" (default) or "wikipedia" |
| string | No | Language code (ISO 639-1, e.g., "en", "es") |
| string | No | Region code (ISO 3166-1 alpha-2, e.g., "US", "GB") |
| integer | No | Safe search level: 0=off, 1=medium, 2=high |
| string | No | Time filter: "day", "week", "month", "year" |
| integer | No | Page number (1-based, default: 1) |
| string | No | Search type: "web", "images", "videos", "news" |
| integer | No | Number of results (max 100 for Google, 50 for Wikipedia) |
Advanced Search Operators:
Parameter | Type | Description |
| string | Limit results to specific domain |
| string | Limit to specific file types |
| string | Search for pages with word in URL |
| string | Search for pages with word in title |
| string | Exact phrase match |
| string | Terms to exclude (comma-separated) |
| string | Alternative terms (comma-separated) |
seekr_fetch Tool
Scrapes and extracts clean text content from web pages.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | URL of the webpage to scrape |
| string | No | Language code for content extraction |
ποΈ Architecture
mcp-server-seekr/
βββ src/mcp_server_seekr/
β βββ __init__.py
β βββ main.py # MCP server implementation
β βββ services/
β β βββ __init__.py
β β βββ seekr_client.py # Seekr API client
β βββ tools/
β β βββ __init__.py
β β βββ search_tool.py # Search tools implementation
β βββ types/
β βββ __init__.py
β βββ seekr.py # Type definitions
βββ pyproject.toml # Project configuration
βββ requirements.txt # Dependencies
βββ README.md # This fileComponents
SeekrClient: HTTP client for Seekr API with retry logic and error handling
SeekrSearchTools: Business logic layer that handles search and fetch operations
Main Server: MCP server implementation with tool registration and request handling
Type Definitions: Comprehensive TypedDict definitions for type safety
π¨ Error Handling
The server implements comprehensive error handling:
Validation Errors: Missing required parameters
API Errors: Seekr API failures with detailed error messages
Network Errors: Connection issues with automatic retries
Timeout Handling: Configurable request timeouts
π§ͺ Testing
Run the test suite:
# Install test dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=mcp_server_seekr
# Run specific test file
pytest tests/test_seekr_client.pyπ Development
Setting up Development Environment
# Clone and install in development mode
git clone <your-repo-url>
cd mcp-server-seekr
pip install -e ".[dev]"
# Run formatting
black src/
ruff check src/
# Run type checking
mypy src/Project Structure Guidelines
Use TypedDict for all API request/response types
Implement proper error handling with detailed error messages
Add logging for debugging and monitoring
Follow async/await patterns for all I/O operations
Include comprehensive docstrings for all public methods
π License
MIT License - see LICENSE file for details.
π€ Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Ensure all tests pass
Submit a pull request
π Support
For issues and questions:
Open an issue on GitHub
Check existing issues for solutions
Review the Seekr API documentation
π Related Projects
MCP TypeScript Server - Original Serper-based implementation
Seekr API - The underlying search API
Model Context Protocol - MCP Python SDK
Available Tools
2 toolsseekr_prismA
Prism and extract detailed text content from a specific webpage URL.
Use this tool to get full content from URLs found in query results. This provides more detailed information than query snippets alone.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Valid HTTP/HTTPS URL to prism and extract text content from |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's behavior as extracting 'detailed text content' and 'full content' from URLs, which is useful. However, it lacks information on potential limitations (e.g., rate limits, authentication needs, error handling for invalid URLs, or content types). The description doesn't contradict annotations, but it could be more comprehensive given the absence of annotations.
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 concise and well-structured, consisting of two sentences. The first sentence states the purpose clearly, and the second provides usage guidelines. There is no wasted text, and it is front-loaded with essential information, making it efficient and easy to understand.
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 complexity (simple single-parameter operation), high schema coverage (100%), and the presence of an output schema (implied by context signals), the description is reasonably complete. It covers purpose and usage context adequately. However, it could improve by addressing behavioral aspects like error cases or performance, especially since no annotations are provided to fill those 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 input schema has 100% description coverage, with the 'url' parameter well-documented as a 'Valid HTTP/HTTPS URL to prism and extract text content from.' The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 purpose: 'Prism and extract detailed text content from a specific webpage URL.' It uses specific verbs ('prism and extract') and identifies the resource ('webpage URL'). However, it doesn't explicitly differentiate from its sibling tool 'seekr_query' beyond mentioning 'query results' and 'query snippets,' which is implied but not direct.
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 provides clear context for when to use this tool: 'Use this tool to get full content from URLs found in query results. This provides more detailed information than query snippets alone.' It implies an alternative (query snippets from 'seekr_query') and suggests using this for deeper content extraction. However, it doesn't explicitly state when not to use it or name the sibling tool directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seekr_queryA
Query for information using Google query engine.
This tool performs web queries to find current information, news, and diverse content. Use this for: current events, news, product information, troubleshooting, recent developments, and real-time information.
After getting query results, use seekr_prism to get detailed content from specific URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| num | No | Number of query results to return (1-50) | |
| query | Yes | Query string to find relevant information |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool performs web queries and finds current information, which implies it's a read-only operation without destructive effects. However, it lacks details on rate limits, authentication needs, or specific behavioral traits like pagination or error handling. The description adds basic context but doesn't fully compensate for the absence of annotations.
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 appropriately sized and front-loaded: it starts with the core purpose, lists usage scenarios, and ends with a clear call-to-action for the sibling tool. Every sentence adds value without redundancy, making it efficient and well-structured.
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 complexity (a web query tool with 2 parameters), the description provides good context on usage and sibling tool relationship. Since an output schema exists, the description doesn't need to explain return values. However, with no annotations, it could benefit from more behavioral details like rate limits or error handling, slightly reducing completeness.
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?
Schema description coverage is 100%, so the schema already documents both parameters (query and num) with descriptions. The description doesn't add any additional meaning or semantics beyond what the schema provides, such as query formatting examples or result interpretation. This meets the baseline of 3 when schema coverage is high.
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 purpose: 'Query for information using Google query engine' and 'performs web queries to find current information, news, and diverse content.' It specifies the verb (query) and resource (web information via Google). However, it doesn't explicitly differentiate from its sibling tool seekr_prism beyond mentioning their relationship, which slightly reduces clarity.
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 provides explicit usage guidelines: 'Use this for: current events, news, product information, troubleshooting, recent developments, and real-time information.' It also specifies when to use an alternative: 'After getting query results, use seekr_prism to get detailed content from specific URLs.' This clearly distinguishes when to use this tool versus its sibling.
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
v1.0.0- First observed
seekr_prism - First observed
seekr_query
TDQS
The two tools have clearly distinct purposes: seekr_query performs web searches to find URLs and information, while seekr_prism extracts detailed content from specific URLs. There is no overlap or ambiguity between querying for information and extracting content from a given URL.
Both tools follow a consistent 'seekr_' prefix pattern with descriptive suffixes (query and prism). This naming convention is uniform and predictable, making it easy to understand the tool's function from its name alone.
With only two tools, the server feels thin for a web search and content extraction domain. While the tools cover core workflows (search and extract), the scope might benefit from additional tools for tasks like filtering results, managing search history, or handling different content types.
The tool set covers the essential workflow of querying for information and extracting detailed content from URLs, with clear guidance on how to use them together. A minor gap is the lack of tools for advanced search parameters or content processing, but agents can effectively perform core tasks with the provided tools.
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
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Provides AI assistants with access to Seltz's powerful Web Search capabilities.
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
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/seekr-sh/mcp-server-seekr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server