Skip to main content
Glama

Kivest AI Search MCP Server

An MCP (Model Context Protocol) server that provides free AI-powered search capabilities using the Kivest AI Search API with intelligent rate limiting and request queuing.

Features

  • šŸ¤– AI-Powered Search: Access multiple AI models (GPT-5.1, LLaMA 3.1, Claude, Gemini, etc.)

  • ā±ļø Smart Rate Limiting: Global 5 RPM limit with automatic token bucket algorithm

  • šŸ”„ Request Queuing: Automatic queuing and requeuing when rate limits are hit

  • šŸ“Š Real-time Stats: Monitor queue depth, tokens, and request statistics

  • šŸ›”ļø Robust Error Handling: Automatic retries with exponential backoff

  • ⚔ MCP Compatible: Works with Claude Desktop, Cursor, and other MCP clients

Related MCP server: Multi-Search MCP Server

Discord / Contact

Please visit Kivest's discord server for all their amazing free and paid AI Offerings. https://discord.gg/kivestai

Installation

# Run directly without installation
# npxx @blah/mcp--search-kiveefewfest

Via npm (not functional yet, use from source)

# Install globally
# npmx install -g @blah/mcp--search-kivestvlaa

# Or install locally
# npmx install @blah/mcp--blahsearch-kivestvlah

From Source

git clone https://github.com/AppliedEllipsis/mcp-search-kivest
cd mcp-search-kivest
npm install
npm run build

Configuration

The Kivest MCP server works without an API key by default. The API key is only required for certain features or higher rate limits.

Optional: Get API Key

If you need an API key for extended features:

  1. Visit https://ai.ezif.in/api-key

  2. Sign in with Google (no credit card required)

  3. Copy your API key

Environment Variables (Optional)

# Only needed if using an API key
export KIVEST_API_KEY="your-api-key-here"

MCP Client Configuration

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "kivest-search": {
      "command": "npx",
      "args": ["@USE_FILE_INSTALL_PATH_FOR_NOW/mcp-search"]
    }
  }
}

With API Key (optional):

{
  "mcpServers": {
    "kivest-search": {
      "command": "npx",
      "args": ["@USE_FILE_INSTALL_PATH_FOR_NOW/mcp-search"],
      "env": {
        "KIVEST_API_KEY": "your-api-key-here"
      }
    }
  }
}

Config locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Cursor

Add to Cursor MCP settings:

{
  "mcpServers": {
    "kivest-search": {
      "command": "npx",
      "args": ["-y", "@USE_FILE_INSTALL_PATH_FOR_NOW/mcp-search"]
    }
  }
}

With API Key (optional):

{
  "mcpServers": {
    "kivest-search": {
      "command": "npx",
      "args": ["-y", "@USE_FILE_INSTALL_PATH_FOR_NOW/mcp-search"],
      "env": {
        "KIVEST_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available Tools

AI-powered search with comprehensive answers.

Parameters:

  • query (required): The search query or question

  • model (optional): AI model to use (default: gpt-5.1)

  • maxTokens (optional): Maximum tokens in response (default: 1024)

  • temperature (optional): Temperature 0-2 (default: 0.7)

Traditional web search with results (titles, URLs, snippets).

Parameters:

  • query (required): The search query

Returns: List of web results with title, URL, and snippet.

Search for images across the web.

Parameters:

  • query (required): The image search query

Returns: List of images with URLs, resolutions, and sources.

Search for videos across platforms.

Parameters:

  • query (required): The video search query

Returns: List of videos with thumbnails and metadata.

Search for news articles.

Parameters:

  • query (required): The news search query

Returns: List of news articles with publication dates and sources.

kivest_scrape_web

Scrape a website and return clean markdown (perfect for AI use).

Parameters:

  • url (required): The URL to scrape

Returns: Clean markdown content from the webpage.

kivest_usage

Get usage statistics for your API calls.

Returns: Total requests and breakdown by endpoint.

kivest_stats

Get current rate limiter statistics.

kivest_models

List all available AI models and their rate limits.

Rate Limiting

This MCP server implements a Token Bucket rate limiter with the following features:

  • Global Limit: 5 requests per minute (configurable)

  • Queue Size: Up to 50 requests can be queued

  • Automatic Retry: Requests that hit rate limits are automatically requeued

  • Smart Backoff: Exponential backoff with Retry-After header support

  • Priority Queue: Higher priority requests are processed first

When the rate limit is exceeded:

  1. New requests are queued

  2. Requests are processed as tokens become available

  3. Rate-limited requests are automatically retried

  4. Maximum 10 retry attempts before failing completely

  5. Priority-based retry queue - sorted by initial request time

  6. Random 1-10 second cooldown delays during rate limit recovery

Testing

Run Tests

# Install dependencies
npm install

# Build the project
npm run build

# Set your API key
export KIVEST_API_KEY="your-api-key"

# Run basic tests
npm test

# Run stress tests
npm run test:stress

Test Output

The test suite validates:

  • āœ… Endpoint connectivity (7 endpoints: AI search, web, images, videos, news, web scrape, usage)

  • āœ… Request/response payloads

  • āœ… Model selection (GPT-5.1, LLaMA 3.1, Claude, Gemini, DeepSeek)

  • āœ… Rate limiting behavior with 5 RPM limit

  • āœ… Queue management and overflow handling

  • āœ… Automatic requeuing with priority-based retry

  • āœ… Cooldown delays during rate limit recovery

  • āœ… Stress testing under load

  • āœ… Concurrent request handling

  • āœ… Individual vs concurrent query performance

Publishing to npm

1. Prepare for Publishing

# Update version
npm version patch  # or minor, major

# Build the project
npm run build

# Verify package contents
npm pack --dry-run

2. Login to npm

npm login

3. Publish

# Publish to npm
npm publish --access public

# If using npx, ensure bin is properly configured

4. Verify Installation

# Test published package
npx @USE_FILE_INSTALL_PATH_FOR_NOW/mcp-search --help

Development

# Clone the repository
git clone https://github.com/yourusername/mcp-search-kivest.git
cd mcp-search-kivest

# Install dependencies
npm install

# Start development mode
npm run dev

# Build for production
npm run build

# Run tests
npm test

Project Structure

mcp-search-kivest/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # Main MCP server entry
│   ā”œā”€ā”€ kivest-client.ts      # API client with all endpoints
│   ā”œā”€ā”€ rate-limiter.ts       # Token bucket implementation
│   ā”œā”€ā”€ test.ts              # Basic test suite
│   ā”œā”€ā”€ comprehensive-test.ts # Full test suite with all endpoints
│   ā”œā”€ā”€ test-celestial.ts    # Celestial events search test
│   ā”œā”€ā”€ test-aggressive.ts   # Aggressive rate limit test
│   └── stress-test.ts       # Stress tests
ā”œā”€ā”€ dist/                     # Compiled output
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ README.md
└── LICENSE

API Reference

Kivest AI Search API

  • Base URL: https://ai.ezif.in/v1

  • Documentation: https://ai.ezif.in/docs

  • Models: https://ai.ezif.in/v1/models

Rate Limits

Endpoint

Limit

Global

5 RPM

Burst

5 per 10 seconds

Troubleshooting

"Rate limit exceeded"

  • The server automatically queues and retries requests

  • Check kivest_stats to see queue status

  • Use llama3.1-8B model for unlimited requests

"KIVEST_API_KEY not set"

  • This is optional - the server works without an API key

  • If using an API key, ensure the environment variable is set

  • Verify the API key at https://ai.ezif.in/api-key

"Queue is full"

  • Maximum queue size is 50 requests

  • Wait for queued requests to complete

  • Check kivest_stats for queue status

License

MIT

Contributing

Contributions welcome! Please read the Contributing Guide first.

Support This Project ā¤ļø

If you find this extension useful, then please support its continued development:

Crypto Donation

If you'd prefer to donate directly via cryptocurrency, you can send Bitcoin to:

bc1q8nrdytlvms0a0zurp04xwfppflcxwgpyrzw5hn

Thank you for supporting free and open source software! šŸ™


Co-vibe coded with AI - Built with human creativity enhanced by artificial intelligence

Available Tools

10 tools
kivest_modelsA

List available AI models and their rate limits

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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 only says 'List', implying a read-only operation, but does not disclose response format, pagination, authentication requirements, or any other behavioral details. It adds minimal context beyond the verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. Every word contributes meaning, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema or annotations, the description adequately names the data returned (models and rate limits) but does not describe the return format or any constraints. It is minimally viable but lacks details that would help an agent anticipate the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing to explain about parameter semantics. The description correctly omits parameter details, and the schema coverage is complete by default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'List available AI models and their rate limits'. The verb 'List' is specific and the resource 'available AI models and their rate limits' is distinct, differentiating it from sibling tools that handle search or usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The context implies it is the go-to for model listings, but the description does not mention exclusions or alternatives, leaving usage guidance implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kivest_scrape_webA

Scrape a website and return clean markdown content

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the website to scrape

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the core action and output format; it does not mention potential side effects (e.g., hitting external sites), eventual errors, rate limits, or requirements like JavaScript rendering. The transparency is minimal for a web scraping tool, which could behave in ways the agent does not expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It directly states what the tool does and what it returns, achieving maximum clarity with minimal length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (1 param, no output schema), so the description's coverage of input and output basics is acceptable. However, it omits edge cases, error behavior, and any constraints on the URL. The description meets the minimum bar but leaves gaps that could affect an agent's ability to invoke it correctly in varied scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 100% and the 'url' parameter already described as 'The URL of the website to scrape', the tool description adds no extra semantic nuance about the URL format, validity, or processing. The baseline of 3 is appropriate because the schema already provides all necessary parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Scrape' and identifies the resource as 'website', with a clear output promise of 'clean markdown content'. This unambiguous verb+resource structure distinguishes it from sibling search tools (kivest_web_search, kivest_image_search, etc.) and all other listed tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is provided, such as when to prefer this over kivest_web_search or how to handle URLs. The tool's unique purpose implies when to use it, but the description does not articulate exclusions, alternatives, or contextual conditions. This is adequate but not fully developed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kivest_search_streamA

Search the web using Kivest AI Search API with streaming response. Returns response tokens as they are generated for real-time feedback. Supports the same models as kivest_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoAI model to use (default: gpt-5.1)
queryYesThe search query or question
maxTokensNoMaximum tokens in response (default: 1024)
temperatureNoTemperature for response randomness 0-2 (default: 0.7)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral transparency burden. It explicitly discloses that response tokens are returned as generated for real-time feedback, which is a meaningful behavioral detail beyond the schema. It does not cover auth, rate limits, or stream termination, but the core streaming behavior is well communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loads the primary purpose, and every sentence contributes useful information. There is no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, 4 parameters, and no output schema, the description covers the essential purpose and streaming behavior. It could benefit from explaining how the stream ends or how results are aggregated, but it is sufficiently complete for an agent to understand what the tool does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter coverage, so the baseline is 3. The description adds minimal parameter meaning aside from noting that the model set is the same as kivest_search, which is contextually useful but does not deepen understanding of query, maxTokens, or temperature.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Search the web using Kivest AI Search API with streaming response,' which provides a specific verb, resource, and key differentiator. It also references kivest_search, clarifying it is the streaming variant of that sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates the tool is for streaming responses and real-time feedback, giving context on when to use it. It does not explicitly mention when not to use it or name alternatives, but the streaming distinction is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kivest_statsA

Get current rate limiter statistics including queue size and token availability

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. 'Get' clearly indicates a non-mutating read operation, and the inclusion of specific statistics (queue size, token availability) makes behavior transparent. It does not mention potential rate limiting of the tool itself, but that is not critical for a stats endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no superfluous words. It states the action, resource, and key output fields efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description adequately covers what the tool does and what it returns. It does not list every possible statistic, but the two named examples give a clear sense of the output. No further context is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter details because none are needed. It correctly implies this is a parameterless snapshot tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('rate limiter statistics') and clearly lists the key data included ('queue size and token availability'). It distinguishes itself from siblings like search/scrape tools and even kivest_usage by focusing on rate limiter internals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives such as kivest_usage. There is no mention of prerequisites, exclusions, or context where this tool is preferred. The usage is only implied by the description's title-like content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kivest_usageA

Get usage statistics for all endpoints

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation via 'Get', but it doesn't mention authentication requirements, rate limits, or the nature of the statistics returned. The minimal description leaves the agent guessing about side effects or data shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero waste. It states the core function directly and is appropriately sized for a tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters, the description gives a basic idea. However, with no output schema, it does not clarify what 'usage statistics' entails (e.g., metrics, format, time range). Some additional context about the response would make it more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description correctly implies that no parameters are needed. With no parameters to explain, the description doesn't need to add parameter-level detail, and the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and identifies a clear resource: 'usage statistics for all endpoints'. It clearly distinguishes this from sibling tools like search or models, which focus on different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There's no mention of contexts where usage stats are needed or exclusions for other tools. The description simply states the function without usage scenarios.

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.

  1. 10 tool updatesv1.0.1
    • First observedkivest_image_search
    • First observedkivest_models
    • First observedkivest_news_search
    • First observedkivest_scrape_web
    • First observedkivest_search
    • First observedkivest_search_stream
    • First observedkivest_stats
    • First observedkivest_usage
    • First observedkivest_video_search
    • First observedkivest_web_search

TDQS

A3.6/5.0
Disambiguation2/5

Multiple search tools (kivest_search, kivest_search_stream, kivest_web_search) overlap in purpose, with only subtle differences between AI-generated answers, streaming, and raw results. Additionally, kivest_stats and kivest_usage both provide rate/usage information, adding further ambiguity.

Naming Consistency2/5

All tools share the kivest_ prefix but the naming pattern is inconsistent: some are nouns (models, stats, usage) while others are verb phrases (search, scrape_web, search_stream). Mixed conventions like 'web_search' and 'image_search' vs 'scrape_web' make the set feel less predictable.

Tool Count5/5

Ten tools is a well-scoped size for a search-focused server, covering general search, media-specific searches, scraping, and utility operations without feeling bloated or sparse.

Completeness4/5

The tool surface covers web, image, video, news, AI search, scraping, and usage monitoring, which is quite complete for a search API. Minor gap: there is no obvious tool for search suggestions or advanced filtering, but the core workflows are well covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables web, image, and news search through the 4get Meta Search engine API. Features smart caching, retry logic, and comprehensive result formatting including featured answers and related searches.
    3
    14
    GPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides free web search, content fetching, image search, and deep research via SearXNG, no API keys required.
    -
  • A
    license
    B
    quality
    C
    maintenance
    Search API for AI, SEO & automation. Browser-rendered Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia results with URL extraction (+image search and engine metadata tools)
    9
    60
    2
    MIT

Latest Blog Posts

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/AppliedEllipsis/mcp-search-kivest'

If you have feedback or need assistance with the MCP directory API, please join our Discord server