内容
# kagi-session-mcp
一个MCP服务器,允许你的代理使用现有的浏览器会话搜索 [Kagi](https://kagi.com)。无需API密钥,无需额外订阅,无需额外配置:它从你已经登录的浏览器中读取Kagi cookie。
## 安装
在 crates.io 发布之前,直接从 git 安装:
```sh
cargo install --git https://github.com/checksumdev/kagi-session-mcp --locked
```
这会构建并将 `kagi-session-mcp` 放入 `~/.cargo/bin`,如果 cargo 设置正常,该目录已在你的 `PATH` 中。 `--locked` 标志重用仓库的 `Cargo.lock`,因此你获得与 CI 测试相同的依赖版本。要进一步锁定:
```sh
# 锁定到发布标签
cargo install --git https://github.com/checksumdev/kagi-session-mcp --tag v0.1.0 --locked
# 锁定到特定提交
cargo install --git https://github.com/checksumdev/kagi-session-mcp --rev <sha> --locked
```
或者本地构建:
```sh
git clone https://github.com/checksumdev/kagi-session-mcp
cd kagi-session-mcp
cargo build --release
```
二进制文件位于 `target/release/kagi-session-mcp`。
## 配置客户端
服务器通过stdio使用纯MCP,因此在支持stdio-based MCP的任何地方都可以使用。点击你的客户端:
<details>
<summary><b>Claude Desktop</b></summary>
编辑 `claude_desktop_config.json`:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"kagi": {
"command": "kagi-session-mcp"
}
}
}
```
重启Claude。
</details>
<details>
<summary><b>Claude Code</b></summary>
```sh
claude mcp add kagi -- kagi-session-mcp
```
</details>
<details>
<summary><b>Cursor</b></summary>
编辑 `~/.cursor/mcp.json`(或项目本地 `.cursor/mcp.json`):
```json
{
"mcpServers": {
"kagi": {
"command": "kagi-session-mcp"
}
}
}
```
</details>
<details>
<summary><b>VS Code</b></summary>
编辑工作区中的 `.vscode/mcp.json`(或用户级等效文件):
```json
{
"servers": {
"kagi": {
"type": "stdio",
"command": "kagi-session-mcp"
}
}
}
```
</details>
<details>
<summary><b>Windsurf</b></summary>
编辑 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"kagi": {
"command": "kagi-session-mcp"
}
}
}
```
</details>
<details>
<summary><b>Cline</b></summary>
在Cline的设置中,打开 `cline_mcp_settings.json` 并添加:
```json
{
"mcpServers": {
"kagi": {
"command": "kagi-session-mcp",
"disabled": false
}
}
}
```
</details>
<details>
<summary><b>Continue</b></summary>
编辑 `~/.continue/config.json`:
```json
{
"experimental": {
"modelContextProtocolServers": [
{ "transport": { "type": "stdio", "command": "kagi-session-mcp" } }
]
}
}
```
</details>
<details>
<summary><b>Zed</b></summary>
在 `~/.config/zed/settings.json` 中:
```json
{
"context_servers": {
"kagi": {
"command": { "path": "kagi-session-mcp", "args": [] }
}
}
}
```
</details>
<details>
<summary><b>Gemini CLI, OpenCode, 任何其他</b></summary>
任何支持stdio MCP的工具都可以使用。只需指向 `kagi-session-mcp` 而不带参数。
</details>
## 手动会话令牌
如果您的浏览器受到限制(Chrome v20 ABE,无头设置,沙盒配置文件),您可以从 `kagi.com/settings?p=user_details` 粘贴会话链接令牌:
```json
{
"mcpServers": {
"kagi": {
"command": "kagi-session-mcp",
"env": { "KAGI_SESSION_TOKEN": "your-session-link-token" }
}
}
}
```
## 工具
| 工具 | 功能 |
| ---- | ------------ |
| `kagi_search` | 带有运算符、镜头、时间/区域/安全过滤器的网页搜索,分页 |
| `kagi_fastgpt` | 带有内联 `[N]` 引用的基础单次问答 |
| `kagi_wikipedia` | 知识面板查找 |
| `kagi_suggest` | 自动完成 |
| `kagi_news` / `kagi_images` / `kagi_videos` / `kagi_podcasts` | 垂直搜索 |
| `kagi_list_lenses` | 列出用户配置的Kagi镜头 |
| `kagi_fetch` | 身份验证URL获取(仅cookie发送到kagi.com) |
| `kagi_status` | 报告发现的会话及其方式 |
`kagi_search` 接受 `query`, `limit`, `page`, `time`(天/周/月/年),`region`(例如 `us`, `de`),`safe`(关闭/适度/严格),和 `lens`(工具栏插槽0..7)。它支持完整的Kagi运算符集:`site:`, `filetype:`, `-exclude`, `"exact phrase"`, `before:YYYY-MM-DD`, 和 `after:YYYY-MM-DD`.
## 故障排除
从代理运行 `kagi_status`。如果 `session_found` 为 false:
- **`App-Bound Encryption`** (Chrome 127+):cookie无法从浏览器外部解密。使用 `KAGI_SESSION_TOKEN` 代替。
- **`no kagi session found`**:在任何支持的浏览器中登录Kagi,然后重试。
- **`session was found but kagi rejected it`**:cookie已过期。在浏览器中重新加载Kagi,然后重试。
对于更深入的日志,设置 `RUST_LOG=kagi_session_mcp=debug` 并重新启动主机。日志输出到stderr(stdout保留用于MCP JSON-RPC帧)。
## 贡献
欢迎PR。这里有一个简短的 [CONTRIBUTING.md](./CONTRIBUTING.md),涵盖问题约定、提交格式以及如何处理Kagi更改其标记或路由的问题,这是存储库需要补丁的最常见原因。
## 许可证
MIT。有关详细信息,请参见 [LICENSE](./LICENSE) 文件。
## 赞助
如果这为您节省了一些搜索时间,您可以在 [Ko-fi](https://ko-fi.com/checksum) 上给我买一杯咖啡。同时请为Kagi付费:代理搜索正是他们资助其工作的那种使用。