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 は、本当に同じ質問をまとめ、グループから FAQ の下書きを作成します。繰り返し寄せられた質問ごとに、質問文、質問された回数、質問が寄せられた各イシューへのリンクをまとめます。回答は作成しません。質問、件数、リンクはすべて、渡されたイシューからそのまま取得するため、生成された文章をファクトチェックしなくても、下書きをそのままトリアージに回せます。

2 つのタイトルは、質問キーが一致すると同じ質問として扱われます。キーは、タイトルを小文字にし、英数字以外の文字が連続する箇所でトークンに分割し、固定のストップワード一覧(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 件)、FAQ エントリーになります。エントリーの質問には、指定した順序でクラスター内の最初にあるイシューのタイトルをそのまま使います。URL には、同じ順序でクラスター内のリンクを設定します。ラベルには、クラスター内のラベルを重複なしで統合し、昇順に並べたものを設定します。エントリーは件数の多い順に並び、同数の場合は、入力内でクラスターの最初のイシューが登場した順になります。件数には、指定されたイシュー数、作成されたエントリー数、それらのエントリーに含まれたイシュー数、クラスター化されなかったイシュー数が含まれます。クラスター化されなかったイシューとは、しきい値未満のクラスターに属するものと、空のキーを持つものです。

不正な入力(イシューリストがない、または空、項目がオブジェクトでない、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"
    }
  ]
}

FAQ の下書きは 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 — 呼び出し元から渡されたクローズ済みイシューを調べ、繰り返し寄せられた質問をまとめて FAQ エントリーの下書きを作成します。内容は、質問(渡されたイシューのタイトルをそのまま使用)、件数、イシューへのリンクです。回答は作成しません。

    • issues(配列、必須、1 件以上)— 調べるクローズ済みイシュー。呼び出し元が指定した順序で並べます。各項目:
      • title(文字列、必須、空でない)— イシューのタイトル
      • url(文字列、必須、空でない)— イシューへのリンク
      • labels(文字列の配列、任意)— イシューのラベル。省略した場合はなし
    • min_count(整数、任意、2 以上、デフォルトは 2)— FAQ エントリーに必要なクラスターの最小サイズ

    {entries, counts} を返します。entries には、対象となるクラスターごとに {question, count, urls, labels} が 1 つ含まれます。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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。