🚀 kagi-ken-mcp
kagi-ken-mcp 是一个轻量级的 Node MCP 服务器,围绕 kagi-ken 包 构建,可使用 Kagi 会话令牌访问 Kagi.com 的服务:
- 搜索:在 Kagi 上进行搜索。
- 摘要生成:使用 Kagi 的摘要生成器,根据 URL 或文本内容创建摘要。
与需要 API 访问权限的官方 Kagi API 不同,此 MCP 服务器使用你现有的 Kagi 会话来访问搜索和摘要生成功能。
“Kagi-ken” 是 “Kagi”(服务名称)和 “token”(令牌)的组合词。
🚀 快速开始
如果你已经拥有 Kagi 订阅但没有 API 访问权限,却想通过大型语言模型(LLMs)或像 Claude 这样的智能代理以编程方式访问 Kagi 的服务,那么这个 MCP 服务器将为你提供一个替代方案。
✨ 主要特性
- 搜索:使用 Kagi 搜索获取网页结果,并支持并发查询处理。
- 摘要生成:对来自 URL 的内容进行摘要生成,支持自定义输出类型和语言。
服务器支持两种使用 Kagi 会话令牌的方法(见安装指南),优先级如下:
KAGI_SESSION_TOKEN 环境变量。
- 包含令牌字符串的
~/.kagi_session_token 文件。
它具备全面的错误处理机制:
- 连接超时(每次搜索 10 秒)。
- 无效输入验证。
- 环境变量验证。
- 优雅的错误格式化。
📦 安装指南
需要 Node.js 22+ 版本。
1. 获取 Kagi 会话令牌
- 在浏览器中访问 Kagi 设置。
- 复制 会话链接。
- 从链接中提取
token 值。
- 将该值用作会话令牌:保存到
~/.kagi_session_token(推荐),或者作为 KAGI_SESSION_TOKEN 环境变量传递。
服务器将自动优先尝试使用环境变量,然后再尝试使用令牌文件。
⚠️ 重要提示
请妥善保管你的会话令牌。它可以访问你的 Kagi 账户。
2.a. 将 MCP 服务器添加到 Claude Desktop
将 kagi-ken-mcp 添加到你的 claude_desktop_config.json 文件中,你可以通过 Claude Desktop 应用的设置 → 开发者 → 本地 MCP 服务器 → 编辑配置来打开该文件。
选项 1:使用令牌文件(推荐)
{
"mcpServers": {
"kagi-ken-mcp": {
"command": "npx",
"args": ["-y", "github:czottmann/kagi-ken-mcp"]
}
}
}
选项 2:使用环境变量
{
"mcpServers": {
"kagi-ken-mcp": {
"command": "npx",
"args": ["-y", "github:czottmann/kagi-ken-mcp"],
"env": {
"KAGI_SESSION_TOKEN": "YOUR_SESSION_TOKEN_HERE"
}
}
}
}
安装后操作
禁用 Claude Desktop 的内置网络搜索,以便它使用此 MCP 服务器。你还可以在设置的“个人偏好”(即系统提示)中添加以下内容:
进行网络搜索时,使用 kagi-ken-mcp MCP 服务器的 `kagi_search_fetch` 工具。
对 URL 内容进行摘要生成时,使用 kagi-ken-mcp MCP 服务器的 `kagi_summarizer` 工具。
2.b. 将 MCP 服务器添加到 Claude Code
选项 1:使用令牌文件(推荐)
claude mcp add kagi-ken-mcp --scope user -- npx -y github:czottmann/kagi-ken-mcp
选项 2:使用环境变量
claude mcp add kagi-ken-mcp \
--scope user \
--env KAGI_SESSION_TOKEN="YOUR_SESSION_TOKEN_HERE" -- \
npx -y github:czottmann/kagi-ken-mcp
安装后操作
可选择在相关的 .claude/settings*.json 文件中设置权限,以禁用 Claude Code 的内置网络搜索:
{
"permissions": {
"deny": [
"WebSearch"
],
"allow": [
"mcp__kagi-ken-mcp__kagi_search_fetch",
"mcp__kagi-ken-mcp__kagi_summarizer"
]
}
}
💻 使用示例
例如,提出需要使用工具的查询,如 “2024 年《时代》周刊的年度人物是谁?” 用于搜索,或 “总结这个视频:https://www.youtube.com/watch?v=sczwaYyaevY” 用于摘要生成。
工具说明
kagi_search_fetch
使用 Kagi 搜索 API 根据一个或多个查询获取网页结果。结果会连续编号,方便参考。
参数:
queries(字符串数组):一个或多个搜索查询。
kagi_summarizer
使用 Kagi 摘要生成 API 对来自 URL 的内容进行摘要生成。支持包括网页、视频和音频在内的各种文档类型。
参数:
url(字符串):要进行摘要生成的 URL。
summary_type(枚举):"summary" 表示段落形式的摘要,"takeaway" 表示要点形式的摘要(默认:"summary")。
target_language(字符串,可选):语言代码(例如,"EN" 表示英语,默认:"EN")。
🔧 技术细节
项目结构
kagi-ken-mcp/
├── src/
│ ├── index.js # 主服务器入口点
│ ├── tools/
│ │ ├── search.js # 搜索工具实现
│ │ └── summarizer.js # 摘要生成工具实现
│ └── utils/
│ └── formatting.js # 实用函数
├── package.json
└── README.md
安装
-
克隆仓库:
git clone <repository-url>
cd kagi-ken-mcp
-
安装依赖:
npm install
在开发模式下运行
npm run dev
调试
使用 MCP 检查器进行调试:
npx @modelcontextprotocol/inspector node ./src/index.js
然后在 http://localhost:5173 访问检查器。如果使用环境变量,请在检查器的环境变量部分添加你的 KAGI_SESSION_TOKEN。
贡献代码
- 分叉仓库。
- 创建功能分支。
- 进行更改。
- 使用 MCP 检查器进行测试。
- 提交拉取请求。
📄 许可证
此项目的作者是 Carlo Zottmann,邮箱 carlo@zottmann.dev,个人网站为 https://c.zottmann.dev,GitHub 主页为 https://github.com/czottmann。
本项目与 Kagi 没有关联,也未得到其认可。作者只是 Kagi 的忠实用户。
💡 使用建议
作者开发了一些与快捷指令相关的 macOS 和 iOS 生产力应用,如 Actions For Obsidian、Browser Actions(为多个主流浏览器添加快捷指令支持)和 BarCuts(一个非常实用的上下文快捷指令启动器)。欢迎试用!
相关项目