mcpField
M
MCP Context Manager

MCP Context Manager

ローカル
github.com/tejpalvirkメモリ・ナレッジ1081 週間前に更新

MCP Context Manager について

MCP Context Managerは、ドメイン別のナレッジグラフを使い、作業セッションやプロジェクト段階をまたいでコンテキストを保持します。開発、プロジェクト管理、教育、研究のMCPサーバーを統括し、ドメイン間のエンティティ連携にも対応します。

主な機能

  1. 01セッションをまたぐコンテキスト保持
  2. 02ナレッジグラフによるドメイン情報の保存
  3. 03セッション開始・終了時の管理
  4. 04複数ドメインサーバーへのルーティング
  5. 05ドメイン間のエンティティ関連付け

活用シーン

  1. 01開発プロジェクトの状況を次のセッションへ引き継ぐ
  2. 02コース、課題、試験の追跡
  3. 03質的・量的研究活動の整理

MCP 対応

Context ManagerはMCPサーバーで、MCP Client SDKを使ってドメインサーバーに接続します。各ドメインサーバーは単独でも動作し、Context Managerは要求の振り分けとドメイン間のエンティティ関連付けを担います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"contextmanager": {
"command": "npx",
"args": [
"-y",
"github:tejpalvirk/contextmanager"
]
}
}
}
起動コマンドnpx -y github:tejpalvirk/contextmanager

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmgithub:tejpalvirk/contextmanager

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP コンテキストマネージャー

プロジェクトのライフサイクルを通じて、作業セッションをまたいで永続的なコンテキストを AI モデルに提供する、Model Context Protocol(MCP)サーバーのコレクションです。

各プロジェクトのコンテキストは、各ドメインのサーバーが管理するドメイン固有のナレッジグラフに保存されます。すべてのドメインサーバーは、統一されたアクセスを提供する中央のコンテキストマネージャーを通じて管理できます。

各ドメインサーバーは単独で動作する MCP サーバーでもあり、コンテキストマネージャーなしで使用できます。

機能

  • 永続的なコンテキスト:アイデアから本番化/公開/完了まで、進捗に合わせて簡単に buildcontext、loadcontext、deletecontext を実行できます
  • 効率的なアクセス:AI モデルが必要なときに、必要なコンテキストを正確に取得できるようにします
  • セッション管理:
    1. 過去のセッションで取り組んだ内容の概要を取得する startsession ツール
    2. セッション全体を分析し、今後のセッションに備えてナレッジグラフを更新する endsession ツール
  • 複数ドメインのサポート:単一のインターフェースを通じて複数のナレッジドメインを扱い、異なるドメインのエンティティ間に関連付けを作成できます

ナレッジグラフを使う理由

コンテキストウィンドウを解放してパフォーマンスを高め、トークンコストを削減して効率性を向上させるためです。

利用可能なサーバー

contextmanager は、複数のドメイン固有 MCP サーバーを統括します。

  1. Developer MCP Server:プロジェクト、コンポーネント、タスクなどのエンティティを扱うソフトウェア開発のコンテキストです。ステータス(inactive、active、complete)の追跡、優先度の管理(high、low)、および precedes 関係によるタスクの順序付けに対応しています。

  2. Project MCP Server:プロジェクト、タスク、リソースなどのエンティティを扱うプロジェクト管理のコンテキストです。ステータス管理(inactive、active、complete)、優先度の設定(high、low)、タスクの順序付けに対応しています。

  3. Student MCP Server:コース、課題、試験などのエンティティを扱う教育のコンテキストです。ステータス(active、completed、pending、abandoned)の追跡、課題の優先順位付け(high、low)、学習順序の作成に対応しています。

  4. Qualitative Research MCP Server:研究、参加者、インタビューなどのエンティティを扱う質的研究のコンテキストです。研究活動のステータス(active、completed、pending、abandoned)の追跡、優先度の管理(high、low)、分析の順序付けに対応しています。

  5. Quantitative Research MCP Server:データセット、変数、分析などのエンティティを扱う量的研究のコンテキストです。ステータス管理(active、completed、pending、abandoned)、優先度の設定(high、low)、順次処理の管理に対応しています。

各ドメインサーバーの詳細なドキュメントについては、それぞれのディレクトリにある README ファイルを参照してください。

コンテキストマネージャーの利点

コンテキストマネージャーは、次の機能を提供します。

  • 統一されたインターフェース:単一のインターフェースを通じて、すべてのドメインサーバーにアクセスできます。
  • スマートルーティング:リクエストを適切なドメインサーバーに自動的に振り分けます。
  • ドメイン横断コンテキスト:異なるドメイン間の参照を維持します。
  • 一貫したステータス管理:ドメイン間で標準化されたステータス追跡方法を提供します。
  • 統一された優先度システム:異なるコンテキスト間で一貫した優先度管理を行います。
  • 統合された順序付け:ドメイン間の順次ワークフローを調和の取れた方法で扱います。

実装

コンテキストマネージャーは MCP Client SDK を使用して、ドメイン固有の MCP サーバーと通信します。次の処理を行います。

  1. 接続情報とともにドメインサーバーのレジストリを維持します
  2. 各ドメインサーバーに接続する MCP クライアントを作成します
  3. アクティブなドメインに応じて、リクエストを適切なドメインサーバーに振り分けます
  4. ドメインをまたいだエンティティの関連付け機能を提供します
  5. ステータス、優先度、順序関係を一貫して処理します

パスの解決

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"]
      }
    }
  }
}

トラブルシューティング

よくある問題
  1. ポートがすでに使用されています:

    Error: listen EADDRINUSE: address already in use :::3000
    

    解決策:--port オプションを使って、別のポートを指定してください。

  2. 接続が拒否されます:

    Error: connect ECONNREFUSED 127.0.0.1:3000
    

    解決策:サーバーが起動しており、指定されたアドレスからアクセスできることを確認してください。

  3. ドメインサーバーが見つかりません:

    Error: Domain server 'developer' not found
    

    解決策:ドメイン名が正しいこと、およびサーバーが Context Manager に登録されていることを確認してください。

  4. パスの解決エラー:

    Error: Cannot find module '...'
    

    解決策:main/index.ts の domains 配列にあるすべてのパスが正しく指定されていることを確認してください。

  5. メソッドが見つかりません:

    Error: Method 'buildcontext' not found in domain 'developer'
    

    解決策:メソッド名が正しいこと、およびドメインサーバーでサポートされていることを確認してください。

  6. ステータスまたは優先度の値が無効です:

    Error: Invalid status value 'in_progress'. Valid values are: inactive, active, complete
    

    解決策:対象のドメインで正しいステータス値を使用していることを確認してください。

次のステップ

  • JSON を YAML に置き換えて、トークン効率を 20~30% 改善する
  • Markdown 形式のナレッジグラフを試す

バージョン管理

このパッケージはセマンティックバージョニングに従っています。

  • MAJOR:互換性のない API 変更
  • MINOR:後方互換性のある機能追加
  • PATCH:後方互換性のあるバグ修正

現在のバージョン:1.0.0

貢献

貢献を歓迎します。次の手順に従ってください。

  1. リポジトリをフォークする
  2. 機能ブランチを作成する(git checkout -b feature/amazing-feature)
  3. 変更をコミットする(git commit -m 'Add some amazing feature')
  4. ブランチにプッシュする(git push origin feature/amazing-feature)
  5. プルリクエストを作成する
コーディング規約
  • 新しいコードにはすべて TypeScript を使用する
  • 既存のコードスタイルに従う
  • 新しい機能にはテストを追加する
  • 必要に応じてドキュメントを更新する

開発

前提条件
  • Node.js v16 以降
  • npm v7 以降
ビルド
npm install
npm run build
テスト
npm test

ライセンス

MIT

謝辞

このプロジェクトは、Anthropic が Claude 向けに開発した Model Context Protocol を基盤としています。

コメント

MCP は初めてですか?

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

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