mcpField
K
Kagi MCP server

Kagi MCP server

Local
github.com/kagisearchSearch552Updated today

About Kagi MCP server

An MCP server backed by the Kagi API that gives MCP-compatible clients web search and page extraction tools. It can run locally through uvx, use a hosted endpoint, or be self-hosted in multi-tenant HTTP mode.

Key features

  1. 01Web, news, video, podcast and image search
  2. 02Optional page extracts and search filters
  3. 03Full page content extraction as markdown
  4. 04Configurable timeouts and retry limits
  5. 05Hideable search parameters for a simpler tool schema

Use cases

  1. 01Searching for current news or reference material from an AI assistant
  2. 02Extracting the full text of a specific web page for analysis
  3. 03Self-hosting an HTTP server that serves several users

MCP support

This is an MCP server exposing the kagi_search_fetch and kagi_extract tools to MCP clients over stdio or Streamable HTTP.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"kagimcp": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
Run commandnpx -y @smithery/cli

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@smithery/cli

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

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

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

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 Code
claude mcp add kagi -e KAGI_API_KEY="YOUR_API_KEY_HERE" -- uvx kagimcp
Smithery
npx -y @smithery/cli install kagimcp --client claude
Kiro

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": "<YOUR_API_KEY_HERE>"
      }
    }
  }
}

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 variableDescription
KAGI_API_KEYRequired Kagi API key.
FASTMCP_LOG_LEVELLogging level, for example ERROR.
KAGI_SEARCH_TIMEOUTSearch timeout in seconds. Defaults to 10.
KAGI_EXTRACT_TIMEOUTExtract timeout in seconds. Defaults to 30.
KAGI_MAX_RETRIESMax retry attempts after the first request. Defaults to 2; set 0 to disable retries.
KAGI_HIDDEN_PARAMSComma-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).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.