Skip to main content
Glama
kagisearch

Kagi MCP Server

Official
by kagisearch

Kagi MCP 서버

설정 지침

시작하기 전에, 검색 이외의 도구만 사용하는 경우가 아니라면 검색 API에 대한 액세스 권한이 있는지 확인하십시오. 현재 비공개 베타 상태이며 요청 시 제공됩니다. 초대장을 받으려면 support@kagi.com으로 문의하십시오.

먼저 uv를 설치하십시오.

MacOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

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

Smithery를 통한 설치

또는 Smithery를 통해 Claude Desktop용 Kagi를 설치할 수 있습니다:

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

OpenAI 설정

Codex CLI

codex cli에 Kagi mcp 서버를 추가하려면 다음 명령어를 사용해야 합니다:

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

이 명령어는 ~/.codex/config.toml에 구성을 작성하므로, API 키를 업데이트하거나 교체해야 하는 경우 codex를 다시 실행하기 전에 해당 파일에서 키를 업데이트하십시오.

Codex CLI에는 자체 내장 검색 기능(--search 플래그를 통해)이 포함되어 있지만 기본적으로 비활성화되어 있습니다. 따라서 검색과 Kagi 간의 충돌을 피하려면 해당 기능을 활성화하지 마십시오.

Claude 설정

Claude Desktop

// claude_desktop_config.json
// Can find location through:
// Hamburger Menu -> File -> Settings -> Developer -> Edit Config
{
  "mcpServers": {
    "kagi": {
      "command": "uvx",
      "args": ["kagimcp"],
      "env": {
        "KAGI_API_KEY": "YOUR_API_KEY_HERE",
        "KAGI_SUMMARIZER_ENGINE": "YOUR_ENGINE_CHOICE_HERE" // Defaults to "cecil" engine if env var not present
      }
    }
  }
}

Claude Code

다음 명령어로 Kagi mcp 서버를 추가하십시오 (요약 엔진 설정은 선택 사항):

claude mcp add kagi -e KAGI_API_KEY="YOUR_API_KEY_HERE" KAGI_SUMMARIZER_ENGINE="YOUR_ENGINE_CHOICE_HERE" -- uvx kagimcp

이제 claude code에서 Kagi mcp 서버를 사용할 수 있습니다. 단, claude code에는 기본적으로 자체 웹 검색 기능이 포함되어 있어 Kagi와 충돌할 수 있습니다. claude code 설정 파일(~/.claude/settings.json)에 다음을 추가하여 claude의 웹 검색 기능을 비활성화할 수 있습니다:

{
  "permissions": {
    "deny": [
      "WebSearch"
    ]
  }
}

도구 사용이 필요한 질문하기

예: 검색의 경우 "Who was time's 2024 person of the year?", 요약의 경우 "summarize this video: https://www.youtube.com/watch?v=jNQXAC9IVRw"

디버깅

실행:

npx @modelcontextprotocol/inspector uvx kagimcp

Related MCP server: sysauto Ask MCP Server

로컬/개발 설정 지침

저장소 복제

git clone https://github.com/kagisearch/kagimcp.git

종속성 설치

먼저 uv를 설치하십시오.

MacOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

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

그런 다음 MCP 서버 종속성을 설치하십시오:

cd kagimcp

# Create virtual environment and activate it
uv venv

source .venv/bin/activate # MacOS/Linux
# OR
.venv/Scripts/activate # Windows

# Install dependencies
uv sync

Claude Desktop 설정

MCP CLI SDK 사용

# `pip install mcp[cli]` if you haven't
mcp install /ABSOLUTE/PATH/TO/PARENT/FOLDER/kagimcp/src/kagimcp/server.py -v "KAGI_API_KEY=API_KEY_HERE"

수동 설정

# claude_desktop_config.json
# Can find location through:
# Hamburger Menu -> File -> Settings -> Developer -> Edit Config
{
  "mcpServers": {
    "kagi": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/kagimcp",
        "run",
        "kagimcp"
      ],
      "env": {
        "KAGI_API_KEY": "YOUR_API_KEY_HERE",
        "KAGI_SUMMARIZER_ENGINE": "YOUR_ENGINE_CHOICE_HERE" // Defaults to "cecil" engine if env var not present
      }
    }
  }
}

도구 사용이 필요한 질문하기

예: 검색의 경우 "Who was time's 2024 person of the year?", 요약의 경우 "summarize this video: https://www.youtube.com/watch?v=jNQXAC9IVRw"

디버깅

실행:

# If mcp cli installed (`pip install mcp[cli]`)
mcp dev /ABSOLUTE/PATH/TO/PARENT/FOLDER/kagimcp/src/kagimcp/server.py

# If not
npx @modelcontextprotocol/inspector \
      uv \
      --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/kagimcp \
      run \
      kagimcp

그런 다음 http://localhost:5173에서 MCP Inspector에 액세스하십시오. Inspector의 환경 변수 KAGI_API_KEY에 Kagi API 키를 추가해야 할 수도 있습니다.

고급 구성

  • 로깅 수준은 FASTMCP_LOG_LEVEL 환경 변수를 통해 조정할 수 있습니다 (예: FASTMCP_LOG_LEVEL="ERROR")

  • 요약 엔진은 KAGI_SUMMARIZER_ENGINE 환경 변수를 사용하여 사용자 지정할 수 있습니다 (예: KAGI_SUMMARIZER_ENGINE="daphne")

    • 다양한 요약 엔진에 대한 자세한 내용은 여기에서 확인하십시오.

  • MCP에 연결하는 더 안전한 방법이 있을 수 있습니다. 한 사용자가 여기에 세부 정보를 기록해 두었습니다.

  • --http CLI 옵션을 사용하여 스트리밍 가능한 HTTP 전송을 켤 수 있습니다. --port 및 --host 인수와 함께 사용할 수 있습니다.

Available Tools

2 tools
kagi_extractA

Extract the content of a web page as markdown using the Kagi Extract API. Use this to read the full content of a page when needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe HTTPS URL of the page to extract content from.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. Only states core behavior without additional context like rate limits, authorization, or side effects. Adequate for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with purpose. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Low complexity with one parameter and existing output schema. Description covers what it does and when to use it, but could mention potential errors or prerequisites for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and describes the only parameter (url). Description adds no extra meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action (extract content), resource (web page), output format (markdown), and API. Distinguishes from sibling tool by focusing on content extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this to read the full content of a page when needed,' providing clear context. Does not explicitly exclude alternatives, but sibling name implies separation of concerns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kagi_search_fetchA

Fetch web results for a query using the Kagi Search API. Use for general search and when the user explicitly tells you to 'fetch' results/information. Results are numbered so that a user may refer to a result by a specific number.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoOnly include results published/updated on or after this date (ISO format, e.g., '2024-01-15').
limitNoMaximum number of results per category. In the mixed 'search' workflow this caps each category independently, so the total can exceed this number; in single-category workflows it caps total results.
queryYesA concise, keyword-focused search query. Include essential context for standalone use.
beforeNoOnly include results published/updated on or before this date (ISO format, e.g., '2024-12-31').
lens_idNoApply a Kagi lens to narrow the search to a curated set of sources. Built-in lens IDs: '2' (Academic — education/.edu domains), '1' (Forums — discussion forums across the web), '15' (Programming — official programming language sites and forums), '29' (News 360 — multi-perspective coverage of global news), '120' (Recipes — high-quality recipe sites, English), '107' (Small Web — noncommercial domains and topics). You may also pass a custom lens ID or full URL from https://kagi.com/settings/lenses (only shareable lenses work). Mutually exclusive with 'include_domains', 'exclude_domains', 'time_relative', and 'file_type'; use those args or 'lens_id', not both.
workflowNoType of results to return. Use 'news' for current events and recent reporting, 'videos' for video content (e.g. tutorials, talks), 'podcasts' for audio shows, 'images' for image results, or the default 'search' for general web results. Note that 'search' may return a mix of categories (web, news, videos, images) in one response, like a typical SERP; the other workflows return only their single category.search
file_typeNoRestrict to results with this file type (e.g., 'pdf', 'docx', 'xlsx'). Specify the extension without a leading dot.
extract_countNoNumber of top results to fetch full page content for, inline as markdown.
time_relativeNoRestrict to results published/updated within the last day, week, or month, evaluated server-side. Mutually exclusive with 'after'/'before'.
exclude_domainsNoExclude results from these domains (e.g., ['pinterest.com', 'quora.com']). Overrides any 'site:' operators in the query.
include_domainsNoRestrict results to these domains (e.g., ['docs.python.org', 'github.com']). Overrides any 'site:' operators in the query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds one behavioral trait: 'Results are numbered so that a user may refer to a result by a specific number.' With no annotations provided, the description carries the full burden, but it does not disclose other behaviors like rate limits, authentication needs, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the core purpose and adding essential usage guidance and a behavioral trait without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, output schema exists, sibling tool present), the description is mostly complete. It explains the tool's purpose and numbering, but could mention that results include standard fields (title, URL) though the output schema likely covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-level information beyond what is already in the schema; it merely states the overall purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Fetch web results for a query using the Kagi Search API', which specifies the verb and resource. It further distinguishes usage for general search and when the user explicitly says 'fetch', helping differentiate from sibling kagi_extract (which likely extracts content from a URL).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Use for general search and when the user explicitly tells you to fetch results/information.' It implies when to use it but does not explicitly exclude alternative tools like kagi_extract or list when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.1
    • First observedkagi_extract
    • First observedkagi_search_fetch

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: one extracts page content, the other fetches search results. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent 'kagi_' prefix combined with a verb_noun pattern ('extract' and 'search_fetch'), making naming predictable and clear.

Tool Count3/5

With only two tools, the set is minimal but still covers the core search and extract functionalities. However, it feels thin compared to typical MCP servers, which might offer more diverse operations.

Completeness4/5

The server provides the essential operations for its domain: searching and retrieving content. While additional tools like summarization could be useful, the current set is reasonably complete for basic tasks.

Maintenance

ActivityInactive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables Claude to perform web searches using Perplexity's API with intelligent model selection based on query intent and support for domain and recency filtering.
    6
    4
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server integrating the Kagi Search API to perform web searches using the kagi_search tool.
    1
    MIT