mcpField
V
View Control MCP Server

View Control MCP Server

ローカル
github.com/nakashima-takeoその他085 週間前に更新

View Control MCP Server について

View Control MCP Server は、MCP クライアントからローカル PC を操作し、画面を取得するサーバーです。AI クライアントにマウス、キーボード、画面へのアクセスを提供する用途向けで、stdio で通信します。

主な機能

  1. 01マウス位置の取得、移動、クリック
  2. 02ドラッグ&ドロップ操作
  3. 03テキスト入力とキーの組み合わせ操作
  4. 04画面を Base64 画像としてキャプチャ

活用シーン

  1. 01MCP クライアントからローカルのマウスとキーボードを操作
  2. 02AI クライアントに画面キャプチャを取得させる

MCP 対応

JSON-RPC 2.0 に準拠し、stdio 経由でローカルのマウス、キーボード、画面キャプチャのツールを提供します。Claude Desktop や Cursor などのクライアントに対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"view-control": {
"command": "npx",
"args": [
"-y",
"view-control-mcp-server"
]
}
}
}
起動コマンドnpx -y view-control-mcp-server

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

パッケージ
npmview-control-mcp-server

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

プロジェクトの README より

View Control MCP Server

ローカルPCの操作、マウスクリック、画面キャプチャなどを行うModel Context Protocol (MCP)サーバー。

Model Context Protocol (MCP)とは

Model Context Protocol (MCP)は、AI言語モデルアプリケーション(クライアント)と外部サービス(サーバー)間の標準化された通信プロトコルです。MCPを使用することで、AIアシスタントがローカルPCの操作やデータ取得などの機能を利用できるようになります。

このサーバーは、JSON-RPC 2.0に準拠したMCPプロトコルを実装しており、Claude DesktopやCursorなどのMCPクライアントと連携できます。サポートしているMCPプロトコルバージョンは2024-11-05です。

機能

  • マウス操作

    • マウス位置の取得
    • マウスの移動
    • マウスクリック(左/右/中ボタン)
    • ドラッグ&ドロップ
  • キーボード操作

    • テキスト入力
    • キー押下
    • 修飾キー(Command, Alt, Control, Shift)との組み合わせ
  • 画面キャプチャ

    • 画面全体のキャプチャ
    • Base64エンコードされた画像データの取得
  • 通信方式

    • JSON-RPC 2.0準拠のMCPプロトコル
    • Stdioトランスポート(標準入出力)

インストール

npm install view-control-mcp-server

使用方法

サーバーの起動
コマンドラインから起動
# Stdioモードで起動(Cursor等のMCPクライアントと直接連携する場合)
npx view-control-mcp-server
MCPプロトコルでの通信

MCPサーバーはJSON-RPC 2.0形式のリクエストを標準入出力を通じて受け付けます。

リクエスト形式
{
  "jsonrpc": "2.0",
  "id": "任意のID",
  "method": "メソッド名",
  "params": {/* パラメータ */}
}
成功レスポンス形式
{
  "jsonrpc": "2.0",
  "id": "リクエストと同じID",
  "result": {/* 結果 */}
}
エラーレスポンス形式
{
  "jsonrpc": "2.0",
  "id": "リクエストと同じID",
  "error": {
    "code": エラーコード,
    "message": "エラーメッセージ",
    "data": { /* 追加情報 */ }
  }
}
通知形式(レスポンスなし)
{
  "jsonrpc": "2.0",
  "method": "通知メソッド名",
  "params": {/* パラメータ */}
}
利用可能なMCPメソッド
基本メソッド
  • initialize: サーバーの初期化

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "initialize",
      "params": {
        "protocolVersion": "2024-11-05",
        "capabilities": {},
        "clientInfo": {
          "name": "MCP Client",
          "version": "1.0.0"
        }
      }
    }
    
  • ping: サーバーの生存確認

    { "jsonrpc": "2.0", "id": 2, "method": "ping" }
    
  • listOfferings: サーバーが提供する機能一覧の取得

    { "jsonrpc": "2.0", "id": 3, "method": "listOfferings" }
    
ツール関連
  • tools/list: 利用可能なツール一覧の取得

    { "jsonrpc": "2.0", "id": 4, "method": "tools/list" }
    

    レスポンス:

    {
      "jsonrpc": "2.0",
      "id": 4,
      "result": {
        "tools": [/* ツール一覧 */],
        "nextCursor": "" // ページネーションを使用しない場合は空文字列
      }
    }
    
  • tools/call: ツールの呼び出し

    {
      "jsonrpc": "2.0",
      "id": 5,
      "method": "tools/call",
      "params": {
        "name": "ツール名",
        "arguments": {/* 引数 */}
      }
    }
    

    レスポンス:

    {
      "jsonrpc": "2.0",
      "id": 5,
      "result": {
        "content": [
          {
            "type": "text",
            "text": "結果のJSON文字列"
          }
        ],
        "isError": false
      }
    }
    
マウス関連
  • mouse.getPosition: マウス位置取得

    { "jsonrpc": "2.0", "id": 6, "method": "mouse.getPosition" }
    
  • mouse.move: マウス移動

    {
      "jsonrpc": "2.0",
      "id": 7,
      "method": "mouse.move",
      "params": { "x": 100, "y": 100 }
    }
    
  • mouse.click: マウスクリック

    {
      "jsonrpc": "2.0",
      "id": 8,
      "method": "mouse.click",
      "params": { "button": "left" }
    }
    
キーボード関連
  • keyboard.type: テキスト入力

    {
      "jsonrpc": "2.0",
      "id": 9,
      "method": "keyboard.type",
      "params": { "text": "Hello, World!" }
    }
    
  • keyboard.press: キー押下

    {
      "jsonrpc": "2.0",
      "id": 10,
      "method": "keyboard.press",
      "params": { "key": "a", "modifiers": ["command"] }
    }
    
スクリーン関連
  • screen.capture: スクリーンキャプチャ
    { "jsonrpc": "2.0", "id": 11, "method": "screen.capture" }
    
サーバー情報
  • server.info: サーバー情報取得
    { "jsonrpc": "2.0", "id": 12, "method": "server.info" }
    
通知
  • notifications/initialized: クライアントの初期化完了通知
    {
      "jsonrpc": "2.0",
      "method": "notifications/initialized"
    }
    
    この通知に対してはレスポンスを返しません。

MCPクライアントとの連携

このサーバーは、Claude DesktopやCursorなどのMCPクライアントと連携できます。

Cursorとの連携
  1. Cursorを起動し、設定を開きます
  2. MCP設定セクションで「Add Server」をクリックします
  3. 以下のように設定します:
    • Name: View Control MCP Server
    • Transport: stdio
    • Command: npx view-control-mcp-server
    • Args: (空欄でOK - 自動的にStdioモードで起動します)
  4. 「Add」をクリックして保存します
  5. Cursorの拡張機能として利用できるようになります
Claude Desktopとの連携
  1. Claude Desktopを起動し、設定を開きます
  2. MCP設定セクションで「Add Server」をクリックします
  3. 以下のように設定します:
    • Name: View Control MCP Server
    • Transport: stdio
    • Command: npx view-control-mcp-server
    • Args: (空欄でOK - 自動的にStdioモードで起動します)
  4. 「Add」をクリックして保存します
  5. Claudeの拡張機能として利用できるようになります

開発

# リポジトリのクローン
git clone https://github.com/yourusername/view-control-mcp-server.git
cd view-control-mcp-server

# 依存関係のインストール
npm install

# 開発サーバーの起動
npm run dev

# テストの実行
npm test

# ビルド
npm run build

デバッグ

MCPサーバーの動作をデバッグするには、MCPインスペクターを使用することをお勧めします。MCPインスペクターを使用すると、サーバーとクライアント間のメッセージ交換を可視化できます。

# MCPインスペクターのインストール
npm install -g @anthropic/mcp-inspector

# MCPインスペクターの起動
mcp-inspector

ブラウザでhttp://localhost:5173を開き、MCPインスペクターのUIを使用してサーバーとの通信をテストできます。

注意事項

  • このサーバーはローカルPCを操作するため、セキュリティに注意してください。
  • 信頼できるネットワーク内でのみ使用することをお勧めします。
  • 画面キャプチャ機能は、プライバシーに配慮して使用してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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