Screenshot Server について
Screenshot Server はローカル画面をキャプチャし、呼び出し側が指定したパスに画像を保存します。WSL から Windows への連携を含め、MCP ホストが画像ファイルを別プロセスに渡す用途を想定しています。
主な機能
- 01ホストのワークスペースに保存
- 02サーバーの images ディレクトリに保存
- 03指定した Windows または UNC パスに保存
- 04成功状態または保存パスを返す
活用シーン
- 01Windows のスクリーンショットを WSL ワークスペースに配置
- 02保存した画像パスを画像分析サーバーに渡す
- 03指定した Windows または UNC の場所に保存
MCP 対応
スクリーンショットの撮影とファイル保存のツールを MCP クライアントに公開します。呼び出し側はホストのワークスペース、ローカルの images ディレクトリ、Windows または UNC の保存先を指定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
スクリーンショットサーバー(ファイルパス重視)
このプロジェクトは、スクリーンショットをキャプチャし、他のプロセスや AI アシスタントが利用できるようにするための MCP(モジュラー通信プロトコル)サーバーを提供します。主に、クライアント(ホスト)が指定したファイルパスにスクリーンショットを保存することを目的としています。
主な課題と解決策
MCP 経由で送信されたスクリーンショットの画像データを AI アシスタントが直接解釈する方法は、テストで信頼性に欠けることが判明しました。このサーバーでは、ファイルパスを中心とした、より堅牢なワークフローを採用しています。
推奨ワークフロー(WSL ホスト → Windows サーバー):
- MCP ホスト(WSL で実行される AI アシスタントなど)が
save_screenshot_to_host_workspaceツールを呼び出し、引数としてWSL のワークスペースパスを渡します。 - Windows 上で実行されているこのサーバーが画面をキャプチャします。
- サーバーが受け取った WSL パスを、Windows からアクセスできる UNC パス(例:
\\wsl$\Distro\path)に変換します。 - サーバーが UNC パス経由で、ホストの WSL ファイルシステム内の指定された場所にスクリーンショットを保存します。
- サーバーが
"success"または"failed:..."を返します。 - MCP ホストは、ファイルが自身のワークスペース(パス引数で指定した場合はそのサブディレクトリ)に保存されたことを確認できます。
- その後、MCP ホストはWSL パスを、画像分析用の別の専用 MCP サーバー(WSL で実行)に渡すことができます。
代替ワークフロー(一般):
- MCP ホストが
take_screenshot_and_return_pathを呼び出します。必要に応じてファイル名を指定します。 - サーバーがサーバーのローカルな
images/ディレクトリにスクリーンショットを保存します。 - サーバーが保存先ファイルの絶対パス(例:Windows パス)を返します。
- MCP ホストがパスを受け取り、(必要に応じて変換したうえで)分析サーバーに渡します。
利用可能なツール
このサーバーは、推奨される使用順に以下のツールを提供します。
-
save_screenshot_to_host_workspace(host_workspace_path: str, name: str = "workspace_screenshot.jpg")- 推奨用途: AI アシスタント(ホスト)の現在の WSL ワークスペースにスクリーンショットを直接保存します。シームレスに連携するための推奨方法です。
- 動作: スクリーンショットを撮影し、指定された WSL パスを UNC パスに変換して、ホストのワークスペースにファイルを保存します。WSL ディストリビューション名は自動的に検出されます。
- 引数:
host_workspace_path(str):ホストのワークスペースの絶対 WSL パス(例:/home/user/project)。name(str, optional):ファイル名。デフォルトはworkspace_screenshot.jpgです。
- 戻り値:
str-"success"または"failed: [error message]"。
-
take_screenshot_and_return_path(name: str = "latest_screenshot.jpg")- 用途: サーバーの場所を基準とする固定の
images/ディレクトリにスクリーンショットを保存し、絶対パス(通常は Windows パス)を返します。呼び出し元が外部処理用にパスを必要とする場合に便利です。 - 引数:
name(str, optional):ファイル名。デフォルトはlatest_screenshot.jpgです。
- 戻り値:
str- 絶対パス、または"failed: [error message]"。
- 用途: サーバーの場所を基準とする固定の
-
take_screenshot_path(path: str = "./", name: str = "screenshot.jpg")- 用途: Windows パスまたは UNC パスで指定された任意の場所(例:ホストのワークスペース外)にスクリーンショットを保存します。呼び出し元はパスを慎重に指定する必要があります。
- 引数:
path(str, optional):保存先ディレクトリ(Windows または UNC パス)。デフォルトはサーバーの作業ディレクトリです。name(str, optional):ファイル名。デフォルトはscreenshot.jpgです。
- 戻り値:
str-"success"または"failed: [error message]"。
セットアップと使い方
1. 前提条件
- Python 3.x: サーバーを実行するマシンに必要です。
- 依存関係:
uvを使ってインストールします。
必要なライブラリには、uv syncmcp[cli]>=1.4.1、pyautogui、Pillowが含まれます。
2. サーバーの実行
通常、このサーバーは設定に基づいて MCP ホストから起動されます。
3. 環境に関する考慮事項(特に WSL2)
重要なポイント: Windows の画面をキャプチャするには、この screenshot.py サーバーをWindows 上で直接実行する必要があります。
推奨する WSL2 ホスト → Windows サーバーの構成:
-
プロジェクトの配置場所: この
screenshot-serverプロジェクトフォルダーをWindows ファイルシステム上に配置します(例:C:\Users\YourUser\projects\screenshot-server)。 -
Windows の依存関係: プロジェクトフォルダー内で、Python、
uv、およびプロジェクトの依存関係(uv sync ...)をWindows 上に直接インストールします。 -
MCP ホストの設定(WSL 内): WSL 上で実行されている MCP ホストが、PowerShell を使用して Windows 上でサーバーを起動するように設定します。
mcp_settings.json(または同等のファイル)を更新します。{ "mcpServers": { "Screenshot-server": { "command": "powershell.exe", "args": [ "-Command", "Invoke-Command -ScriptBlock { cd '<YOUR_WINDOWS_PROJECT_PATH>'; & '<YOUR_WINDOWS_UV_PATH>' run screenshot.py }" ] } // ... other servers ... } }- パスを実際の Windows のパスに置き換えてください。
4. ワークフローの例(WSL 内の AI アシスタント)
- AI アシスタントが現在のワークスペースのパス(例:
/home/user/current_project)を特定します。 - AI アシスタントが
use_mcp_toolを使用してScreenshot-serverのsave_screenshot_to_host_workspaceを呼び出し、host_workspace_path="/home/user/current_project"と、必要に応じてnameを渡します。 "success"を受け取ります。- AI アシスタントは、スクリーンショットが
/home/user/current_project/workspace_screenshot.jpg(または指定した名前のファイル)に保存されたことを認識します。 - AI アシスタントが
use_mcp_toolを使用して、画像分析サーバー/ツール(同じく WSL 上で実行)を呼び出し、WSL のパス/home/user/current_project/workspace_screenshot.jpgを渡します。 - 画像分析サーバーがファイルを読み込み、処理を実行します。
ファイル構成
screenshot.py:MCP サーバーのコアスクリプトです。README.md:このドキュメントファイルです。pyproject.toml:uv用のプロジェクト定義と依存関係です。uv.lock:依存関係のロックファイルです。.gitignore:Git の除外設定です。.python-version:(オプション)Python のバージョン指定ファイルです。server.log:サーバーが生成するログファイルです。images/:take_screenshot_and_return_pathのデフォルトディレクトリです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。