Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
Kagi search MCP server for session tokens
This project is an MCP server that connects agent clients to Kagi search and Kagi summarization. It uses session tokens, so you do not need the official API key, and it works over stdio or HTTP.
Builders who want their agent to search the web and summarize URLs through Kagi inside Claude Desktop, Cursor, Windsurf, or another MCP client.
You can add Kagi search and summarization to your agent without wiring up the paid API.
What it does
Session token auth
Uses Kagi session tokens instead of an API key.
Multi-token pool
Accepts multiple tokens and rotates through them for higher throughput.
Per-token rate limiting
Applies a 5 requests per second bucket to each token.
Search tool
Provides `kagi_search_fetch` for web search with Kagi operators like `site:` and `filetype:`.
Summarizer tool
Provides `kagi_summarizer` for summarizing a URL with selectable summary type and engine.
MCP transport modes
Runs over stdio by default and can also serve over HTTP.
Expired token handling
Detects bad tokens and disables them so remaining tokens keep working.
How to get it
- 1Run
pip install kagi-session2api-mcp
- 2Or with uvx
uvx kagi-session2api-mcp
- 3Search the web using Kagi
Search for "Python async tutorial"
- 4Summarize any URL
Summarize https://example.com/article
- 5Stdio (default, for Claude Desktop)
kagi-session2api-mcp
- 6HTTP (for remote access)
kagi-session2api-mcp --http --host 0.0.0.0 --port 8000
README
Kagi Session2API MCP Server
Free Kagi Search MCP server — session tokens, no API key needed
Access Kagi search and summarizer via session tokens — completely free. Works with Claude Desktop, Cursor, Windsurf, Cline, Hermes and any MCP-compatible AI coding assistant/agent.
⭐ Star History
⚠️ EndUser Warning: This project uses Kagi session tokens to access search and summarizer features without the official paid API. This may violate Kagi's Terms of Service. Potential consequences include account suspension or permanent ban. Use at your own risk. The authors assume no liability for any account actions taken by Kagi.
⚠️ Security Warning: Your Kagi session token provides full account access. Treat it like a password. Never share it or commit it to version control.
🌟 Features
- Session-based access: Uses Kagi session tokens instead of the official API ($25/1000 queries) — completely free
- Multi-token pool: Configure multiple tokens for higher throughput with round-robin rotation
- Per-token rate limiting: 5 req/s per token with token bucket algorithm
- API-compatible output: Returns results in the same format as the official
kagimcp - Two tools:
kagi_search_fetch(web search) andkagi_summarizer(URL summarization) - Firefox UA spoofing: Mimics a real Firefox browser for session-based access
- Auto-disable expired tokens: Expired tokens are automatically detected and skipped
- Search operators: Supports Kagi operators (
site:,lang:,filetype:, etc.)
Compatible Platforms
Works with any MCP-compatible client:
- Claude Desktop
- Cursor
- Windsurf
- Cline
- Hermes Agent
- Any MCP client supporting
stdioorHTTPtransport
Quick Install (For AI Agents)
Just paste this prompt to your AI agent:
Install the Kagi Session2API MCP server from https://pypi.org/project/kagi-session2api-mcp/.
Then add it to my MCP:
`uvx kagi-session2api-mcp`
set env KAGI_SESSION_TOKEN to my token (ask me if you don't have it).
If I have multiple tokens, use KAGI_SESSION_TOKENS (comma-separated) instead,
or create a config file at ~/.config/kagi-session2api-mcp/config.toml with:
[kagi]
session_tokens = ["TOKEN_1", "TOKEN_2"]
summarizer_engine = "cecil"
[client]
timeout = 30
max_retries = 2
and set env KAGI_SESSION_CONFIG to that path.
Install Manually
pip install kagi-session2api-mcp
Or with uvx:
uvx kagi-session2api-mcp
Configuration
Option 1: Environment Variable (Single Token)
{
"mcpServers": {
"kagi-session": {
"command": "uvx",
"args": ["kagi-session2api-mcp"],
"env": {
"KAGI_SESSION_TOKEN": "YOUR_SESSION_TOKEN_HERE"
}
}
}
}
Option 2: Environment Variable (Multiple Tokens)
{
"mcpServers": {
"kagi-session": {
"command": "uvx",
"args": ["kagi-session2api-mcp"],
"env": {
"KAGI_SESSION_TOKENS": "TOKEN_1,TOKEN_2,TOKEN_3"
}
}
}
}
Option 3: Config File (Recommended for Multi-Token)
Create ~/.config/kagi-session2api-mcp/config.toml:
[kagi]
session_tokens = [
"YOUR_TOKEN_1_HERE",
"YOUR_TOKEN_2_HERE",
]
summarizer_engine = "cecil"
[client]
timeout = 30
max_retries = 2
Then configure:
{
"mcpServers": {
"kagi-session": {
"command": "uvx",
"args": ["kagi-session2api-mcp"],
"env": {
"KAGI_SESSION_CONFIG": "/path/to/config.toml"
}
}
}
}
Getting Your Session Token
- Log in to kagi.com
- Go to Settings → Account → Session Link
- Copy the token from the session URL:
https://kagi.com/search?token={THIS_PART}&q=test - Use this token in your configuration
Usage
MCP Tools
kagi_search_fetch
Search the web using Kagi:
Search for "Python async tutorial"
Supports Kagi search operators:
site:github.com- Restrict to domain-site:reddit.com- Exclude domainfiletype:pdf- File type filterintitle:python- Title filterlang:zh- Language filterbefore:2024-01-01/after:2024-01-01- Date filters"exact phrase"- Exact match
kagi_summarizer
Summarize any URL:
Summarize https://example.com/article
Options:
summary_type: "summary" (prose) or "takeaway" (bullet points)engine: "cecil" (default), "agnes", "daphne", "muriel"target_language: Language code (e.g., "EN")
⚠️ The summarizer is experimental — it uses Kagi's internal endpoint which may change.
Transport Modes
Stdio (default, for Claude Desktop):
kagi-session2api-mcp
HTTP (for remote access):
kagi-session2api-mcp --http --host 0.0.0.0 --port 8000
Architecture
MCP Client → FastMCP Server → TokenPool (round-robin) → httpx.AsyncClient → kagi.com
↓
TokenBucket (5 req/s per token)
↓
Auto-disable expired tokens
Token Pool Behavior
| Config | Rate Limit | Effective Rate |
|---|---|---|
| 1 token | 5 req/s | 5 req/s |
| 2 tokens | 5 req/s each | 10 req/s |
| N tokens | 5 req/s each | 5×N req/s |
When a token expires (detected via 401/403 or redirect to login), it is automatically disabled. Remaining tokens continue serving requests.
Differences from Official kagimcp
| Aspect | Official kagimcp | kagi-session2api-mcp |
|---|---|---|
| Authentication | API key ($25/1000) | Session token (free) |
| Search endpoint | /api/v0/search | /html/search (HTML scraping) |
| Summarizer | /api/v0/summarize | /mother/summary_labs (internal) |
| Rate limiting | Server-side | Client-side (token bucket) |
api_balance | Returns balance | Always null |
| Cost | Paid | Free (uses existing session) |
Thank you!
Star this repo if you feel it useful, that would help me a lot :)
License
MIT
Files in the repo
- .github
- src
- tests
- .gitignore
- pyproject.toml
- README_ZH.md
- README.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.
x64dbg-MCP Server is a native MCP (Model Context Protocol) plugin for x64dbg that exposes the debugger's full functionality over HTTP. Connect any MCP-compatible AI assistant and control x64dbg programmatically: set breakpoints, step through code, read memory, dump registers, and more. Built with Zig — zero dependencies, single-binary output, cros