# Kagi Search MCP server

> Search the web, news, videos, podcasts and images with Kagi, and extract full page content as markdown.

- Listing: https://mcp.tc/i/kagi
- Connect: use the server's own URL `https://mcp.kagi.com/mcp` (with your API key); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: API key
- Category: [Search & Web Data](https://mcp.tc/c/search-web)
- Vendor: Kagi
- Homepage: <https://kagi.com/>
- Repository: <https://github.com/kagisearch/kagimcp>
- Package: pypi `kagimcp`

## About

Connects an assistant to the Kagi API. It can run web, news, video, podcast and image searches with optional page extracts, filters and Kagi lenses, and fetch the full content of a page as markdown.

Kagi hosts a streamable HTTP endpoint at https://mcp.kagi.com/mcp. It needs a Kagi API key sent as a Bearer token in the Authorization header. OAuth is not supported yet. The same server can be run locally with uvx kagimcp, or self-hosted with the Dockerfile in the repository.

## What it can do

- Search the web, news, videos, podcasts and images
- Include page extracts in search results
- Filter by domain, date, file type or Kagi lens
- Extract the full content of a page as markdown

## Example prompts

- "Who was Time's 2024 person of the year?"
- "Extract the full content of https://en.wikipedia.org/wiki/Model\_Context\_Protocol"
- "Search recent news about open source LLMs and summarize the top results"
- "Find podcasts about home networking from the last year"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http kagi https://mcp.kagi.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
```

2. Replace the placeholder with your key before you run it, then check it with `/mcp` inside Claude Code.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Custom connectors can’t send this server’s key header, so use the `mcp-remote` bridge. Open **Settings → Developer → Edit Config** and add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "kagi": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.kagi.com/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}
```

2. Replace the placeholder with your key and restart Claude Desktop.

The bridge needs Node.js on your computer.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=kagi&config=eyJ1cmwiOiJodHRwczovL21jcC5rYWdpLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgPFlPVVJfQVBJX0tFWT4ifX0%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "kagi": {
      "url": "https://mcp.kagi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

### VS Code

Add it to `.vscode/mcp.json`. VS Code asks for the key the first time and stores it securely:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "kagi": {
      "type": "http",
      "url": "https://mcp.kagi.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "api-key",
      "description": "API key",
      "password": true
    }
  ]
}
```

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "kagi": {
      "serverUrl": "https://mcp.kagi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add kagi --url https://mcp.kagi.com/mcp --bearer-token-env-var KAGI_API_KEY
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.kagi]
url = "https://mcp.kagi.com/mcp"
bearer_token_env_var = "KAGI_API_KEY"
```

Set `KAGI_API_KEY` to your key in the shell that runs Codex.

### Gemini CLI

```bash
gemini mcp add --transport http --header "Authorization: Bearer <YOUR_API_KEY>" kagi https://mcp.kagi.com/mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "kagi": {
      "type": "http",
      "url": "https://mcp.kagi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://mcp.kagi.com/mcp`.

## Details

- Server version: 1.0.2
- Last checked: 2026-10-03 (reachable, asks for credentials)
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/kagi (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
