kagimcp
The Official Model Context Protocol (MCP) server for Kagi search & other tools. Python-based implementation.
Documentation
Kagi MCP Server
An MCP server backed by the Kagi API. It exposes search and extraction tools to MCP-compatible clients.
Tools
- `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_fastgpt` and `kagi_summarizer` tools have been removed. Both are planned to return in a future release.
Hosted Server
We run a hosted MCP server at `https://mcp.kagi.com/mcp` — no install required. Point any HTTP-capable MCP client at it and authenticate with your Kagi API key.
OAuth2 isn't supported yet (it's on our roadmap), so for now grab your API key from the dashboard and pass it via `Bearer` HTTP authentication.
Example with Claude Code:
claude mcp add kagi https://mcp.kagi.com/mcp --transport http --header "Authorization: Bearer $(read -sp 'API key: ' k; echo $k)" --scope userPrefer to run it yourself? See Client Setup for the local `uvx` install, or Self-Hosting to host the HTTP server on your own infrastructure.
Requirements
- A Kagi API key in `KAGI_API_KEY`.
- `uv` for the recommended `uvx` install path.
Install `uv`:
curl -LsSf https://astral.sh/uv/install.sh | shWindows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Client Setup
Codex CLI
codex mcp add kagi --env KAGI_API_KEY= -- uvx kagimcpCodex writes MCP configuration to `~/.codex/config.toml`.
Claude Desktop
Install uv first.
MacOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows:
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 Code
claude mcp add kagi -e KAGI_API_KEY="YOUR_API_KEY_HERE" -- uvx kagimcpSmithery
npx -y @smithery/cli install kagimcp --client claudeKiro
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.
OpenCode
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": ""
}
}
}
}Usage Examples
- Search: `Who was Time's 2024 person of the year?`
- Extract: `extract the full content of https://en.wikipedia.org/wiki/Model_Context_Protocol`
Configuration
| 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_idExample:
KAGI_HIDDEN_PARAMS="extract_count,after,before,time_relative,include_domains,exclude_domains"Local Development
git clone https://github.com/kagisearch/kagimcp.git
cd kagimcp
uv syncRun locally over stdio:
KAGI_API_KEY= uv run kagimcpRun with streamable HTTP transport:
KAGI_API_KEY= uv run kagimcp --http --host 0.0.0.0 --port 8000Self-Hosting
HTTP mode is multi-tenant: each request supplies its API key via the
`Authorization: Bearer ` 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-hostedSmoke 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.
Debugging
Inspect the published package:
npx @modelcontextprotocol/inspector uvx kagimcpInspect a local checkout:
npx @modelcontextprotocol/inspector uv --directory /ABSOLUTE/PATH/TO/kagimcp run kagimcpThe inspector is usually available at `http://localhost:5173`.
Prerelease Instructions
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).
Frequently asked questions
What is kagimcp?
kagimcp is The Official Model Context Protocol (MCP) server for Kagi search & other tools. Python-based implementation.
How do I install kagimcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is kagimcp open source?
Yes — it is hosted on GitHub at https://github.com/kagisearch/kagimcp and has 214 stars.
Related MCP tools
The only general AI agent that does NOT requires extra API key, giving you full control on your local and remote MacOs from Claude Desktop App
Unlock 650+ MCP servers tools in your favorite agentic framework. Python-based implementation.
A MCP (Model Context Protocol) server for interacting with dbt. Python-based implementation.
MCP server for DuckDB and MotherDuck Python-based implementation.
FreeCAD MCP(Model Context Protocol) server Python-based implementation.
A text-based user interface (TUI) client for interacting with MCP servers using Ollama. Features include multi-server, dynamic model switching, streaming res...
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP