Skip to main content
Glama
ChituQAQ

DeskSense

by ChituQAQ

DeskSense

DeskSenseは、AIアシスタントに現在のPC状態を認識させる軽量な読み取り専用Windows MCPサーバーです。

ローカルサーバー上でMCP Streamable HTTPを公開し、ベアラートークンで保護します。CORSはブラウザベースのクライアント向けに設定可能です。ノードが制御されたパブリックアクセスを必要とする場合、Cloudflare Tunnelはオプションです。

DeskSenseとは

監視したい各Windows PCで1つの独立したDeskSense Nodeを実行します。ノードはデスクトップとシステムの状態を読み取ります。コマンドを実行したり、コンピュータを変更したりすることはありません。

Related MCP server: procmon-mcp

機能

  • Windows専用、読み取り専用のPCセンシング

  • /mcp でのMCP Streamable HTTPエンドポイント

  • ベアラートークン認証

  • 設定可能なCORSオリジン

  • オプションのCloudflare NamedまたはQuick Tunnelアクセス

  • タスクスケジューラによる対話型AtLogOn自動起動

  • wscript.exe による隠しサーバー起動

  • /healthz でのローカルヘルスエンドポイント

MCPツール

サーバーは、以下の7つの読み取り専用ツールのみを提供します。

  • pc_get_context

  • pc_get_focus

  • pc_list_open_apps

  • pc_get_idle_status

  • pc_get_pc_status

  • pc_get_top_processes

  • pc_get_recent_focus

アーキテクチャ

AI assistant / MCP client
          |
          | HTTPS + Bearer Token (optional public tunnel)
          v
Cloudflare Tunnel (optional)
          |
          v
127.0.0.1:8765  ->  python -m desksense.server
          |
          +--> Windows APIs, psutil, and local focus history

各コンピュータには、独自のトークン、設定、ランタイムデータ、およびオプションのトンネルがあります。SullyOSはテスト済みのクライアント例であり、必須または排他的なクライアントではありません。

要件

  • Windows 10以降

  • Python 3.11以降

  • cloudflared(トンネルを使用する場合のみ)

  • 互換性のあるMCPクライアント

クイックスタート

PowerShellでリポジトリルートから:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
$env:PYTHONPATH = "src"
.\.venv\Scripts\python.exe -m desksense.server

トークン生成、CORS、トンネル設定、自動起動タスクを含む完全なノードインストールの場合:

.\scripts\install.ps1 `
  -Hostname desksense.example.com `
  -TunnelName desksense

ブラウザクライアントが追加のオリジンを必要とする場合は、-AllowedOrigin https://example-client.app を使用します。インストーラーは、トークンを表示せずにMCP URLとトークンファイルのパスを出力します。

Cloudflare Tunnel

Cloudflareはオプションです。一時的なテストにはQuick Tunnelを使用します:

.\scripts\start-quick-tunnel.ps1

安定したホスト名の場合は、cloudflared を認証し、Named Tunnelを作成または選択し、インストール後に start-named-tunnel.ps1 を使用します。トンネルを http://127.0.0.1:8765 に向け、意図したホスト名のみを公開します。

MCPクライアントの接続

クライアントを以下のように設定します:

  • MCP URL: https://desksense.example.com/mcp(ローカルの場合は http://127.0.0.1:8765/mcp)

  • 認証: Bearer <token>

トークンはローカルの .secrets\API_KEY.txt に保存されます。SullyOSはクライアント例として使用できます。Streamable HTTPとベアラー認証をサポートする任意のMCPクライアントが接続できます。

複数PC / ノード

Windows PCごとに1つのDeskSense Nodeをインストールします。各ノードに異なるホスト名、トンネル名、トークンを割り当て、クライアントで各MCPエンドポイントを個別に設定します。文書化された移行ワークフローを使用しない限り、ノードのランタイムデータベースや認証情報をコンピュータ間でコピーしないでください。

セキュリティとプライバシー

DeskSenseは読み取り専用ですが、その応答にはアプリケーション名、ウィンドウタイトル、プロセス情報、システムメトリクスが含まれる可能性があります。ベアラートークンを秘密に保ち、AllowedOrigin を信頼できるクライアントに制限し、パブリックアクセスは適切に設定されたトンネルの背後に配置してください。トークンはソースコードやログに書き込まれません。フォーカス履歴はローカルの data\pc_sense.db に保存されます。ログは logs\ の下に書き込まれます。

自動起動

インストーラーは、DeskSense MCP という名前の対話型AtLogOnタスクを登録します。これは wscript.exe を起動し、run-desksense-hidden.vbs を開始します。VBSスクリプトは、表示されるコンソールウィンドウなしで python.exe -m desksense.server を呼び出します。

.\scripts\install-autostart.ps1
.\scripts\status.ps1
.\scripts\uninstall-autostart.ps1

デスクトップセンシングにはユーザーのWindowsセッションが必要なため、対話型ログオンは意図的です。

トラブルシューティング

  • ローカルヘルスを確認:Invoke-WebRequest http://127.0.0.1:8765/healthz

  • ポート8765リスナーとローカルヘルスエンドポイントを確認:.\scripts\status.ps1

  • logs\ の下のファイルを確認(.secrets\ は決して共有しないでください)

  • チェックアウトから直接実行する場合は、PYTHONPATH=src を確認

  • クライアントが Authorization: Bearer <token> を送信し、/mcp を使用していることを確認

  • トンネルの問題については、cloudflared のログイン、ホスト名ルーティング、および1つのノードのみがNamed Tunnelを実行していることを確認

開発

.\.venv\Scripts\python.exe -m pytest -q

ソースは src/desksense の下にあり、テストは tests の下にあります。サーバーは、上記のように PYTHONPATH=src を使用してローカルで実行できます。

ライセンス

DeskSenseはMITライセンスの下でリリースされています。LICENSE を参照してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An open-source MCP server for Windows that provides traceable system operations (file, screenshot, clipboard, process, power management) to AI assistants via HTTP/SSE.
    13
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local, dependency-free MCP server that gives AI agents controlled access to the active Windows desktop, enabling automated interaction with applications through screenshots, clicks, typing, and window management.
    75 npm
    MIT