Skip to content

MCP 服务器

KaaS 暴露一个 Model Context Protocol 服务器,让任何支持 MCP 的客户端(Claude Code、Codex、openclaw 等)通过单一的 ask 工具查询编译后的 wiki。

工具:ask

向编译后的 KaaS wiki 提问。返回基于 wiki 文章的带引用 Markdown 答案。

参数

参数类型必填说明
querystring自然语言问题
pathsstring[]用于定向检索的 wiki 文章路径(跳过主索引导航,直接读取指定页面全文)
modelstring聊天模型覆盖(默认使用配置的 LLM_MODEL

返回值

JSON 对象:

json
{
  "answer": "Markdown 文本,包含内联 [标题](路径) 引用...\n\nSources:\n- [文章标题](wiki/path.md)",
  "sources": [
    {"title": "文章标题", "path": "wiki/path.md"}
  ],
  "cost_usd": 0.003
}
字段类型说明
answerstringMarkdown 答案,包含内联 [标题](路径) 引用和 Sources: 尾注
sourcesarray结构化的引用文章列表(title + path
cost_usdnumber本次查询的预估 LLM 费用

传输方式

stdio(默认)

客户端以子进程方式启动 MCP 服务器。完全自包含 — 无网络暴露面,无需认证。

bash
kb-ai mcp [--kb-dir /path/to/data]

Claude Code 配置:

bash
claude mcp add kaas -- kb-ai mcp --kb-dir /path/to/data

所需环境变量:

变量说明
KAAS_KB_DIR知识库根目录(或使用 --kb-dir 标志)
LLM_API_KEYLLM 提供商 API 密钥
LLM_BASE_URLLLM 提供商 base URL
LLM_MODEL模型名称

streamable-http(远程)

[ai.mcp] enabled = true 时,通过 Go 后端的 /mcp 端点发布。

URL: http://<host>:8080/mcp

Claude Code 配置:

bash
claude mcp add --transport http kaas http://host:8080/mcp

认证: 当设置了 KAAS_MCP_TOKEN 时,客户端必须包含:

Authorization: Bearer <token>

未携带有效 token 的请求将收到 401 Unauthorized 响应。


配置

etc/kaas.toml 中的相关配置:

toml
[ai.mcp]
enabled = false          # 设为 true 以暴露 /mcp 端点
token = ""               # Bearer token(空 = 无认证)
timeout_sec = 120        # tools/call 超时时间(秒)

环境变量覆盖:

变量说明默认值
KAAS_MCP_ENABLED启用 /mcp 端点false
KAAS_MCP_TOKENBearer token 认证(空 = 无认证)

工作原理

  1. 客户端发送 tools/call 请求,name: "ask" 加上查询参数。
  2. MCP 服务器运行与 chat API 相同的 LLM 迭代检索:读取主索引,选择相关 wiki 页面,加载完整文章内容。
  3. LLM 生成带有内联 [标题](路径) 引用的答案。
  4. 完整答案(含 Sources: 尾注)和结构化来源列表作为工具结果返回。