Skip to main content
Glama
real-jiakai

kagi-mcp

by real-jiakai

kagi-mcp

English | 简体中文

MCP server for Kagi Search that authenticates with your session token — no separate API subscription needed, it uses your existing Kagi plan via Kagi's lightweight HTML interface (kagi.com/html/search).

Tools

Tool

Purpose

Parameters

kagi_search

Web search

query (required), page, from_date, to_date, region, lens, limit

kagi_news

News search

query (required), limit

kagi_lenses

List available lenses

  • region: 2-letter country code (us, cn, jp, ...); maps to Kagi's r= parameter. Defaults to no_region (international/location-neutral) so the AI agent decides when a country-specific view is needed.

  • lens: a Kagi lens by name or numeric id (e.g. Forums, Fediverse Forums, Academic, Programming, PDFs). Names are resolved against the lens list on your account (cached per server process — restart the server after creating new lenses).

Queries support Kagi operators: "exact phrase", site:example.com, -exclude, OR. Output is compact plain text (title, URL, date, snippet, related searches). By default a call returns the full first results page — the same set a user sees on kagi.com (typically 20-40 results); pass limit to trim it. Snippets are Kagi's own SERP snippets; fetching full page content is left to the agent's page-fetch tool.

Related MCP server: Kagi MCP Server

1. Get your session token

  1. Open kagi.com/settings/user_details

  2. Find the Session Link section and copy the link.

  3. Use either the full link (https://kagi.com/search?token=...) or just the token part — both work as KAGI_SESSION_TOKEN.

Treat the session link like a password — anyone with it can use your Kagi account. If it leaks, generate a new one from the same settings page (this invalidates the old one).

2. Add it to your AI agent

All examples run the published npm package via npx — nothing to install up front (requires Node.js 18+; latest LTS recommended).

Claude Code

claude mcp add kagi -s user --env KAGI_SESSION_TOKEN=<token> -- npx -y kagi-mcp-claude-fable-5

(-s user makes the server available in all your projects; omit it for project-local.)

Codex CLI

codex mcp add kagi --env KAGI_SESSION_TOKEN=<token> -- npx -y kagi-mcp-claude-fable-5

Or add a table to ~/.codex/config.toml directly:

[mcp_servers.kagi]
command = "npx"
args = ["-y", "kagi-mcp-claude-fable-5"]
env = { "KAGI_SESSION_TOKEN" = "<token or session link>" }

(On Windows, if the server fails to spawn, set command to the full path of npx.cmd, e.g. 'C:\Program Files\nodejs\npx.cmd'.)

OpenClaw

openclaw mcp add kagi \
  --command npx \
  --arg -y \
  --arg kagi-mcp-claude-fable-5 \
  --env KAGI_SESSION_TOKEN=<token>

Verify with openclaw mcp doctor kagi --probe.

Hermes Agent

Add to ~/.hermes/config.yaml under mcp_servers:

mcp_servers:
  kagi:
    command: "npx"
    args: ["-y", "kagi-mcp-claude-fable-5"]
    env:
      KAGI_SESSION_TOKEN: "<token or session link>"

Any MCP client (Claude Desktop, ...) — JSON config

{
  "mcpServers": {
    "kagi": {
      "command": "npx",
      "args": ["-y", "kagi-mcp-claude-fable-5"],
      "env": { "KAGI_SESSION_TOKEN": "<token or session link>" }
    }
  }
}

Development

git clone https://github.com/real-jiakai/kagi-mcp-claude-fable-5.git kagi-mcp
cd kagi-mcp
npm install    # TypeScript build to dist/ runs automatically

# smoke test against your real Kagi account (append `news` for the news vertical)
KAGI_SESSION_TOKEN='<token or session link>' node test.js "capital of japan"

To point a client at your checkout instead of npm, use node /path/to/kagi-mcp/dist/index.js as the command; re-run npm run build after editing src/.

Notes

  • Auth failures: if the token is invalid/expired, Kagi 302-redirects to its landing page; the server detects this and returns a clear error telling you to refresh the token.

  • Parsing: results are extracted via Kagi's own machine-readable markers (._0_SRI, a._0_URL, ._0_TITLE, ._0_DESC), which are stable across the web and news verticals (verified July 2026). If Kagi ever changes its markup, update parseResultsPage() in src/kagi.ts.

  • This uses your normal Kagi account the same way a browser would — standard fair-use search volume from an agent is indistinguishable from regular usage. It is not the official Kagi Search API (which bills separately).

Acknowledgements

Designed, implemented, and tested end-to-end with Claude Fable 5 via Claude Code — including live analysis of Kagi's HTML interface, an adversarial multi-agent code review, and human-click vs. MCP parity testing in the browser.

Available Tools

3 tools
kagi_lensesList Kagi lensesA

List the Kagi lenses (curated search scopes such as Forums, Academic, Programming) available on this account, with their ids. Pass a lens name or id to kagi_search's lens parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It adds context that lenses are 'available on this account', implying account-specific data. However, it does not disclose details like whether the list is exhaustive or if any side effects occur, though for a list tool this is acceptable.

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 with zero wasted words. First sentence states the action, second sentence provides cross-tool usage guidance. Highly efficient and front-loaded.

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?

For a zero-parameter, no-output-schema tool, the description is complete enough. It explains what the tool does and how to use its result. Could mention return format (e.g., list of lens objects) but not essential given simplicity.

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

Parameters4/5

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

No parameters in schema, so baseline is 4 per rubric. The description adds no parameter-level detail, which is appropriate since there are none.

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 uses a specific verb 'List' and clearly identifies the resource 'Kagi lenses' with examples (Forums, Academic, Programming). It also mentions the output includes ids, distinguishing it from siblings like kagi_search and kagi_news.

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 tells the agent to pass a lens name or id to kagi_search's lens parameter, creating a clear usage context. Lacks an explicit 'when not to use' but provides sufficient guidance for correct tool invocation.

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

kagi_newsKagi news searchA

Search recent news with Kagi. Returns headlines with source, publication time and snippets. Best for current events; use kagi_search for general web results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default: the full news page, typically 25-45)
queryYesNews search query

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions it returns headlines, source, time, and snippets. It does not disclose any behavioral traits like time range recency, default sorting, or any limitations. For a simple read-only tool this is minimal, but the description carries the full burden without annotations.

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, highly concise, front-loaded with purpose and return format. Every sentence adds value with no wasted words.

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?

For a tool with 2 parameters, no output schema, and no annotations, the description covers purpose, return format, and usage context adequately. However, it lacks details about time range recency or default sort order, which would make it more complete.

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 already documents both parameters well. The description does not add any extra parameter semantics beyond what the schema provides, earning the baseline score.

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?

Description clearly states it searches recent news and returns headlines with source, publication time, and snippets. It also distinguishes from sibling kagi_search by specifying it is best for current events.

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 'Best for current events; use kagi_search for general web results,' providing clear context for when to use this tool versus the sibling.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedkagi_lenses
    • First observedkagi_news
    • First observedkagi_search

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: kagi_lenses lists curated search scopes, kagi_news searches recent news, and kagi_search performs general web searches. Descriptions explicitly differentiate use cases.

Naming Consistency5/5

All tools follow a consistent kagi_<service> pattern, using clear nouns/verbs that reflect the tool's function. No deviations or mixed conventions.

Tool Count5/5

Three tools is appropriate for a focused search server, covering lens listing, news search, and general search without unnecessary bloat or gaps.

Completeness5/5

The surface covers the core functionality of the Kagi search API: discovering lenses, searching news, and general web search. No obvious missing operations for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Unofficial MCP server for working with Kagi without API access (you'll need to be a customer, tho). Searches and summarizes. Uses Kagi session token for easy authentication.
    2
    41
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with Kagi search engine services including web search, content summarization from URLs, and AI assistant conversations. Uses session tokens to access Kagi's search API, summarizer, and AI models directly within MCP-compatible applications.
    14
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Free web search MCP server using SearXNG, supporting web search, news search, and search summaries.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/real-jiakai/kagi-mcp-claude-fable-5'

If you have feedback or need assistance with the MCP directory API, please join our Discord server