Repository navigation
src_mcp_server_manager
globalpocket edited this page Apr 11, 2026
·
3 revisions
MCPServerManager は、Brownie の推論・知覚・実行を支える 「MCP サーバー群のライフサイクル管理と統合インターフェース」 を担当します。
-
堅牢なインフラ (Robust Infrastructure): AnyIO の
TaskGroupとAsyncExitStackを用い、メインプロセスの終了時や例外発生時に MCP サーバープロセスを確実にクリーンアップ。 - 動的プロビジョニング: タスクの文脈(リポジトリ、メモリパス等)に合わせて Workspace, Knowledge, SQLite の各 MCP サーバーをオンデマンドで起動。
- ツールアダプタ: 複数の MCP サーバーが提供するツールを統合し、LangChain 形式に変換してエージェント(Planner)に提供。
初期化引数:
-
project_root(str): Brownie 自体のルートディレクトリ(サーバープログラムの探索基点)。
公開メソッド:
-
start_workspace_server(repo_path, reference_path, user_id, group_id) -> Client(async)-
振る舞い:
-
src.mcp_server.workspace_serverを別プロセスとして起動。 - ワークスペースルートやサンドボックスの UID/GID を環境変数および引数で渡す。
-
FastMCPクライアントを初期化し、接続。
-
-
振る舞い:
-
start_knowledge_server(repo_path, memory_path, repo_name) -> Client(async)-
振る舞い:
-
src.mcp_server.knowledge_serverを起動。 - リポジトリの AST 解析 DB へのパスやメモリパスを渡す。
-
-
振る舞い:
-
get_langchain_tools() -> List[Any](async)-
振る舞い:
- 現在接続されているすべての MCP サーバー(Workspace, Knowledge, SQLite)から、
load_mcp_toolsを用いてツール定義を一括取得。
- 現在接続されているすべての MCP サーバー(Workspace, Knowledge, SQLite)から、
-
振る舞い:
-
stop_all() -> None(async)-
振る舞い:
-
AsyncExitStackをクローズし、すべての子プロセスを正常終了させる。
-
-
振る舞い:
-
標準ライブラリ:
asyncio,os,sys -
外部依存:
fastmcp.Client,anyio,langchain_mcp_adapters.tools.load_mcp_tools