Official Kagi Search MCP Server
Add to Claude Desktop config.json
{
"mcpServers": {
"kagisearch-kagimcp": {
"command": "python",
"args": [
"-m",
"kagimcp"
]
}
}
} Get the source and run locally
git clone https://github.com/kagisearch/kagimcp.git ~/.mcp/kagimcp
cd ~/.mcp/kagimcp An MCP server backed by the Kagi API. It exposes search and extraction tools to MCP-compatible clients.
kagi_search_fetch - web, news, videos, podcasts, and image search with optional page extracts, filters, and Kagi lenses.kagi_extract - fetch a page’s full content as markdown.Note: The previous
kagi_fastgptandkagi_summarizertools have been removed. Both are planned to return in a future release.
KAGI_API_KEY.uv for the recommended uvx install path.Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
codex mcp add kagi --env KAGI_API_KEY=<YOUR_API_KEY_HERE> -- uvx kagimcp
Codex writes MCP configuration to ~/.codex/config.toml.
Install uv first.
MacOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Then in your Claude Desktop config (found through Settings -> Developer -> Edit Config):
{
"mcpServers": {
"kagi": {
"command": "uvx",
"args": ["kagimcp"],
"env": {
"KAGI_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
claude mcp add kagi -e KAGI_API_KEY="YOUR_API_KEY_HERE" -- uvx kagimcp
npx -y @smithery/cli install kagimcp --client claude
Add to your Kiro MCP config file (~/.kiro/settings/mcp.json for global, or .kiro/settings/mcp.json for project-scoped) using the same mcpServers JSON as Claude Desktop. See the Kiro MCP documentation for more details.
Edit the OpenCode configuration file in ~/.config/opencode/opencode.json and add the following:
{
"mcp": {
"kagi": {
"type": "local",
"command": ["uvx", "kagimcp"],
"enabled": true,
"environment": {
"KAGI_API_KEY": "<YOUR_API_KEY_HERE>"
}
}
}
}
Who was Time's 2024 person of the year?extract the full content of https://en.wikipedia.org/wiki/Model_Context_Protocol| Environment variable | Description |
|---|---|
KAGI_API_KEY | Required Kagi API key. |
FASTMCP_LOG_LEVEL | Logging level, for example ERROR. |
KAGI_SEARCH_TIMEOUT | Search timeout in seconds. Defaults to 10. |
KAGI_EXTRACT_TIMEOUT | Extract timeout in seconds. Defaults to 30. |
KAGI_MAX_RETRIES | Max retry attempts after the first request. Defaults to 2; set 0 to disable retries. |
KAGI_HIDDEN_PARAMS | Comma-separated search params to hide from the LLM-facing schema. |
Hideable search params:
workflow, extract_count, limit, include_domains, exclude_domains, time_relative, after, before, file_type, lens_id
Example:
KAGI_HIDDEN_PARAMS="extract_count,after,before,time_relative,include_domains,exclude_domains"
git clone https://github.com/kagisearch/kagimcp.git
cd kagimcp
uv sync
Run locally over stdio:
KAGI_API_KEY=<YOUR_API_KEY_HERE> uv run kagimcp
Run with streamable HTTP transport:
KAGI_API_KEY=<YOUR_API_KEY_HERE> uv run kagimcp --http --host 0.0.0.0 --port 8000
HTTP mode is multi-tenant: each request supplies its API key via the
Authorization: Bearer <key> header instead of a server-wide env var, so one
instance can serve multiple users. The repo ships a Dockerfile that installs a pinned kagimcp from PyPI and
runs it in HTTP mode. The container respects $PORT so it works on any
platform that injects one (Railway, Render, Cloud Run, Fly.io, etc.).
Build and run locally:
docker build -t kagimcp-hosted .
docker run --rm -p 8000:8000 kagimcp-hosted
Smoke test:
curl -sL http://127.0.0.1:8000/mcp -X POST \
-H "authorization: Bearer $KAGI_API_KEY" \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
To bump the version in production, edit the pin in the Dockerfile and redeploy.
Inspect the published package:
npx @modelcontextprotocol/inspector uvx kagimcp
Inspect a local checkout:
npx @modelcontextprotocol/inspector uv --directory /ABSOLUTE/PATH/TO/kagimcp run kagimcp
The inspector is usually available at http://localhost:5173.
If using a prerelease build, the same installation instructions apply, but use uvx --prerelease allow --from kagimcp==1.0.0rc2 kagimcp instead of uvx kagimcp (replace 1.0.0rc2 with whatever version you’re wanting to install).
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Search ArXiv research papers
Discover, extract, and interact with the web - one interface powering automated access across the public internet.
Web search using free multi-engine search (NO API KEYS REQUIRED) — Supports Bing, Baidu, DuckDuckGo, Brave, Exa, and CSDN.
Web search using DuckDuckGo
Web search capabilities using Brave's Search API