Kagi搜索与摘要服务

一个轻量级的Node MCP服务器,提供Kagi.com的搜索和摘要功能,使用Kagi会话令牌而非API密钥。

  • by czottmann
  • JavaScript
  • 本地部署
  • 42 星标
  • 更新于
在 GitHub 查看 czottmann/kagi-ken-mcp

使用说明

kagi-ken-mcp 翻译为中文是“Kagi Ken MCP”(注:这里的“Kagi Ken”可能是一个特定名称或术语,没有直接的中文对应,因此保留原样;“MCP”通常代表“Multi-Carrier Positioning”或“Multi-Channel Processing”等,具体含义需根据上下文确定)。不过,如果“kagi-ken”是一个已知的特定词汇或品牌名,且在中文中有固定译法,那么应采用相应的译文。在缺乏具体上下文的情况下,上述翻译为通用表述

一个轻量级的Node MCP服务器,围绕着(此处“around the”后可能省略了具体的内容或上下文,若直接翻译则为“围绕着……”,但具体含义需根据上下文确定) kagi-ken 包(或包裹)使用Kagi会话令牌访问Kagi.com服务:

  • 搜索Kagi搜索
  • 总结器使用Kagi的摘要生成器从URL或文本内容创建摘要

与需要API访问权限的官方Kagi API不同,此MCP服务器使用您现有的Kagi会话来访问搜索和摘要功能。

“Kagi-ken”(锁钥剑) 是一个由……组合而成的混合词(或缩写词) “Kagi” (该服务)和 “token”。

为什么?

这个(或“该”) Kagi API 目前需要单独的API密钥,且仅限受邀获取。如果您已有Kagi订阅但没有API访问权限,但仍希望通过大型语言模型(LLM)或如Claude等代理程序化访问Kagi的服务,此MCP服务器提供了另一种选择。

特点/功能

  • 搜索使用Kagi搜索并行处理查询以获取网页结果
  • 总结从URL中提取内容并以可定制的输出类型和语言进行总结

服务器支持两种使用您的Kagi会话令牌的方法(见 安装),按此顺序:

  1. KAGI_SESSION_TOKEN 环境变量
  2. ~/.kagi_session_token 包含令牌字符串的文件

它包含了全面的错误处理机制:

  • 连接超时(每次搜索10秒)
  • 无效的输入验证
  • 环境变量验证
  • 优雅的错误格式化

安装

需要 Node.js 22 或更高版本。

1. 获取Kagi会话令牌

  1. 参观 Kagi 设置 在您的浏览器中
  2. 复制 会话链接
  3. 提取 token 链接中的值
  4. 将该值作为您的会话令牌:保存至 ~/.kagi_session_token (推荐),或者作为 KAGI_SESSION_TOKEN 环境变量

服务器将首先尝试使用环境变量,如果失败则回退到使用令牌文件。

[!警告] 安全注意事项请保护好您的会话令牌。它用于访问您的Kagi账户。

2.a. 将MCP服务器添加到Claude桌面

将kagi-ken-mcp添加到您的(系统/应用/项目等,根据上下文具体确定) claude_desktop_config.json 您可以通过Claude桌面应用程序中的“设置”→“开发者”→“本地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服务器。并且,您可以在设置中的“个人偏好”(即系统提示)里添加这一项:

For web searches, use kagi-ken-mcp MCP server's `kagi_search_fetch` tool.
For summarizing a URL, use the kagi-ken-mcp MCP server's `kagi_summarizer` tool.

2.b. 在Claude代码中添加MCP服务器

选项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 Code内置的网页搜索功能(可选) .claude/settings*.json 文件:

{
  "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              # Main server entry point
│   ├── tools/
│   │   ├── search.js         # Search tool implementation
│   │   └── summarizer.js     # Summarizer tool implementation
│   └── utils/
│       └── formatting.js     # Utility functions
├── package.json
└── README.md

安装

  1. 克隆仓库:

    git clone <repository-url>
    cd kagi-ken-mcp
    
  2. 安装依赖项:

    npm install
    

在开发模式下运行

npm run dev

调试

使用MCP检查器进行调试:

npx @modelcontextprotocol/inspector node ./src/index.js

然后访问检查器于 http://localhost:5173如果使用环境变量,请添加您的 KAGI_SESSION_TOKEN 在检查器的环境变量部分。

做出贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 做出你的更改
  4. 使用MCP检查器进行测试
  5. 提交一个拉取请求

作者

卡洛·佐特曼, carlo@zottmann.dev, https://c.zottmann.dev, https://github.com/czottmann。

这个项目既不是Kagi的附属项目,也未得到Kagi的认可。我只是个非常满意的客户。

[!提示] 我开发与Shortcuts相关的macOS和iOS生产力应用程序,例如 “Actions For Obsidian”可以翻译为“针对Obsidian的操作/动作”或“Obsidian中的动作设置”,具体翻译取决于上下文和使用场景。如果是指在Obsidian这款应用中可以执行的各种操作或功能,那么“针对Obsidian的操作/动作”可能更为贴切;如果是指在Obsidian中配置或设置的特定动作,则“Obsidian中的动作设置”可能更合适。不过,通常情况下,“Actions For Obsidian”可能指的是在Obsidian中可以执行的各种操作或插件功能,因此“针对Obsidian的操作/动作”是一个较为通用的翻译, 浏览器操作 (为几个主要浏览器添加了快捷方式支持),并且 BarCuts(通常指的是一种在酒吧或类似场所中进行的剪发服务或风格,可直译为“吧台式剪发”或根据具体语境意译为“酒吧剪发服务/风格”) (一个出乎意料地好用的上下文快捷方式启动器)。快去看看吧!

相关项目