mcpField
F
faqmine

faqmine

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 faqmine

faqmine 是一个从用户提供的已关闭问题中找出重复提问并起草 FAQ 的工具,适用于支持团队和问题跟踪维护者。它只整理原始问题标题、计数、链接与标签,不生成答案,并可按指定阈值筛选重复组。

主要功能

  1. 01按标题词项归并重复问题
  2. 02为重复组生成 FAQ 条目
  3. 03保留问题标题和链接原文
  4. 04汇总问题数与未归组数
  5. 05支持标签合并及最小数量阈值

适用场景

  1. 01从已关闭工单中发现常见重复问题
  2. 02整理附带链接和标签的 FAQ 草稿
  3. 03统计达到指定重复次数的问题

MCP 相关

提供 mine_faq 工具,接收调用方提供的已关闭问题标题、链接和可选标签,返回重复问题条目及计数;不会生成答案。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-faqmine": {
"command": "npx",
"args": [
"-y",
"@reneturcios/faqmine"
]
}
}
}
启动命令npx -y @reneturcios/faqmine

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/faqmine0.1.0
ocighcr.io/cloudcorprecords/faqmine:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
issuesarray是要提取的已关闭 issue,按调用方提供的顺序排列
min_countinteger否FAQ 条目的最小聚类大小(可选,默认值为 2)

详细介绍

faqmine

支持队列和问题跟踪系统中总会反复出现相同的问题,每次都以措辞略有不同的独立已关闭问题出现。faqmine 会帮你找出这些重复问题。你只需提供已关闭的问题——每个问题的标题和链接,以及已有的标签——faqmine 就会将真正相同的问题分组,并根据这些分组起草常见问题解答:对于每个重复问题,列出问题文本、提问次数以及每次提问对应的链接。它不会编造答案。问题、次数和链接都原封不动地取自你提供的问题,因此无需任何人核查生成的文字,草稿就能直接进入分流流程。

两个标题的提问键相同时,就视为同一个问题。生成键时,会先将标题转为小写,再按每段连续的非字母数字字符拆分为词元,丢弃固定列表中的停用词(a、an、the、is、are、was、were、do、does、did、how、what、why、when、where、which、who、can、could、should、would、i、we、you、it、to、of、in、on、for、with、and、or、not、no、my、me、this、that、there、here),保留其余词元且每个只保留一次,将它们排序后用单个空格连接。因此,词序、大小写和标点都无关紧要:“How do I reset my password?”和“Password reset — how?”的键都是password reset,会归为一组。标题若只包含停用词和标点,则键为空,不会归入任何组。

某组达到min_count个问题后,就会生成一条常见问题解答(除非另行指定,默认为 2 个)。条目中的问题是该组中第一个问题的标题,按你提供的顺序原样呈现;其 urls 是该组的链接,顺序相同;其 labels 是该组标签的去重并集,按升序排序。条目按次数从多到少排序;次数相同则按该组第一个问题在输入中的位置排序。统计数据会报告你提供的问题数、起草的条目数、归入这些条目的问题数,以及未归组的问题数——包括未达到阈值的组中的问题和键为空的问题。

格式错误的输入——问题列表缺失或为空、列表项不是对象、title或url缺失、为空或不是字符串、labels的值不是数组或其中包含空字符串或非字符串条目,或者min_count小于 2 或不是整数——会触发验证错误,指出出错路径,且不会返回部分结果。未知的额外字段会被忽略。

CLI

npx @reneturcios/faqmine mine --input args.json
npx @reneturcios/faqmine --version

args.json包含完整的参数对象:

{
  "issues": [
    {
      "title": "How do I reset my password?",
      "url": "https://example.com/issues/1",
      "labels": ["account", "auth"]
    },
    {
      "title": "Password reset — how?",
      "url": "https://example.com/issues/2",
      "labels": ["auth"]
    },
    {
      "title": "Export to CSV fails",
      "url": "https://example.com/issues/3"
    }
  ]
}

常见问题解答草稿以 JSON 格式输出:

{
  "entries": [
    {
      "question": "How do I reset my password?",
      "count": 2,
      "urls": [
        "https://example.com/issues/1",
        "https://example.com/issues/2"
      ],
      "labels": ["account", "auth"]
    }
  ],
  "counts": {
    "issues": 3,
    "clusters": 1,
    "clustered_issues": 2,
    "unclustered": 1
  }
}

退出代码:成功时为0,运行时错误时为1(包括无法读取或无效的输入文件,以及无效输入),用法错误时为2。

MCP 服务

npx -y @reneturcios/faqmine mcp

MCP 客户端配置:

{
  "mcpServers": {
    "faqmine": {
      "command": "npx",
      "args": ["-y", "@reneturcios/faqmine", "mcp"]
    }
  }
}
工具
  • mine_faq — 挖掘调用方提供的已关闭问题,找出重复问题并起草常见问题解答条目:问题(原样呈现的所提供问题标题)、次数以及问题链接。不会编造答案。

    • issues(数组,必填,至少 1 项)— 要挖掘的已关闭问题,按调用方提供的顺序排列;每项包含:
      • title(字符串,必填,非空)— 问题标题
      • url(字符串,必填,非空)— 问题链接
      • labels(字符串数组,可选)— 问题标签;缺省表示没有标签
    • min_count(整数,可选,至少为 2,默认值为 2)— 生成常见问题解答条目所需的最小分组规模

    返回{entries, counts},其中entries包含每个纳入分组对应的一个{question, count, urls, labels},counts为{issues, clusters, clustered_issues, unclustered}。

Docker

docker run -i ghcr.io/cloudcorprecords/faqmine
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/faqmine mine --input /w/args.json

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — Copyright (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。