mcpField
M
MCP Sidecar

MCP Sidecar

ローカル
github.com/lsequeiraa開発ツール022 週間前に更新

MCP Sidecar について

MCP Sidecarは、複数のツール呼び出しにまたがってバックグラウンドプロセスを動かす、コーディングエージェント向けのクロスプラットフォームMCPサーバーです。プロセス管理と出力取得に加え、任意のコマンド制限や監査ログに対応します。

主な機能

  1. 01バックグラウンドプロセスの起動と停止
  2. 02プロセス一覧と状態確認
  3. 03出力の取得と標準入力への書き込み
  4. 04終了したプロセスの自動削除
  5. 05任意の実行ファイル許可リストと監査ログ

活用シーン

  1. 01テスト中のAPIサーバー稼働
  2. 02監視モードでのビルド実行
  3. 03データベースの起動、テスト、停止

MCP 対応

stdio経由で、start、stop、list、output、send、statusの6つのプロセス管理ツールをMCPクライアントに提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"lsequeiraa-mcp-sidecar": {
"command": "npx",
"args": [
"-y",
"mcp-sidecar"
],
"env": {
"SIDECAR_MAX_PROCESSES": "<SIDECAR_MAX_PROCESSES>",
"SIDECAR_BUFFER_SIZE": "<SIDECAR_BUFFER_SIZE>",
"SIDECAR_KILL_TIMEOUT": "<SIDECAR_KILL_TIMEOUT>",
"SIDECAR_CLEANUP_AFTER": "<SIDECAR_CLEANUP_AFTER>",
"SIDECAR_MAX_OUTPUT_SIZE": "<SIDECAR_MAX_OUTPUT_SIZE>",
"SIDECAR_ALLOWED_EXECUTABLES": "<SIDECAR_ALLOWED_EXECUTABLES>",
"SIDECAR_BLOCKED_PATTERNS": "<SIDECAR_BLOCKED_PATTERNS>",
"SIDECAR_AUDIT_LOG": "<SIDECAR_AUDIT_LOG>"
}
}
}
}
起動コマンドnpx -y mcp-sidecar
設定が必要な環境変数
SIDECAR_MAX_PROCESSESMaximum number of concurrent managed processes (default: 10)
SIDECAR_BUFFER_SIZEOutput buffer size per stream in bytes (default: 1048576)
SIDECAR_KILL_TIMEOUTMilliseconds to wait between graceful and forced termination (default: 5000)
SIDECAR_CLEANUP_AFTERSeconds before exited processes are auto-removed. 0 disables cleanup (default: 1800)
SIDECAR_MAX_OUTPUT_SIZEGlobal cap on bytes returned by the output tool. 0 means unlimited (default: 0)
SIDECAR_ALLOWED_EXECUTABLESComma-separated allowlist of executable names. When set, enables security mode with direct exec (no shell). Unset means security disabled.
SIDECAR_BLOCKED_PATTERNSComma-separated regex patterns to reject in commands. Only applies when security is enabled.
SIDECAR_AUDIT_LOGAudit log destination. 'true' writes to cwd, 'temp' writes to OS temp dir, or a directory path. Unset disables audit logging.

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

パッケージ
npmmcp-sidecar0.3.2

ツール

6

掲載時のツール一覧 · 3 週間前に更新

このツールにパラメーターはありません。

詳細

mcp-sidecar

バックグラウンドプロセスを管理する、軽量でクロスプラットフォーム対応の MCP サーバーです。Go で構築されており、ランタイム依存関係なしで単一バイナリとして配布できます。

目的

AI コーディングエージェント(Claude Code、Gemini CLI、Cursor など)には、長時間稼働するプロセスを実行しながら、それらとのやり取りを続ける機能がありません。影響を受ける一般的なワークフローは次のとおりです。

  • API サーバーを起動して、準備が整うまで待ち、その後 HTTP リクエストを実行する
  • コードの編集を続けながら、ウォッチモードでビルドを実行する
  • データベースを起動して、データを投入し、テストを実行してから、停止する

mcp-sidecar は、プロセスのライフサイクル管理を stdio トランスポート経由の MCP ツールとして公開することで、この問題を解決します。

機能

  • クロスプラットフォーム -- 単一のコードベースで Windows、Linux、macOS に対応
  • 依存関係ゼロ -- 単一の Go バイナリで動作し、ランタイムは不要
  • 最小限の機能 -- 不要な複雑さを排した 6 つのツール
  • 確実なクリーンアップ -- サーバー終了時にすべての子プロセスを終了します。終了したプロセスは、設定可能な TTL の経過後に自動的に削除されます
  • 出力制御 -- リクエストごとの maxBytes とグローバル設定の SIDECAR_MAX_OUTPUT_SIZE で、LLM に返す出力を制限できます
  • コマンドのセキュリティ -- 実行可能ファイルの許可リスト、ブロックパターン、監査ログに対応(いずれも任意)

インストール

クイックセットアップ(すべてのエージェント)

サポートされているコーディングエージェントに mcp-sidecar をインストールする最も簡単な方法です。

# Interactive -- detects installed agents and lets you pick
npx add-mcp mcp-sidecar

# Install to a specific agent
npx add-mcp mcp-sidecar -a claude-code
npx add-mcp mcp-sidecar -a cursor
npx add-mcp mcp-sidecar -a vscode

# Install to all detected agents
npx add-mcp mcp-sidecar --all

対応エージェント:Claude Code、Codex、Cursor、VS Code、Gemini CLI、OpenCode、Zed、Goose、Cline など。add-mcp で全リストを確認してください。

手動設定

Claude Code:

claude mcp add sidecar -- npx -y mcp-sidecar

opencode(~/.config/opencode/opencode.json):

{
  "mcp": {
    "sidecar": {
      "type": "local",
      "command": ["npx", "-y", "mcp-sidecar"],
      "enabled": true
    }
  }
}

汎用(mcp.json):

{
  "mcpServers": {
    "sidecar": {
      "command": "npx",
      "args": ["-y", "mcp-sidecar"]
    }
  }
}
ソースからのインストール
go install github.com/lsequeiraa/mcp-sidecar@latest

windows/amd64、linux/amd64、darwin/arm64、darwin/amd64 向けのビルド済みバイナリも、GitHub Releases から入手できます。

ツール

ツール説明パラメーター戻り値
startバックグラウンドプロセスを起動するcommand、name?、cwd?、env?{ id, name, pid }
stopプロセスを終了する(正常終了後、強制終了)id{ id, exitCode, uptime }
list管理対象の全プロセスを一覧表示する--[{ id, name, pid, state, uptime }]
outputバッファーに保存された stdout/stderr を取得するid、tail?、maxBytes?{ stdout, stderr, uptime }
sendプロセスの stdin に書き込むid、input{ ok }
status1 つのプロセスの詳細な状態を取得するid{ id, name, pid, state, exitCode, uptime, outputSize }

uptime フィールドは実際の稼働時間を表します。実行中のプロセスでは起動してからの時間、終了したプロセスではプロセスが稼働していた時間です(起動してからの経過時間ではありません)。

output ツールの maxBytes パラメーターは、stdout と stderr を合わせた合計バイト数を制限します。tail と maxBytes の両方を指定した場合は、まず tail で行を選択し、その後 maxBytes で結果のバイト数を制限します。出力が上限を超えた場合は、最新の内容を残し、stderr を優先します。切り詰める際は行の境界を維持します。出力が切り詰められた場合、レスポンスには "truncated": true と元のサイズを示す "totalBytes" が含まれます。

プロセスの状態
状態意味
runningプロセスが実行中です
exitedプロセスが正常に終了しました
failedゼロ以外の終了コードでプロセスが終了しました
killedstop ツールによってプロセスが停止されました
ワークフローの例

エージェントが API サーバーを起動し、準備が整うまで待ってからテストを実行し、最後に停止する一般的なセッションです。

1. start  { command: "dotnet run --project MyApi", name: "api" }
   → { id: "sc-a1b2c3", name: "api", pid: 12345 }

2. output { id: "sc-a1b2c3", tail: 5 }
   → { stdout: "Now listening on: http://localhost:5000", stderr: "", uptime: "3s" }

3. (agent runs curl http://localhost:5000/health using its own shell)

4. output { id: "sc-a1b2c3", tail: 20 }
   → { stdout: "...request logs...", stderr: "", uptime: "15s" }

5. stop   { id: "sc-a1b2c3" }
   → { id: "sc-a1b2c3", exitCode: -1, uptime: "18s" }

エージェントは、短時間で終了するコマンド(curl、ビルドツールなど)にはネイティブのシェルを使用し、複数のツール呼び出しをまたいで稼働させる必要のあるプロセスには mcp-sidecar を使用します。

設定

設定はすべて環境変数で行います(すべて省略可能です)。

変数デフォルト値説明
SIDECAR_MAX_PROCESSES10同時に実行できるプロセスの最大数
SIDECAR_BUFFER_SIZE1048576 (1MB)プロセスごとの出力バッファーサイズ(バイト単位)
SIDECAR_KILL_TIMEOUT5000SIGTERM と SIGKILL の間に待機するミリ秒数
SIDECAR_CLEANUP_AFTER1800 (30 min)終了したプロセスが自動削除されるまでの秒数。0 = 無効
SIDECAR_MAX_OUTPUT_SIZE0 (unlimited)output ツールが返すバイト数の全体上限。0 = 上限なし
SIDECAR_ALLOWED_EXECUTABLES--実行可能ファイルの許可リスト(カンマ区切り)(セキュアモードを有効化)
SIDECAR_BLOCKED_PATTERNS--コマンドを拒否する正規表現パターン(カンマ区切り)
SIDECAR_AUDIT_LOG--監査ログのディレクトリ、または true(カレントディレクトリ)/temp(OS の一時ディレクトリ)

自動クリーンアップに関する注意: SIDECAR_CLEANUP_AFTER が有効な場合(デフォルト)、TTL の期限が切れると終了したプロセスはマネージャーから削除されます。削除後、そのプロセス ID に対する output、status、stop の呼び出しは「not found」を返します。必要な出力は TTL の期間内(デフォルトでは 30 分)に取得してください。

セキュリティ

SIDECAR_ALLOWED_EXECUTABLES が設定されている場合、mcp-sidecar はシェルモードからセキュアモードに切り替わります。

シェルモード(デフォルト)セキュアモード
実行方法sh -c / cmd /C 経由直接実行(シェルを介さない)
許可リストなしリストに記載された実行可能ファイルのみ実行可能
メタ文字使用可能(シェルが解釈します)拒否される(|、&、;、>、<、$、`、(、))
ブロックパターンなしコマンド全体に対して照合する正規表現パターン
監査ログなしすべての開始/停止/ブロックイベントを記録する任意の JSONL ログ

引用符内のメタ文字は使用できます。grep "error|warning" file.txt は、| が二重引用符内にあり、シェルに解釈されないため動作します。

バックスラッシュ(\)は意図的にメタ文字として扱われません。そのため、C:\Users\me\app.exe のような Windows パスをエスケープせずに使用できます。

設定例

Claude Desktop / Cursor(mcp.json):

{
  "mcpServers": {
    "sidecar": {
      "command": "npx",
      "args": ["-y", "mcp-sidecar"],
      "env": {
        "SIDECAR_ALLOWED_EXECUTABLES": "dotnet,npm,node,git,python",
        "SIDECAR_BLOCKED_PATTERNS": "rm\\s+-rf,--force,--no-verify",
        "SIDECAR_AUDIT_LOG": "./logs"
      }
    }
  }
}

Claude Code:

claude mcp add sidecar \
  -e SIDECAR_ALLOWED_EXECUTABLES=dotnet,npm,node,git,python \
  -e SIDECAR_BLOCKED_PATTERNS="rm\\s+-rf,--force,--no-verify" \
  -e SIDECAR_AUDIT_LOG=true \
  -- npx -y mcp-sidecar
監査ログの形式

監査ログは、設定したディレクトリ内の sidecar-audit.jsonl という名前のファイルに常に書き込まれます。SIDECAR_AUDIT_LOG 変数で保存先を指定します。

値ログファイルの場所
true./sidecar-audit.jsonl(カレントディレクトリ)
temp<OS temp dir>/sidecar-audit.jsonl
./logs./logs/sidecar-audit.jsonl(ディレクトリは自動作成)

各行は、次の 3 種類のイベントのいずれかを示す JSON オブジェクトです。

{"ts":"2025-03-12T10:00:00Z","event":"start","id":"abc123","command":"dotnet run","cwd":"/app"}
{"ts":"2025-03-12T10:00:05Z","event":"stop","id":"abc123","exit_code":0,"duration":"5s"}
{"ts":"2025-03-12T10:00:06Z","event":"blocked","command":"rm -rf /","reason":"executable \"rm\" is not in allowed list"}
実行可能ファイルの照合

許可リストは、次の 3 種類の照合モードに対応しています。

許可リストの項目照合対象
dotnet任意の場所にある dotnet(ベース名で照合)
./build.sh./build.sh のみ(完全一致)
/usr/bin/python3/usr/bin/python3 のみ、または PATH 経由で解決される任意の python3

配布

配布経路使用方法
npmnpx -y mcp-sidecar(@mcp-sidecar/* のオプションパッケージ経由でプラットフォーム用バイナリを使用)
GitHub Releases各リリースに添付されたビルド済みバイナリ
MCP Registryio.github.lsequeiraa/mcp-sidecar

ライセンス

MIT

コメント

MCP は初めてですか?

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

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