MCP Context Manager について
MCP Context Managerは、ドメイン別のナレッジグラフを使い、作業セッションやプロジェクト段階をまたいでコンテキストを保持します。開発、プロジェクト管理、教育、研究のMCPサーバーを統括し、ドメイン間のエンティティ連携にも対応します。
主な機能
- 01セッションをまたぐコンテキスト保持
- 02ナレッジグラフによるドメイン情報の保存
- 03セッション開始・終了時の管理
- 04複数ドメインサーバーへのルーティング
- 05ドメイン間のエンティティ関連付け
活用シーン
- 01開発プロジェクトの状況を次のセッションへ引き継ぐ
- 02コース、課題、試験の追跡
- 03質的・量的研究活動の整理
MCP 対応
Context ManagerはMCPサーバーで、MCP Client SDKを使ってドメインサーバーに接続します。各ドメインサーバーは単独でも動作し、Context Managerは要求の振り分けとドメイン間のエンティティ関連付けを担います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP コンテキストマネージャー
プロジェクトのライフサイクルを通じて、作業セッションをまたいで永続的なコンテキストを AI モデルに提供する、Model Context Protocol(MCP)サーバーのコレクションです。
各プロジェクトのコンテキストは、各ドメインのサーバーが管理するドメイン固有のナレッジグラフに保存されます。すべてのドメインサーバーは、統一されたアクセスを提供する中央のコンテキストマネージャーを通じて管理できます。
各ドメインサーバーは単独で動作する MCP サーバーでもあり、コンテキストマネージャーなしで使用できます。
機能
- 永続的なコンテキスト:アイデアから本番化/公開/完了まで、進捗に合わせて簡単に
buildcontext、loadcontext、deletecontextを実行できます - 効率的なアクセス:AI モデルが必要なときに、必要なコンテキストを正確に取得できるようにします
- セッション管理:
- 過去のセッションで取り組んだ内容の概要を取得する
startsessionツール - セッション全体を分析し、今後のセッションに備えてナレッジグラフを更新する
endsessionツール
- 過去のセッションで取り組んだ内容の概要を取得する
- 複数ドメインのサポート:単一のインターフェースを通じて複数のナレッジドメインを扱い、異なるドメインのエンティティ間に関連付けを作成できます
ナレッジグラフを使う理由
コンテキストウィンドウを解放してパフォーマンスを高め、トークンコストを削減して効率性を向上させるためです。
利用可能なサーバー
contextmanager は、複数のドメイン固有 MCP サーバーを統括します。
-
Developer MCP Server:プロジェクト、コンポーネント、タスクなどのエンティティを扱うソフトウェア開発のコンテキストです。ステータス(inactive、active、complete)の追跡、優先度の管理(high、low)、および precedes 関係によるタスクの順序付けに対応しています。
-
Project MCP Server:プロジェクト、タスク、リソースなどのエンティティを扱うプロジェクト管理のコンテキストです。ステータス管理(inactive、active、complete)、優先度の設定(high、low)、タスクの順序付けに対応しています。
-
Student MCP Server:コース、課題、試験などのエンティティを扱う教育のコンテキストです。ステータス(active、completed、pending、abandoned)の追跡、課題の優先順位付け(high、low)、学習順序の作成に対応しています。
-
Qualitative Research MCP Server:研究、参加者、インタビューなどのエンティティを扱う質的研究のコンテキストです。研究活動のステータス(active、completed、pending、abandoned)の追跡、優先度の管理(high、low)、分析の順序付けに対応しています。
-
Quantitative Research MCP Server:データセット、変数、分析などのエンティティを扱う量的研究のコンテキストです。ステータス管理(active、completed、pending、abandoned)、優先度の設定(high、low)、順次処理の管理に対応しています。
各ドメインサーバーの詳細なドキュメントについては、それぞれのディレクトリにある README ファイルを参照してください。
コンテキストマネージャーの利点
コンテキストマネージャーは、次の機能を提供します。
- 統一されたインターフェース:単一のインターフェースを通じて、すべてのドメインサーバーにアクセスできます。
- スマートルーティング:リクエストを適切なドメインサーバーに自動的に振り分けます。
- ドメイン横断コンテキスト:異なるドメイン間の参照を維持します。
- 一貫したステータス管理:ドメイン間で標準化されたステータス追跡方法を提供します。
- 統一された優先度システム:異なるコンテキスト間で一貫した優先度管理を行います。
- 統合された順序付け:ドメイン間の順次ワークフローを調和の取れた方法で扱います。
実装
コンテキストマネージャーは MCP Client SDK を使用して、ドメイン固有の MCP サーバーと通信します。次の処理を行います。
- 接続情報とともにドメインサーバーのレジストリを維持します
- 各ドメインサーバーに接続する MCP クライアントを作成します
- アクティブなドメインに応じて、リクエストを適切なドメインサーバーに振り分けます
- ドメインをまたいだエンティティの関連付け機能を提供します
- ステータス、優先度、順序関係を一貫して処理します
パスの解決
Context Manager は、ドメインサーバーを特定するために、実行時に構築される絶対パスを使用します。ドメインサーバーへのパスを変更する必要がある場合は、main/index.ts の domains 配列を更新してください。
インストールと使用方法
MCP Context Manager は、いくつかの方法で使用できます。
npx を使用する(推奨)
npx で直接実行します。
npx github:tejpalvirk/contextmanager
グローバルインストール
すべてのサーバーをコマンドとして使用できるよう、グローバルにインストールします。
npm install -g github:tejpalvirk/contextmanager
次に、実行します。
mcp-server-contextmanager
または、特定のドメインサーバーを直接実行します。
contextmanager-developer
contextmanager-project
contextmanager-student
contextmanager-qualitativeresearch
contextmanager-quantitativeresearch
ソースをクローンしてビルドする
開発やカスタマイズを行う場合:
git clone https://github.com/tejpalvirk/contextmanager.git
cd contextmanager
npm install
npm run build
次に、実行します。
node main/index.js
コマンドライン引数
Context Manager とドメインサーバーでは、次のコマンドライン引数を使用できます。
# Run on a specific port (default: 3000)
npx github:tejpalvirk/contextmanager --port 3001
# Enable debug logging
npx github:tejpalvirk/contextmanager --debug
# Specify a config file
npx github:tejpalvirk/contextmanager --config ./my-config.json
# Run only specific domain servers
npx github:tejpalvirk/contextmanager --domains developer,project
環境変数
各ドメインサーバーでは、データの保存先をカスタマイズするために、次の環境変数を使用できます。
-
MEMORY_FILE_PATH:ナレッジグラフのデータを保存するパス
- 絶対パスまたは相対パスを指定できます(相対パスは現在の作業ディレクトリを基準とします)
- デフォルト:
<domain_directory>/memory.json
-
SESSIONS_FILE_PATH:セッションデータを保存するパス
- 絶対パスまたは相対パスを指定できます(相対パスは現在の作業ディレクトリを基準とします)
- デフォルト:
<domain_directory>/sessions.json
使用例:
# Store data in the current directory
MEMORY_FILE_PATH="./my-dev-memory.json" SESSIONS_FILE_PATH="./my-dev-sessions.json" npx github:tejpalvirk/contextmanager
# Store data in a specific location (absolute path)
MEMORY_FILE_PATH="/path/to/data/developer-memory.json" npx github:tejpalvirk/contextmanager
# Store data in user's home directory
MEMORY_FILE_PATH="$HOME/contextmanager/memory.json" npx github:tejpalvirk/contextmanager
ドメインサーバーとのやり取り
ドメインの管理
setActiveDomain ツールを使って、作業するドメインを選択します。
setActiveDomain(domain="developer")
セッションの管理
アクティブなドメインの新しいセッションを開始します。
startsession(domain="developer")
作業が終わったら、セッションを終了します。
endsession(sessionId="session_id_here", stage="assembly", stageNumber=6, totalStages=6, nextStageNeeded=false)
コンテキスト操作
アクティブなドメインのコンテキストを構築します。
buildcontext(type="entities", data={...})
特定のエンティティのコンテキストを読み込みます。
loadcontext(entityName="MyProject", entityType="project")
コンテキストを削除します。
deletecontext(type="entities", data={...})
エンティティのステータスと優先度の管理
エンティティにステータスを割り当てます。
buildcontext(type="relations", data=[
{ from: "LoginFeature", to: "active", relationType: "has_status" }
])
エンティティの優先度を設定します。
buildcontext(type="relations", data=[
{ from: "BugFix", to: "high", relationType: "has_priority" }
])
順次関係を定義します。
buildcontext(type="relations", data=[
{ from: "DataModel", to: "UserInterface", relationType: "precedes" }
])
例:Developer ドメインでの作業
// Set the active domain to developer
setActiveDomain(domain="developer")
// Start a new session
startsession(domain="developer")
// Create a new project entity
buildcontext(type="entities", data={
"entityType": "project",
"name": "MyProject",
"description": "A sample project",
"language": "TypeScript",
"framework": "React"
})
// Load context for the project
loadcontext(entityName="MyProject", entityType="project")
// Create a component for the project and set its status to active
buildcontext(type="entities", data={
"entityType": "component",
"name": "AuthService",
"project": "MyProject",
"description": "Authentication service component",
"dependencies": ["UserService"]
})
buildcontext(type="relations", data=[
{ from: "AuthService", to: "active", relationType: "has_status" },
{ from: "AuthService", to: "high", relationType: "has_priority" }
])
ドメイン間の操作
異なるドメインのエンティティ間に関係を作成します。
relateCrossDomain(fromDomain="developer", fromEntity="ProjectX", toDomain="project", toEntity="ProjectX", relationType="manages")
例:ドメイン間の統合
// Create relationship between developer project and project management task
relateCrossDomain(
fromDomain="developer",
fromEntity="MyProject",
toDomain="project",
toEntity="ProjectX",
relationType="manages"
)
Claude との連携
Claude Desktop で、設定から Context Manager を構成します。
{
"mcpServers": {
"contextmanager": {
"command": "npx",
"args": [
"-y",
"github:tejpalvirk/contextmanager"
],
"options": {
"port": 3000,
"domains": ["developer", "project", "student"]
}
}
}
}
トラブルシューティング
よくある問題
-
ポートがすでに使用されています:
Error: listen EADDRINUSE: address already in use :::3000解決策:
--portオプションを使って、別のポートを指定してください。 -
接続が拒否されます:
Error: connect ECONNREFUSED 127.0.0.1:3000解決策:サーバーが起動しており、指定されたアドレスからアクセスできることを確認してください。
-
ドメインサーバーが見つかりません:
Error: Domain server 'developer' not found解決策:ドメイン名が正しいこと、およびサーバーが Context Manager に登録されていることを確認してください。
-
パスの解決エラー:
Error: Cannot find module '...'解決策:
main/index.tsのdomains配列にあるすべてのパスが正しく指定されていることを確認してください。 -
メソッドが見つかりません:
Error: Method 'buildcontext' not found in domain 'developer'解決策:メソッド名が正しいこと、およびドメインサーバーでサポートされていることを確認してください。
-
ステータスまたは優先度の値が無効です:
Error: Invalid status value 'in_progress'. Valid values are: inactive, active, complete解決策:対象のドメインで正しいステータス値を使用していることを確認してください。
次のステップ
- JSON を YAML に置き換えて、トークン効率を 20~30% 改善する
- Markdown 形式のナレッジグラフを試す
バージョン管理
このパッケージはセマンティックバージョニングに従っています。
- MAJOR:互換性のない API 変更
- MINOR:後方互換性のある機能追加
- PATCH:後方互換性のあるバグ修正
現在のバージョン:1.0.0
貢献
貢献を歓迎します。次の手順に従ってください。
- リポジトリをフォークする
- 機能ブランチを作成する(
git checkout -b feature/amazing-feature) - 変更をコミットする(
git commit -m 'Add some amazing feature') - ブランチにプッシュする(
git push origin feature/amazing-feature) - プルリクエストを作成する
コーディング規約
- 新しいコードにはすべて TypeScript を使用する
- 既存のコードスタイルに従う
- 新しい機能にはテストを追加する
- 必要に応じてドキュメントを更新する
開発
前提条件
- Node.js v16 以降
- npm v7 以降
ビルド
npm install
npm run build
テスト
npm test
ライセンス
MIT
謝辞
このプロジェクトは、Anthropic が Claude 向けに開発した Model Context Protocol を基盤としています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。