Labsco
kagisearch logo

Kagi Search

โ˜… 432

from kagisearch

Search the web using Kagi's search API

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredAdvanced setup

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:

Copy & paste โ€” that's it
claude mcp add kagi https://mcp.kagi.com/mcp --transport http --header "Authorization: Bearer $(read -sp 'API key: ' k; echo $k)" --scope user

Prefer to run it yourself? See Client Setup for the local uvx install, or Self-Hosting to host the HTTP server on your own infrastructure.

Local Development

Copy & paste โ€” that's it
git clone https://github.com/kagisearch/kagimcp.git
cd kagimcp
uv sync

Run locally over stdio:

Copy & paste โ€” that's it
KAGI_API_KEY= uv run kagimcp

Run with streamable HTTP transport:

Copy & paste โ€” that's it
KAGI_API_KEY= uv run kagimcp --http --host 0.0.0.0 --port 8000

Self-Hosting

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:

Copy & paste โ€” that's it
docker build -t kagimcp-hosted .
docker run --rm -p 8000:8000 kagimcp-hosted

Smoke test:

Copy & paste โ€” that's it
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:

Copy & paste โ€” that's it
npx @modelcontextprotocol/inspector uvx kagimcp

Inspect a local checkout:

Copy & paste โ€” that's it
npx @modelcontextprotocol/inspector uv --directory /ABSOLUTE/PATH/TO/kagimcp run kagimcp

The 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).