kernal-mcp について
Kernalは、会話を人物、組織、活動、トピック、フォローアップのつながりへ変換する、専門職向けのオープンソースナレッジグラフです。LLMで情報を抽出し、データをローカルのSQLiteに保存します。CLIとダッシュボードも含まれます。
主な機能
- 01会話からのエンティティ抽出
- 02人物、組織、活動の関連付け
- 03重複を防ぐファジーマッチング
- 04SQLiteによるローカル保存
- 05CLIとインタラクティブなダッシュボード
活用シーン
- 01会議メモを関連する連絡先や活動として記録
- 02フォローアップ、担当者、期限の管理
- 03人物や組織の履歴とネットワークの確認
- 04専門職間の関係をグラフで閲覧
MCP 対応
MCPサーバーは、メモの取り込み、エンティティの作成・修正、ナレッジグラフの検索ツールを提供します。LLMが会話を解釈して構造化された書き込みツールを呼び出し、Kernalがデータの保存と照合を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Kernal
専門家向けのオープンソースナレッジグラフです。MCPを通じて、自然な会話からエンティティと関係性を自動抽出します。
Claudeと、会議、通話、やり取りについて自然に会話しましょう。Kernalは人物、組織、トピック、関係性を保存し、あなた自身が所有するナレッジグラフを構築します。
含まれる機能(オープンソース)
Kernalを自分のマシン上でローカルに実行するために必要なものがすべて含まれています。
- 13個のMCPツール — 取り込み、CRUD、クエリ、修正(以下の全リストを参照)
- SQLiteデータベース — ローカルファースト。データがマシンの外に出ることはありません
- LLM主導の抽出 — Claudeがテキストを読み取り、抽出する内容を判断して、構造化された書き込みツールを呼び出します
- エンティティ解決 — あいまい一致とレーベンシュタイン距離により、重複を防ぎます
- CLI —
init、serve、status、export - クラウドサーバー — APIキー認証、レート制限、CORS、セッション管理を備えたExpress.js
- ダッシュボード — ネットワークグラフ、タイムライン、アクション項目、概要を備えたReactアプリ
- 50件のテスト — 包括的なテストスイート
これは、無料でいつまでも自分で実行できる、完全に機能するナレッジグラフです。
Andesが提供するサービス(マネージドサービス)
さらなる機能を求めるチームや専門家向けに、Andesは以下を提供しています。
- クラウドホスティング — セルフホスト不要で、あらゆるデバイスからナレッジグラフにアクセスできます
- ダッシュボード — データを活用した、ホスト型のインタラクティブな可視化機能
- マルチユーザー — チーム機能、共有ナレッジベース、役割ベースのアクセス制御
- オンボーディングとサポート — セットアップを代行し、初日からチームが成果を得られるよう支援します
- 業界向けワークフロー — エグゼクティブサーチ、コンサルティング、専門サービス向けの事前構築済みパターン
オープンソースのコアがエンジンです。Andesはその上にインフラ、UX、サポートを提供します。
クイックスタート
npx kernal-mcp init
これにより、~/.kernal/kernal.dbにSQLiteデータベースが作成され、Claude Desktopに追加する設定が表示されます。
claude_desktop_config.jsonに追加します。
{
"mcpServers": {
"kernal": {
"command": "npx",
"args": ["-y", "kernal-mcp", "serve"]
}
}
}
Claude Desktopを再起動します。その後、自然に話しかけてください。
「今日、Nordvik EnergyのJonas Lindbergと昼食をとりました。彼は同社のデジタル担当VPです。クラウド移行について話し合い、Q3を目標にしているそうです。」
ClaudeはJonas、Nordvik Energy、クラウド移行のトピックを抽出し、Kernalの書き込みツールを使って保存します。その後、次のように尋ねてみましょう。
- 「Nordvik Energyについて何を知っていますか?」 → 人物、やり取り、トピックを含む詳細な概要
- 「誰にフォローアップすべきですか?」 → 担当者と期限が設定された未完了のアクション項目
- 「Nordvik Energyの全員を表示してください」 → 組織で絞り込んだ連絡先リスト
仕組み
KernalはLLM主導の抽出パターンを採用しています。
- 会議、通話、やり取りについてClaudeに伝えます
- Claudeが
kernal_rememberを呼び出し、生のテキストを渡します - Kernalはテキストをメモとして保存し、抽出手順と既存のエンティティ一覧(重複排除用)を返します
- Claudeがテキストを適切に読み取り、構造化された書き込みツール(
kernal_add_person、kernal_add_org、kernal_add_activityなど)を呼び出します - 重複を防ぐため、各書き込みはエンティティ解決を経由します
- 抽出に関するすべての判断はLLMが行います。正規表現による推測はありません
MCPサーバーはシンプルなデータストアです。頭脳となるのはLLMです。
MCPツール
取り込み(書き込み)
| ツール | 説明 |
|---|---|
kernal_remember | 生のテキストを保存し、抽出手順と重複排除用の既存エンティティ一覧を取得します |
kernal_add_person | 人物を作成または更新します(名前のあいまい一致による重複排除を自動実行) |
kernal_add_org | 組織を作成または更新します(重複排除を自動実行) |
kernal_add_activity | 参加者と組織を関連付けてやり取りを記録します |
kernal_add_action | フォローアップまたはタスクを作成します。人物への割り当ても可能です |
kernal_link | 任意の2つのエンティティ(人物、組織、トピック)間の関係を作成します |
クエリ(読み取り)
| ツール | 説明 |
|---|---|
kernal_recall | すべてのエンティティタイプを対象に、キーワードでナレッジベースを検索します |
kernal_people | 連絡先を一覧表示/検索します。名前、組織、役職で絞り込めます |
kernal_orgs | 組織を一覧表示/検索します。種類、業界で絞り込めます |
kernal_activities | 最近のやり取りを表示します。種類、人物、日付で絞り込めます |
kernal_actions | 未完了のフォローアップを表示します。ステータス、担当者、期限で絞り込めます |
kernal_context | 人物または組織の概要を表示します。タイムライン、ネットワーク、トピックを含みます |
修正
| ツール | 説明 |
|---|---|
kernal_correct | フィールドの更新、エンティティの削除、重複の統合、またはデータベースのリセットを行います |
保存されるデータ
*「Arctura Tech の Sofia Andersen とコーヒーを飲みました。彼女は同社の営業担当副社長です。APAC への事業拡大について話し合いました。金曜日までに彼女にパートナー提案書を送る必要があります。」*のような一文を入力すると、Claude は次のように呼び出します。
kernal_add_person— Sofia Andersen、営業担当副社長、Arctura Tech 所属kernal_add_org— Arctura Techkernal_add_activity— コーヒーでの打ち合わせ、本日、参加者:[Sofia Andersen]、組織:[Arctura Tech]kernal_add_action— 「Sofia にパートナー提案書を送る」、期限:金曜日、担当者:Sofia Andersenkernal_link— Sofia → works_at → Arctura Tech
各呼び出しは、LLM による意図的で構造化された判断であり、正規表現による推測ではありません。
CLI コマンド
kernal init Create database + print Claude Desktop config
kernal serve Start MCP server (stdio transport)
kernal status Show database stats
kernal export Export database to a file
kernal help Show help
ダッシュボード
このリポジトリには、4 つのビューを備えた React ダッシュボード(dashboard/)が含まれています。
- 概要 — エンティティ数、最もつながりの多い人物、アクティビティの内訳
- ネットワーク — インタラクティブな力学ベースのグラフ(人物+組織)
- タイムライン — 参加者と概要を含む、時系列のアクティビティフィード
- アクション — 緊急度別(期限超過、今週、今後)に分類されたフォローアップ
自然言語のコマンドバーがクエリに応じてビューを切り替えます(「ネットワークを表示して」→グラフ)。
# Start the cloud API server
KERNAL_API_KEY=your-key KERNAL_DB_PATH=~/.kernal/kernal.db npm run cloud
# Start the dashboard (separate terminal)
cd dashboard && npm run dev
データモデル
Kernal は、汎用の関係グラフでつながる 6 種類のエンティティを保存します。
People ←→ Organizations
↕ ↕
Activities ←→ Topics
↕
Actions ←→ Notes
すべてのエンティティは relationships テーブルを介して他の任意のエンティティとリンクできるため、次のようなクエリが可能です。
- 「Sofia は誰と会ったことがありますか?」(人物 → アクティビティ → 他の人物)
- 「Nordvik Energy ではどんな話題が取り上げられますか?」(組織 → 人物 → アクティビティ → トピック)
- 「Jonas と Arctura Tech のつながりは何ですか?」(グラフ上の経路)
セキュリティ
- すべての SQL クエリでパラメーター化されたステートメントを使用します(インジェクションのリスクはありません)
- 定数時間比較による API キー認証(
crypto.timingSafeEqual) - CORS は設定されたオリジンに制限されます
- レート制限(IP あたり毎分 120 件、設定可能)
- MCP セッションのタイムアウト(30 分間アイドル状態が続くと削除)
- コード内にシークレットはありません。すべての設定は環境変数で行います
- React ダッシュボードは、レンダリングするすべてのデータを自動的にエスケープします(XSS を防止)
開発
git clone https://github.com/pintomatic/kernal.git
cd kernal
npm install
npm run build
npm test # 50 tests
クラウドサーバーのセルフホスト
KERNAL_API_KEY=your-secret KERNAL_DB_PATH=~/.kernal/kernal.db npm run cloud
Dockerfile が含まれています。環境変数:
| 変数 | デフォルト | 説明 |
|---|---|---|
KERNAL_DB_PATH | ~/.kernal/kernal.db | SQLite データベースのパス |
KERNAL_API_KEY | (クラウドでは必須) | 認証用の API キー |
KERNAL_CORS_ORIGIN | http://localhost:5174 | 許可する CORS オリジン(カンマ区切り) |
KERNAL_RATE_LIMIT | 120 | IP あたりの最大リクエスト数(毎分) |
PORT | 3001 | サーバーのポート |
デモデータの作成
npx tsx scripts/seed-demo.ts
現実的なプロフェッショナルサービスのシナリオとして、12 件の連絡先、18 件の組織、19 件のアクティビティと 123 件の関係を作成します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。