Skip to main content
Glama
martinbowling

Clipboard to Supabase MCP Helper

クリップボードから Supabase MCP ヘルパーへ

システム クリップボードを監視し、コピーされたイメージを Supabase Storage にアップロードし、パブリック (または署名済み) URL をクリップボードに書き戻すローカル エージェント。

特徴

  • ゼロクリック画像ホスティング: 画像をコピーして、すぐに URL を取得

  • 低レイテンシ: コピーから URL まで 800 ミリ秒未満

  • クロスプラットフォーム: macOS、Windows、Linuxで動作

  • MCP 統合: クリップボード画像のアップロードを MCP エンドポイントとして公開します

  • 自動起動: システム起動時に実行するように設定する

  • 効率的な検出: CPU 使用率が低いハッシュベースの重複排除

Related MCP server: ClipMCP

前提条件

  • Node.js 18歳以上

  • ストレージが有効になっている Supabase アカウント

  • プラットフォーム固有の依存関係:

    • macOS: pngpaste ( brew install pngpaste )

    • Windows/Linux: ネイティブ OS クリップボード アクセス

インストール

  1. リポジトリをクローンします。

git clone https://github.com/martinbowling/clipboard-to-supabase-mcp-helper.git
cd clipboard-to-supabase-mcp-helper
  1. 依存関係をインストールします:

npm install
  1. .env.exampleに基づいて.envファイルを作成します。

SUPABASE_URL=https://<project>.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
BUCKET=media
MCP_PORT=3333
  1. Supabase 接続をテストします。

npm run test:supabase
  1. プロジェクトをビルドします。

npm run build
  1. システム サービスとしてインストールします。

macOSの場合:

npm run install:macos

Linuxの場合:

npm run install:linux

Windowsの場合:

npm run install:windows

使用法

インストールして実行すると、ヘルパーは次のことを行います。

  1. クリップボードの画像の変更を監視します(300 ミリ秒ごとにポーリング)

  2. コピーした画像をSupabaseバケットにアップロードします。

  3. 公開URLをクリップボードに戻し、貼り付けられるようにします

サービスの実行

クリップボード ヘルパーは、次の 2 つのモードで実行できます。

Stdio モード (デフォルト)

npm start

これは、StdioServerTransport を使用して MCP サーバーを実行し、コマンドラインでの使用に最適です。

HTTPモード

npm run start:http

これにより、適切な REST API エンドポイントを使用して、ポート 3333 (構成可能) で Express HTTP サーバーが実行されます。

MCP統合

ヘルパーは次の MCP エンドポイントを公開します。

クリップボード画像をアップロード

HTTP サーバー モードの場合:

POST http://localhost:3333/mcp

リクエスト本文:

{
  "id": "1",
  "jsonrpc": "2.0",
  "method": "tool",
  "params": {
    "name": "upload_clipboard_image",
    "input": {}
  }
}

応答:

{
  "id": "1",
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "https://your-project.supabase.co/storage/v1/object/public/media/clips/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.png"
      }
    ]
  }
}

古いファイルのクリーンアップ

ヘルパーは、古いファイルのクリーンアップを手動でトリガーするための MCP エンドポイントも提供します。

リクエスト本文:

{
  "id": "1",
  "jsonrpc": "2.0",
  "method": "tool",
  "params": {
    "name": "cleanup_old_files",
    "input": {
      "days": 30
    }
  }
}

応答:

{
  "id": "1",
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Cleanup completed: Deleted 5 files older than 30 days. Failed: 0."
      }
    ]
  }
}

daysパラメータはオプションです。指定されていない場合は、 RETENTION_DAYS環境変数の値が使用されます。

仕組み

  1. 変更検出: 300msごとにクリップボードをポーリングし、画像データのSHA-1ハッシュを計算します。

  2. 重複排除: ハッシュ比較に基づいて新しいイメージまたは変更されたイメージのみを処理します

  3. プラットフォーム適応: プラットフォーム固有の方法を使用してクリップボード画像をキャプチャします

  4. Supabase 統合: 一意の UUID を持つ画像を Supabase バケットにアップロードします

  5. MCPエンドポイント:モデルコンテキストプロトコルを介してAIエージェントに機能を公開します

  6. 自動クリーンアップ: 設定された保存期間(デフォルト: 30 日)よりも古いイメージを定期的に削除します。

プラットフォーム固有の注意事項

macOS

  • pngpasteが必要です: brew install pngpasteでインストールしてください

  • 自動起動にはLaunchAgentsを使用する

ウィンドウズ

  • 画像キャプチャには PowerShell の System.Windows.Forms.Clipboard を使用します

  • 自動起動にWindowsレジストリを使用する

リナックス

  • クリップボードへのアクセスには xclip (X11) または wl-paste (Wayland) を使用します

  • 自動起動にはsystemdを使用する

発達

# Run with live reload (stdio mode)
npm run dev

# Run with live reload (HTTP mode)
npm run dev:http

# Build for production
npm run build

# Run stdio version
npm start

# Run HTTP version
npm run start:http

ライセンス

マサチューセッツ工科大学

Available Tools

2 tools
cleanup_old_filesD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_clipboard_imageD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • Changedcleanup_old_files1 field changed
      • addedInput schema / properties
        Added value: +{}
    • Changedupload_clipboard_image1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 2 tool updates
    • First observedcleanup_old_files
    • First observedupload_clipboard_image

TDQS

D1.8/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: cleanup_old_files handles file management, while upload_clipboard_image handles image uploads. There is no overlap in functionality, making them easy to distinguish.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with snake_case naming: cleanup_old_files and upload_clipboard_image. The naming is predictable and uniform across the set.

Tool Count2/5

With only 2 tools, the server feels thin for a 'Clipboard to Supabase MCP Helper' that might imply broader clipboard or Supabase integration. This minimal set likely leaves gaps in functionality.

Completeness2/5

Inferred domain includes clipboard operations and Supabase integration, but the tools only cover image uploads and file cleanup. Missing obvious functions like handling text/data from clipboard or other Supabase CRUD operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers