Skip to main content

Kagi MCP server

Project description

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.

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 | sh

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Client Setup

Codex CLI

codex mcp add kagi --env KAGI_API_KEY=<YOUR_API_KEY_HERE> -- uvx kagimcp

Codex writes MCP configuration to ~/.codex/config.toml.

Claude Desktop

{
  "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 kagimcp

Smithery

npx -y @smithery/cli install kagimcp --client claude

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_id

Example:

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 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

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:

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.

Debugging

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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kagimcp-1.0.0.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kagimcp-1.0.0-py3-none-any.whl (82.8 kB view details)

Uploaded Python 3

File details

Details for the file kagimcp-1.0.0.tar.gz.

File metadata

  • Download URL: kagimcp-1.0.0.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for kagimcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 62aecd33438bd7bafd3b4fd7bf524109eaabfd59fd66d8b5105bdd8e629b6a9c
MD5 04207e10bd28c3eb4d0fe3a8ba116637
BLAKE2b-256 ed8c37bfec3c8f88e8e83a48a890216b04e069cde5b25ef325122ca230b2f949

See more details on using hashes here.

File details

Details for the file kagimcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: kagimcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 82.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for kagimcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f390cd1f2677b4a43a8519d763cb96b7f77eab1dcb0f059bf6258f8a52cf578e
MD5 eee8f2fc0091bdf3eee857317b29087e
BLAKE2b-256 e4629a4f06201934e5a15d9c5d3b1fe09ca712239f6045f3baa47ed7833282cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page