projector-mcp-server

mn1985/projector-mcp-server

3.2

If you are the rightful owner of projector-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Epson Projector MCP Server is designed to control Epson projectors using the Model Context Protocol (MCP) by wrapping the projector's Web API (ESC/VP21) and providing it as an MCP tool.

Epson Projector MCP Server

Epson製プロジェクターをMCP (Model Context Protocol) を通じて制御するためのサーバーです。 プロジェクターのWeb API (ESC/VP21) をラップし、MCPツールとして提供します。

機能

現在、以下の機能を提供します。

  • 電源ON
  • 電源OFF
  • 電源状態の確認

前提条件

  • Python 3.8以上
  • プロジェクターがネットワークに接続されており、IPアドレスが固定されていること。
  • プロジェクターのWebコントロール機能が有効になっており、Web APIが利用可能になっていること。
    • 設定方法の詳細は、お使いのプロジェクターの取扱説明書をご確認ください。
    • 一般的には、WebブラウザでプロジェクターのIPアドレスにアクセスし、設定メニューから「Web API」や「ESC/VP21」に関する項目を有効にします。

セットアップ方法

  1. リポジトリをクローンまたはダウンロード

    git clone <this-repository-url>
    cd projector-mcp-server
    
  2. Python仮想環境の作成と有効化

    Windows (PowerShell/コマンドプロンプト) の場合:

    # 仮想環境を作成
    py -m venv venv
    
    # 仮想環境を有効化
    .\venv\Scripts\activate
    
  3. 必要なライブラリのインストール

    pip install -r requirements.txt
    
  4. 環境変数の設定

    .env.example ファイルをコピーして .env という名前のファイルを作成します。この .env ファイルが、実際の動作で読み込まれる設定ファイルとなります。

    copy .env.example .env
    

    次に、作成した .env ファイルをテキストエディタで開き、ご自身のプロジェクターのIPアドレスと、Webコントロール機能で設定したパスワードに書き換えてください。

    # 例:
    PROJECTOR_IP=192.168.1.100
    PROJECTOR_PASSWORD=your_password_here
    

    パスワードはどこで設定するの?

    EpsonプロジェクターのWeb APIには、デフォルトのパスワードはありません。 パスワードは、プロジェクターのWebコントロール機能に初めてアクセスした際に、ユーザー自身で設定する必要があります。

    1. プロジェクター本体のメニューでIPアドレスを確認します。
    2. PCのWebブラウザでそのIPアドレス(例: http://192.168.1.100)にアクセスします。
    3. 初回アクセス時にパスワードの設定を求められます。ユーザー名は EPSONWEB で固定です。ここで設定したパスワードを、上記の PROJECTOR_PASSWORD に設定してください。
    4. もしパスワードを忘れた場合は、プロジェクター本体のメニューから「ネットワーク設定のリセット」を行うと、再設定できます。

サーバーの起動方法

以下のコマンドでMCPサーバーを起動します。

# 仮想環境が有効でない場合は有効化する
.\venv\Scripts\activate

# サーバーを起動
python main.py

サーバーが http://127.0.0.1:8000 で起動します。

クライアントからの利用方法

別のターミナル(PowerShell)を開き、mcp コマンドラインツールを使ってサーバーと対話できます。

1. mcp コマンドラインツールのインストール

サーバーと同じ仮想環境を有効化した後、以下のコマンドでインストールします。

.\venv\Scripts\activate
pip install "mcp[cli]@git+https://github.com/modelcontextprotocol/python-sdk.git"

2. コマンドの実行例

# 電源状態の確認
mcp call projector /power

# 電源をONにする
mcp call projector /power/on

# 電源をOFFにする
mcp call projector /power/off

Visual Studio Codeでの利用

このプロジェクトはVS Codeでの利用に最適化されています。

  1. VS Codeでフォルダを開く: VS Codeで projector-mcp-server フォルダを開きます。

  2. サーバーの起動 (簡単!): Ctrl + Shift + B を押してください。 VS Codeのタスクが実行され、自動的にターミナルが開き、仮想環境が有効化され、MCPサーバーが起動します。

  3. クライアント操作: サーバーが起動したら、VS Codeのターミナルで新しいタブ(+アイコン)を開き、そこで mcp コマンドを実行できます。

    # ターミナルで仮想環境を有効化
    .\venv\Scripts\activate
    
    # mcpコマンドを実行
    mcp call projector /power
    

(オプション)REST Clientの利用

mcpコマンドの代わりに、GUIでAPIをテストすることもできます。

  1. VS Codeで REST Client 拡張機能をインストールします。

  2. プロジェクトルートにある requests.http ファイルをVS Codeで開きます。

    ### プロジェクターの電源状態を確認
    GET http://127.0.0.1:8000/tools/projector/power
    
    ### プロジェクターをONにする
    POST http://127.0.0.1:8000/tools/projector/power/on
    
    ### プロジェクターをOFFにする
    POST http://127.0.0.1:8000/tools/projector/power/off
    
  3. 各リクエストの上にある Send Request をクリックすると、リクエストが送信され、結果が表示されます。

機能の拡張

機能を追加するには、主に以下の2つのファイルを編集します。

  1. projector_controller.py: EpsonプロジェクターのWeb API (ESC/VP21) へリクエストを送信するロジックを追記します。プロジェクターのAPIドキュメントを参考に、送信したいコマンドを追加してください。
  2. main.py: 新しい機能を呼び出すためのMCPツール (@tool.get, @tool.postなど) をProjectorToolクラス内に追加します。