Skip to main content
Glama
martinbowling

Clipboard to Supabase MCP Helper

Буфер обмена для Supabase MCP Helper

Локальный агент, который отслеживает системный буфер обмена, загружает все скопированные изображения в хранилище Supabase, а затем записывает общедоступный (или подписанный) URL-адрес обратно в буфер обмена.

Функции

  • Хостинг изображений с нулевым кликом: скопируйте изображение и мгновенно получите URL-адрес

  • Низкая задержка: менее 800 мс от копирования до URL

  • Кроссплатформенность: работает на macOS, Windows и Linux

  • Интеграция MCP: предоставление возможности загрузки изображения в буфер обмена в качестве конечной точки MCP

  • Автозапуск: настроить запуск при запуске системы

  • Эффективное обнаружение: дедупликация на основе хэширования с низкой загрузкой ЦП

Related MCP server: ClipMCP

Предпосылки

  • Node.js 18+

  • Учетная запись Supabase с включенным хранилищем

  • Зависимости, специфичные для платформы:

    • macOS: pngpaste ( brew install pngpaste )

    • Windows/Linux: доступ к буферу обмена собственной ОС

Установка

  1. Клонируйте репозиторий:

git clone https://github.com/martinbowling/clipboard-to-supabase-mcp-helper.git
cd clipboard-to-supabase-mcp-helper
  1. Установить зависимости:

npm install
  1. Создайте файл .env на основе .env.example :

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-адрес обратно в буфер обмена, готовый к вставке.

Запуск службы

Помощник буфера обмена может работать в двух режимах:

Режим Stdio (по умолчанию)

npm start

Это запускает сервер MCP с StdioServerTransport, что идеально подходит для использования в командной строке.

HTTP-режим

npm run start:http

Он запускает HTTP-сервер Express на порту 3333 (настраивается) с соответствующей конечной точкой REST API.

Интеграция МКП

Помощник предоставляет следующие конечные точки 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. Обнаружение изменений : опрашивает буфер обмена каждые 300 мс и вычисляет хэш SHA-1 данных изображения.

  2. Дедупликация : обрабатывает только новые или измененные изображения на основе сравнения хэшей.

  3. Адаптация платформы : использует специфичные для платформы методы для захвата изображений буфера обмена.

  4. Интеграция с Supabase : загружает изображения в ваш контейнер Supabase с уникальными UUID.

  5. Конечная точка MCP : предоставляет функциональность агентам ИИ через протокол контекста модели

  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