Kaidn について
Kaidn は、Kaidn API を通じて不正スコアやイベントを調査する MCP サーバーです。判定の根拠となる生データ、エンティティ情報、レビューキューを提供し、デフォルトは読み取り専用で、クォータ制限も備えています。
主な機能
- 01生データに基づく判定理由の説明
- 02スコア付きイベントの検索と絞り込み
- 03スコア順のレビューキュー整理
- 04メール、IP、デバイスの調査
- 05任意でのリスト更新と結果ラベル付け
活用シーン
- 01イベントがブロックされた理由の説明
- 02審査待ちの不正イベントの確認
- 03IP やデバイスから関連活動を追跡
- 04メール、IP、電話番号のリスク確認
MCP 対応
stdio または Streamable HTTP で、Kaidn の不正スコア API ツールを MCP クライアントに提供します。変更系ツールは明示的な有効化が必要で、クォータ上限が API 利用を制限します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @kaidn/mcpKAIDN_API_KEYシークレットYour secret Kaidn API key, from https://kaidn.ioKAIDN_API_URLOverride the Kaidn API base URLKAIDN_MCP_ALLOW_WRITESSet to 1 to register the mutating tools (add_to_list, label_outcome)KAIDN_MCP_MAX_QUOTA_CALLSCeiling on quota-consuming calls per processローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
10掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| string | はい | 確認するメールアドレス |
詳細
Kaidn MCP
Kaidn の不正検知スコアリング API 用 Model Context Protocol サーバーです。
平易な英語で不正を調査できます — 「この登録がブロックされた理由は?」、「このデバイスはほかに何にアクセスした?」、「今朝のレビューキューには何が入っている?」
- スコアだけでなく、根拠も示します。 すべての理由に、その根拠となる生の数値が含まれているため、モデルは判定を推測するのではなく、説明できます。
- デフォルトでは読み取り専用です。 オプトインしない限り、テナントのデータは変更されません。
- クォータで保護されています。 エージェントがループしても、10 分で 1 か月分の利用枠を使い切ることはありません。
- どのクライアントでも利用できます。 MCP はオープンプロトコルです。ローカルでは stdio、リモートやホスト型エージェントでは Streamable HTTP を使用できます。
要件
Node.js 18 以降、およびKaidn ダッシュボードの API キーが必要です。
はじめに
まず、使用するクライアントで Kaidn MCP サーバーをインストールします。標準設定は、ほとんどのツールで利用できます。
{
"mcpServers": {
"kaidn": {
"command": "npx",
"args": ["@kaidn/mcp@latest"],
"env": { "KAIDN_API_KEY": "your_key" }
}
}
}
Claude Code
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- npx @kaidn/mcp@latest
Claude Desktop
標準設定を claude_desktop_config.json に追加し、Claude を再起動します。
Settings → Developer → Edit Config からファイルを開けます。
Cursor
Settings → MCP → Add new MCP Server を選択するか、標準設定をプロジェクトの .cursor/mcp.json(すべてのプロジェクトで使用する場合は ~/.cursor/mcp.json)に追加します。
VS Code
code --add-mcp '{"name":"kaidn","command":"npx","args":["@kaidn/mcp@latest"],"env":{"KAIDN_API_KEY":"your_key"}}'
Windsurf
標準設定を ~/.codeium/windsurf/mcp_config.json に追加します。
Cline
MCP Servers アイコン → Configure MCP Servers から、cline_mcp_settings.json に標準設定を追加します。
Zed
settings.json の context_servers に、標準設定と同じ command、args、env を使って追加します。
その他
どの MCP クライアントでも、command、args、env ブロックを指定します。上記の標準設定を使用してください。プロセスを起動するのではなく、ネットワーク経由でしかサーバーに接続できないクライアントの場合は、Streamable HTTP をご覧ください。
Configuration
| オプション | 環境変数 | デフォルト | 用途 |
|---|---|---|---|
KAIDN_API_KEY | 必須 | シークレットキーです。環境変数でのみ指定できます。フラグやツールの引数では指定できません。 | |
KAIDN_API_URL | https://api.kaidn.io | API のベース URL | |
--allow-writes | KAIDN_MCP_ALLOW_WRITES=1 | オフ | 変更を加えるツールを登録します |
KAIDN_MCP_MAX_QUOTA_CALLS | 100 | プロセスごとのクォータ上限 | |
--http | KAIDN_MCP_TRANSPORT=http | stdio | Streamable HTTP で提供します |
--host <addr> | KAIDN_MCP_HOST | 127.0.0.1 | HTTP のバインドアドレス |
--port <n> | KAIDN_MCP_PORT | 8765 | HTTP ポート |
KAIDN_MCP_HTTP_TOKEN | 未設定 | HTTP で Authorization: Bearer を必須にします | |
--help | 使い方を表示します | ||
--version | バージョンを表示します |
優先順位: CLI フラグは環境変数より優先されます。
API キーを環境変数でのみ指定するのは意図的です。フラグで渡したキーは、プロセス一覧やシェルの履歴に漏洩します。
トランスポート
| トランスポート | 用途 | エンドポイント |
|---|---|---|
| stdio (デフォルト) | サブプロセスを起動するローカルクライアント | — |
| Streamable HTTP | リモートエージェント、コンテナ、マシン外のあらゆるもの | POST /mcp |
HTTP+SSE は意図的に含めていません。2025-03-26 仕様で非推奨となり、2026 年 6 月に終了するためです。
Streamable HTTP
npx @kaidn/mcp@latest --http --port 8765
ステートレスです。リクエストごとに新しいサーバーが起動し、呼び出し元どうしで共有されるものはありません。そのため、予期しない問題なくロードバランサーの背後に配置できます。GET /health は認証不要なので、オーケストレーターはトークンを保持せずに稼働状況を確認できます。
Docker
docker build -t kaidn-mcp .
# stdio — behaves like the npx invocation
docker run -i --rm -e KAIDN_API_KEY=your_key kaidn-mcp
# HTTP — for remote agents
docker run --rm -p 8765:8765 \
-e KAIDN_API_KEY=your_key \
-e KAIDN_MCP_TRANSPORT=http \
-e KAIDN_MCP_HOST=0.0.0.0 \
-e KAIDN_MCP_HTTP_TOKEN=your_token \
kaidn-mcp
マルチステージビルドを使用し、権限のない node ユーザーとして実行し、ヘルスチェックを備えています。
セキュリティ
サーバーは API キーを保持します。 サーバーに接続できる人は誰でもクォータを消費できるため、デフォルト設定は慎重にしてあり、ガードは警告を出すのではなく、フェイルクローズで動作します。
127.0.0.1にバインドし、より広いインターフェースでの起動を拒否します。 ただし、KAIDN_MCP_HTTP_TOKENが設定されている場合を除きます。アカウントを気付かれないまま公開するのではなく、理由を説明して停止します。- デフォルトでは読み取り専用です。
add_to_listとlabel_outcomeは--allow-writesを指定した場合にのみ利用できます。 set_configとforget_subjectは、どのモードでも公開されません。 前者は今後のすべてのイベントの判定をひそかに変更し、後者は取り消し不能な GDPR に基づく消去です。どちらも人間が確認できるダッシュボードで行うべき操作です。- プロセスごとにクォータ上限があります。 残りの予算は、コストが発生するレスポンスごとに報告されます。上限を超える予約は一部だけ消費するのではなく、完全に拒否されます。
- キーがツールの境界を越えることはありません。 パラメーター、出力、エラーのいずれにも含まれません。
ツール
すべてのツールの動作を決める要素は 2 つです。クォータを消費するか、そして何かを変更するかです。
読み取り専用 — デフォルトで利用可能
| ツール | コスト | 動作 |
|---|---|---|
get_stats | 無料 | ローリングウィンドウにおける判定、スコア、理由の集計です。まずはこちらから。 |
list_events | 無料 | スコア付きイベントを新しい順に表示します。判定または種類で絞り込み、フィンガープリントまたはユーザー ID で検索できます |
explain_event | 無料 | 1 件のイベントで実行されたすべてのチェックと、生の証拠を表示します |
triage_queue | 無料 | review のすべての項目をスコアの高い順に表示します |
get_config | 無料 | このテナントの有効な重みとしきい値を表示します |
investigate_entity | 1 行¹ | 1 つのエンティティについて、エンリッチメント、ネットワークレピュテーション、関連イベントを表示します |
check_email | 1 行 | 使い捨てドメイン、配信可能性、不正利用スコア、悪用履歴を確認します |
check_ip | 1 行 | プロキシ、VPN、Tor、データセンターの ASN、位置情報、悪用履歴を確認します |
check_phone | 1 行 | 有効性、回線種別、通信事業者、不正利用スコアを確認します |
score_event | 1 行 | 新しいイベントをスコアリングします(イベントも記録します) |
¹ エンティティが device_id の場合は無料です。エンリッチメントのコストが発生するのはメールアドレスまたは IP の場合のみです。
変更を加えるツール — --allow-writes が必要
| ツール | 動作 |
|---|---|
add_to_list | エンティティを許可リストまたはブロックリストに追加します |
label_outcome | 不正利用/チャージバック/正当な利用の確定結果を報告します |
使用例
ツールは連鎖して使えるように設計されています。以下は、そのために構築されたワークフローです。
朝のトリアージ
あなた: 夜の間に何が起きて、何に対応する必要がありますか?
モデルはget_statsを呼び出して過去24時間の状況を把握し、次にtriage_queueでreviewにあるイベントを確認し、さらに最も問題のあるイベントについてexplain_eventを呼び出します。読み込む必要のあるダッシュボードではなく、根拠付きの優先順位リストが得られます。
「この顧客がブロックされたのはなぜですか?」
あなた: イベント
evt_8f21cです。顧客から、誤ってブロックされたと連絡がありました。
explain_eventは、検出されたすべてのチェックとその生の証拠を返します。一致したデータセンターのASN、同じデバイスを共有するアカウント数、速度のカウントなどです。顧客への回答や、ルールが誤っていて調整が必要だと判断するのに十分な情報が得られます。
1つのシグナルから調査を広げる
あなた:
194.x.x.xは単発の事象ですか、それとも組織的な動きの一部ですか?
investigate_entityは、そのIPのエンリッチメント情報とネットワーク評価に加えて、そのIPが含まれる最近のすべてのイベントを返します。同じデバイスIDが繰り返し出現しているなら、偶然ではなく組織的な動きです。
ルールを変更する前に確認する
あなた: 速度の重みを下げた場合、何がブロックされなくなりますか?
get_configで現在の重みを確認し、verdict: "block"を指定したlist_eventsで、現在検出されているものを表示します。モデルは、重みを下げようとしているチェックに依存する項目を特定できます。
エラー処理
失敗は例外ではなく、読みやすいメッセージを含むツールエラーとして返されるため、モデルはそれに対処できます。
| 表示される内容 | 意味 | 対処方法 |
|---|---|---|
KAIDN_API_KEY is not set | キーなしでサーバーが起動しました | クライアントのenvブロックに設定します |
Kaidn error: 401 … | キーが拒否されました | ダッシュボードでキーを再発行するか、コピーし直します |
Kaidn error: 429 … | レート制限に達しました | 呼び出しを減らします。キーごとの制限は1分単位です |
Session quota ceiling reached (100/100 …) | ガード機能がコストの高い実行を停止しました | KAIDN_MCP_MAX_QUOTA_CALLSを慎重に引き上げるか、再起動します |
No event <id> in the most recent 200 events | イベントがスキャン対象期間より古いです | offsetを使ってlist_eventsで前のページに戻ります |
Supply exactly one of email, ip or device_id | 調査対象が曖昧です | 一度に1つのエンティティについて問い合わせます |
Refusing to bind <host> without authentication | 認証なしでループバック以外のHTTPにバインドしようとしています | KAIDN_MCP_HTTP_TOKENを設定するか、127.0.0.1にバインドします |
エラーにAPIキーが含まれることはありません。
トラブルシューティング
クライアントにツールが表示されません。
クライアントのMCPログで起動時の行を確認してください。標準エラー出力にkaidn-mcp: ready (stdio, …)と表示されていれば、サーバーは起動しており、問題はクライアント側にあります。何も表示されない場合は、通常、npxでパッケージを解決できなかったか、Nodeのバージョンが18未満です。
起動後、すぐに終了します。
ほとんどの場合、KAIDN_API_KEYが設定されていません。標準エラー出力にメッセージが表示されますが、標準エラー出力を隠すクライアントもあるため、ターミナルで実行して確認してください。
add_to_listとlabel_outcomeが見つかりません。
設計どおりの動作です。これらのツールには--allow-writesが必要です。
set_configとforget_subjectが見つかりません。
こちらも設計どおりの動作で、どのモードでも利用できません。SECURITY.mdを参照してください。
HTTPモードを起動できません。 ベアラートークンを設定せずに、ループバック以外にバインドしています。プロセスがAPIキーを保持しているため、ガード機能が動作しています。
すべての処理が遅いです。
エンリッチメントチェックでは、ライブの上流サービスへの呼び出しが行われます。get_stats、list_events、explain_event、triage_queueは無料で高速です。履歴を確認する場合は、これらを優先してください。
クライアントとは別にサーバーを確認する:
node dist/index.js --help # no key required
KAIDN_API_KEY=your_key npm start # should print a ready line
サポート
- バグと機能リクエスト: GitHubの課題
- セキュリティ: [email protected] — SECURITY.mdを参照してください
- プライバシーとデータの取り扱い: PRIVACY.md
- APIについて: kaidn.io
ソースから実行する
git clone https://github.com/Kaidn-io/kaidn-mcp.git
cd kaidn-mcp
npm install
npm run build
npm test
claude mcp add kaidn --env KAIDN_API_KEY=your_key -- node /absolute/path/to/kaidn-mcp/dist/index.js
クライアントを使わずに起動を確認するには:
KAIDN_API_KEY=your_key npm start
標準エラー出力に kaidn-mcp: ready (stdio, read-only, quota ceiling 100) と表示され、
その後は標準入力を待ちます。これが MCP トランスポートなので、何も表示されないのは正常です。
エビデンスが重要な理由
Kaidn のエンジンはルール優先で、説明可能です。それぞれの理由には、その根拠となる未加工の数値が含まれています。単なるスコアではモデルが推論する材料になりませんが、エビデンスが付いた checks[] があれば、説明する材料になります。これが、explain_event が役立つものになるか、単なる飾りになるかの違いです。
ルールが判断し、モデルが語ります。
プロジェクト
- CONTRIBUTING.md — ここに含める内容と、変更によって損なってはならない保証
- SECURITY.md — 報告方法、脅威モデル、既知の制限事項
- PRIVACY.md — 通過するデータ、保存されるデータ、保存されないデータ
- CODE_OF_CONDUCT.md
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。