WorkspaceGuard MCP
WorkspaceGuard MCP
WorkspaceGuard MCP は、ローカルで動作するクロスプラットフォームの MCP サーバーで、ChatGPT または MCP クライアントが指定されたワークスペース上で操作できるようにします。このプロジェクトは FileMCP の調査後に新規構築され、有用なセキュリティ原則を維持しつつ、最初のバージョンではまだ不要な部分を削減しています。
何に使うのか?
ファイル単位または行単位での一覧表示・読み取り、ファイル名検索・内容検索。
アトミック方式でのファイル書き込み。
dry_runとexpected_sha256をサポートし、より新しい変更の上書きを防止。「削除」は
.workspaceguard/trashへの移動で行い、手動で復元可能。シェルを有効にせずに Git の status、log、diff を読み取り。
オプションで
program + argsによるターミナル実行。シェルを介した文字列連結は行わず、allowlist 内の実行可能ファイルのみ許可。stdioまたはトークン付き127.0.0.1上の MCP Streamable HTTP で利用可能。ファイル内容やコマンドの全パラメータを保存しない監査 JSONL を記録。
Related MCP server: Kastor
主な改善点
トピック | 元の FileMCP | WorkspaceGuard MCP |
クロスプラットフォーム基盤 | Swift と C# の並行実装 | macOS/Windows/Linux 向けの単一 TypeScript コア |
権限 | ファイル/Git; シェル有効または無効 |
|
コマンド実行 | シェル文字列 ( | 実行可能ファイル + 引数配列、 |
ファイル書き込み | 書き込み/追記、アトミック置換あり | アトミック置換 + ドライラン + SHA-256 による楽観的ロック |
削除 | 実際のファイル/ディレクトリ削除 | 内部ゴミ箱への移動 |
シークレットファイル | 専用の denylist なし |
|
追跡 | ランタイムログ | リクエスト ID、結果、所要時間を含む監査 JSONL |
プロトコル | 独自実装の HTTP/MCP パーサー | MCP プロジェクト公式の MCP TypeScript SDK v2 |
ワークスペースの選択、モードの選択、コマンド allowlist の選択、サーバーの起動/停止、アプリ内での MCP テスト、Secure MCP Tunnel への接続ができる Electron デスクトップインターフェースを備えています。FileMCP の方針に従い、アプリはセッションごとに新しいループバックトークンを生成し、サーバーを 127.0.0.1 に維持し、tunnel-client のライフサイクルを管理し、Runtime API キーを OS の暗号化メカニズム(macOS では利用可能な場合 Keychain)で保存します。tunnel-client バイナリは引き続きユーザーが OpenAI からダウンロードします。プロジェクトはそのバイナリを同梱しません。ローカルランタイムとトンネルは Codex や OpenAI のモデル/API を呼び出しません。開発者モードアプリ経由で ChatGPT Web とともにアプリを使用するため、Codex のクォータは消費しません。会話は引き続き使用中の ChatGPT プランの制限に従います。
要件
Node.js 20 以上(Node.js 24 でテスト済み)。
git_*ツールを使用する場合は Git。ChatGPT の場合: カスタム MCP アプリをサポートするワークスペース、Secure MCP Tunnel、適切なトンネル権限を持つ runtime API キー。OpenAI Secure MCP Tunnel を参照。
ステップごとの実行
ステップ 1 — 依存関係のインストール
cd "/Users/danhpham/Documents/ChatGPT/MCP"
npm installAPI キーを .env に入れたり、Git にコミットしたりしないでください。
ステップ 2 — プロジェクト全体のテスト
npm run verifyこのコマンドは、typecheck、ユニット/統合テスト、本番ビルド、MCP stdio 経由のセマンティックスモークテストを実行します。
ステップ 3 — デスクトップインターフェースの実行(最も簡単な方法)
npm run desktopWorkspaceGuard ウィンドウで:
フォルダを選択… を押し、テスト用のワークスペースを選択します。
初回使用時は読み取り専用のままにします。
MCP を起動を押します。ステータスが実行中に変わると、HTTP サーバーは
127.0.0.1:<ポート>で準備完了です。終了したら停止を押します。アプリを閉じるとサーバーとトンネルの両方が停止します。
インターフェースは HTTP トークンを表示または保存しません。トークンは起動のたびにメインプロセスで新しく生成されます。
インターフェース内での MCP 全体のテスト
サーバーが実行中を表示したら、MCP テストを実行を押します。これは Electron メインプロセス内の実際の MCP クライアントであり、インターフェースを介した偽のテストではありません。
読み取り専用の場合、アプリは MCP HTTP ハンドシェイク、ツール探索、
workspace_info、list_filesをテストします。読み取りと書き込みの場合、アプリはさらに
write_file→read_file→trash_pathをテストします。ランダムな名前のテストファイルが.workspaceguard/trashに移動されるため、確認のチェックを入れる必要があります。コマンド実行の場合、allowlist で
nodeのチェックを維持し、アプリがnode --versionによるrun_commandをさらにテストできるようにします。
最後の 2 つのモードには別のテスト用ディレクトリを選択してください。各ステップの結果はインターフェースのテストセクションにすぐに表示されます。
ステップ 4 — ターミナルでコアをビルド(オプション)
npm run build本番エントリポイントは次のとおりです:
/Users/danhpham/Documents/ChatGPT/MCP/dist/index.jsステップ 5 — ターミナルでワークスペースとモードを選択(オプション)
小さなテスト用ディレクトリから始めることをお勧めします:
mkdir -p /tmp/workspaceguard-demo
printf 'Xin chào MCP\n' > /tmp/workspaceguard-demo/hello.txt3 つのモード:
read-only: ファイル読み取りと Git 読み取りのツールのみ。これがデフォルトです。workspace-write:write_fileとtrash_pathを追加。command: 書き込み権限とrun_commandを追加。
注意: サーバーは 3 つのモードすべてで内部監査を .workspaceguard/audit.jsonl に書き込み続けます。「読み取り専用」は公開ツールを説明するものであり、サーバープロセス自体のファイルシステムサンドボックスではありません。
ステップ 6A — stdio 経由での実行(推奨)
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode read-onlyターミナルは MCP クライアントが stdin 経由でリクエストを送信するのを待ちます。これは正しい動作であり、フリーズではありません。
ステップ 6B — 書き込み権限の有効化
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode workspace-writetrash_path はデフォルトで dry_run=true です。呼び出し元が dry_run=false を送信した場合のみ、パスはゴミ箱に移動されます。
ステップ 6C — ターミナルコマンドの自動実行を許可
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode command \
--allow-command git,node,npm,npxツール入力の例:
{
"program": "npm",
"args": ["test"],
"cwd": "",
"timeout_seconds": 120
}run_command はシェルを使用しませんが、OS サンドボックスではありません。node、npm、Python、または許可された実行可能ファイルは、ワークスペース外の読み取り/書き込み、ネットワークの使用、現在のアカウントの権限での他のプロセスの実行が可能です。コマンドモードは信頼できるワークスペースとワークフローでのみ使用してください。
ステップ 7 — Secure MCP Tunnel インターフェースで ChatGPT を接続
OpenAI Platform で、Secure MCP Tunnel と、トンネルを使用する権限を持つ runtime API キーを作成します。OS に適した tunnel-client をダウンロードします。Runtime API キーを Codex に送信したり、.env、ソース、Git に書き込んだりしないでください。
アプリで、MCP が実行中を表示した後:
tunnel_...形式のトンネル ID を貼り付けます。Runtime API キーを貼り付けます。次回は空のままにして、暗号化して保存されたキーを使用できます。
バイナリが
PATHにある場合はtunnel-clientを入力するか、ファイルを選択… を押してダウンロードしたバイナリを選択します。デフォルトのプロファイルを維持し、トンネルに接続を押し、「ChatGPT の準備ができました」という通知を待ちます。
緑色の「ChatGPT の準備ができました」という行がローカル部分の接続を確認します。ChatGPT Web を開くを押します。このアプリは Codex を開いたり呼び出したりしません。
ChatGPT のみを切断する場合はトンネルを切断を押します。トンネルと MCP サーバーの両方を停止するには停止を押します。
アプリは tunnel-client init --sample sample_mcp_remote_no_auth → doctor --explain → run の一連のコマンドと同等の処理を実行し、MCP エンドポイントは http://127.0.0.1:<ポート>/mcp、ローカルヘルスエンドポイント、トークンヘッダーは環境変数で渡されます。トンネルプロファイルはワークスペースではなく、アプリの専用データに保存されます。
ChatGPT Web で、ワークスペースのポリシーに従って Developer Mode/カスタム MCP アプリを有効にし、新しいアプリを作成し、トンネル接続を選択し、作成したトンネルを選択し、ツールをスキャンを実行してから、書き込みツールを有効にする前に workspace_info、list_files、read_file を試してください。トンネルオプションが表示されない場合は、ワークスペースに読み取り権限とトンネル使用権限が付与されているか確認してください。
ステップ 8 — HTTP ループバック(オプション)
export WORKSPACE_MCP_TOKEN="$(openssl rand -hex 32)"
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport http \
--mode read-only \
--port 7331ヘルスチェック:
curl --fail http://127.0.0.1:7331/healthzMCP リクエストは次のヘッダーを送信する必要があります:
X-Workspace-MCP-Token: <WORKSPACE_MCP_TOKEN>HTTP サーバーは 127.0.0.1 のみにバインドし、Host、Origin、トークン、基本的なフレーミング、ボディサイズ制限をチェックします。特定の HTTP ニーズがない場合は stdio を使用してください。
利用可能なツール
常に利用可能
workspace_infolist_filesread_fileread_file_rangesearch_filenamessearch_contentgit_statusgit_loggit_diff
モード workspace-write または command
write_filetrash_path
モード command のみ
run_command
ゴミ箱に入れたファイルの復元
ツールは trashPath を返します。ローカルコマンドで復元します。例:
mv "/tmp/workspaceguard-demo/.workspaceguard/trash/<id>/remove-me.txt" \
"/tmp/workspaceguard-demo/remove-me.txt"WorkspaceGuard は、意図しないデータ削除を避けるため、このバージョンではゴミ箱を自動的にクリーンアップしません。
構造
src/
├── config.ts # CLI/env và mode
├── security/path-policy.ts # containment + sensitive-path policy
├── services/files.ts # file/search/write/trash
├── services/git.ts # Git read-only
├── services/process.ts # process limits + tree cleanup
├── tools.ts # MCP schemas, annotations, audit
├── server.ts # stdio + HTTP loopback
├── desktop/ # Electron main/preload + renderer an toàn
└── index.ts # CLI entry
tests/ # unit, integration, MCP semantic smoke
docs/ # phân tích source và lộ trình追加ドキュメント
ライセンスと参考ソース
このプロジェクトは Apache License 2.0 を使用しています。FileMCP も Apache-2.0 を使用しています。参考設計のソースについては NOTICE を参照してください。tunnel-client バイナリは含まれていません。オペレーターは公式の OpenAI ソースから適切なバージョンをダウンロードします。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT to inspect and edit local projects through a secure MCP interface, offering workspace management, file operations, git integration, and safe command execution.4MIT
- AlicenseNot gradedqualityAmaintenanceLets ChatGPT or MCP clients work with files on your machine, with tools for reading, editing, searching, git operations, and safety checks.MIT
- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT to securely operate a single Windows development workspace via a local MCP server, offering file editing, Git status, static analysis, approved test/build, and limited ADB operations with audit logging.MIT
- AlicenseAqualityBmaintenanceEnables ChatGPT and Codex to safely work with explicitly authorized local project folders through MCP, providing constrained file reading, searching, patch editing, Git inspection, and whitelisted tasks without exposing arbitrary shell, deletion, or deployment capabilities.17MIT
Related MCP Connectors
Securely search and manage workspace context files for AI agents and teams.
Project management MCP for AI agents with safe task reads and writes.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/phamcongdanh98/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server