Skip to main content
Glama
list91
by list91

MCP CopyQ Server

MCP-сервер для интеграции CopyQ (менеджер буфера обмена) с LLM-агентами.

Концепция

Структура данных в CopyQ

mcp/
├── info/        # 🔒 только элементы (без подвкладок)
├── заметки/     # 🔒 только элементы (без подвкладок)
└── workspace/   # ✅ элементы + подвкладки

Элемент (Item)

Каждый элемент содержит:

  • text — основной текст

  • tags — метки (массив строк)

  • note — заметка к тексту


Related MCP server: mcp-clipboardify

Инструменты (3 шт.)

1. mcp_read

Универсальное чтение данных.

Параметры

Параметр

Тип

Default

Описание

mode

"tree" / "list" / "item" / "search"

обязательный

tab

string

""

Путь: "info", "workspace/proj1"

index

number

Для mode=item

query

string

Для mode=search (regex)

search_in

"text" / "note" / "tags" / "all"

"all"

Где искать

max_depth

number

2

Для tree — макс. глубина

max_items

number

20

Лимит элементов

skip

number

0

Пагинация — пропустить N

include_text

bool

true

Включить текст/превью

include_tags

bool

true

Включить метки

include_note

bool

false

Включить заметку

Режимы (mode)

tree — структура вкладок с метаданными

mcp/info [5]
  0: "Инструкция по API..." [api,docs]
  1: "Конфиг сервера..." [config]
mcp/workspace [3]
  └─ mcp/workspace/проект1 [12]

list — элементы конкретной вкладки

mode:list|tab:info|total:47|showing:0-19
0|"Инструкция по API..."|[api,docs]|+note
1|"Конфиг сервера..."|[config]|

item — один элемент полностью

search — поиск по содержимому

Возможные ошибки

Код

Описание

TAB_NOT_FOUND

Вкладка не существует

INDEX_OUT_OF_BOUNDS

Индекс за пределами

INVALID_MODE

Неизвестный mode

Под капотом (CopyQ CLI)

# tree
copyq tab | grep "^mcp/"
copyq tab "mcp/..." count
copyq tab "mcp/..." read 0 | head -c 50

# list
copyq tab "mcp/${tab}" count
copyq tab "mcp/${tab}" read $i
copyq tab "mcp/${tab}" read "application/x-copyq-tags" $i

# item
copyq tab "mcp/${tab}" read ${index}
copyq tab "mcp/${tab}" read "application/x-copyq-tags" ${index}
copyq tab "mcp/${tab}" read "application/x-copyq-item-notes" ${index}

# search
copyq eval "/* JS: grep по tabs */"

2. mcp_write

Универсальная запись данных.

Параметры

Параметр

Тип

Default

Описание

mode

string

обязательный (см. ниже)

tab

string

Путь вкладки

index

number

Для item-операций

text

string

Текст (для add/update)

tags

string[]

Метки

note

string

Заметка

field

"text" / "note" / "tags"

Для update — что менять

edit_mode

"replace" / "append" / "prepend" / "substitute"

"replace"

Как менять

match

string

Для substitute — что заменить

to_tab

string

Для move — куда переместить

path

string

Для tab_create/tab_delete

intent

"execute" / "preview"

"execute"

Выполнить или показать эффект

Режимы (mode)

mode

Уровень

Описание

Обязательные параметры

add

item

Добавить элемент в начало

tab, text

update

item

Изменить элемент

tab, index, field, (text/tags/note)

delete

item

Удалить элемент

tab, index

move

item

Переместить в другую вкладку

tab, index, to_tab

tab_create

collection

Создать подвкладку

path (только workspace/*)

tab_delete

collection

Удалить подвкладку

path (только workspace/*)

edit_mode для update

field

edit_mode

Действие

text/note

replace

Полная замена

text/note

append

Дописать в конец

text/note

prepend

Дописать в начало

text/note

substitute

Заменить matchtext/note

tags

replace

Заменить все метки

tags

append

Добавить метки (сохранив старые)

tags

remove

Удалить указанные метки

intent: preview

При intent="preview" — не выполняет действие, а возвращает что произойдёт:

action: delete
target: mcp/info[3]
will_remove: "Текст который удалится..." | [метки] | +note

Возможные ошибки

Код

Описание

TAB_NOT_FOUND

Вкладка не существует

INDEX_OUT_OF_BOUNDS

Индекс за пределами

PERMISSION_DENIED

tab_create/tab_delete вне workspace

INVALID_MODE

Неизвестный mode

MISSING_PARAM

Не хватает обязательного параметра

MATCH_NOT_FOUND

substitute: match не найден в тексте

Формат ответа

ok|mode:add|tab:info|index:0|text_len:156|tags:2

Под капотом (CopyQ CLI)

# add
copyq tab "mcp/${tab}" write 0 \
  "text/plain" "${text}" \
  "application/x-copyq-tags" "${tags}" \
  "application/x-copyq-item-notes" "${note}"

# update (substitute)
OLD=$(copyq tab "mcp/${tab}" read ${index})
NEW=$(echo "$OLD" | sed "s/${match}/${value}/g")
TAGS=$(copyq tab "mcp/${tab}" read "application/x-copyq-tags" ${index})
NOTE=$(copyq tab "mcp/${tab}" read "application/x-copyq-item-notes" ${index})
copyq tab "mcp/${tab}" write ${index} \
  "text/plain" "$NEW" \
  "application/x-copyq-tags" "$TAGS" \
  "application/x-copyq-item-notes" "$NOTE"

# delete
copyq tab "mcp/${tab}" remove ${index}

# move
# read all → write to to_tab → remove from tab

# tab_create
copyq tab "mcp/${path}"

# tab_delete
copyq removeTab "mcp/${path}"

3. mcp_validate

Проверить корректность вызова без выполнения.

Параметры

Параметр

Тип

Описание

tool

"read" / "write"

Какой инструмент проверить

params

object

Параметры вызова

Формат ответа

Успех:

valid: true | warnings: [] | estimated_tokens: 340

Ошибка:

valid: false | errors: ["TAB_NOT_FOUND: workspace/xxx"]

Права доступа

Операция

info

заметки

workspace

read (все режимы)

add

update

delete

move

tab_create

tab_delete


Установка

# Требования
# - Python 3.11+
# - CopyQ установлен и запущен
# - Путь к CopyQ: C:\Program Files\CopyQ\copyq.exe

# Установка
cd C:\sts\projects\mcp-copyq
uv venv
uv pip install -e .

# Запуск
uv run mcp-copyq

Конфигурация Claude Desktop

{
  "mcpServers": {
    "copyq": {
      "command": "uv",
      "args": ["--directory", "C:\\sts\\projects\\mcp-copyq", "run", "mcp-copyq"]
    }
  }
}

Примеры использования

Получить структуру

mcp_read(mode="tree", max_depth=2, max_items=5)

Список элементов вкладки

mcp_read(mode="list", tab="info", max_items=10, include_note=true)

Прочитать элемент

mcp_read(mode="item", tab="info", index=0)

Поиск

mcp_read(mode="search", query="API", search_in="all", max_items=10)

Добавить элемент

mcp_write(mode="add", tab="info", text="Новая запись", tags=["important"])

Изменить текст (дописать в конец)

mcp_write(mode="update", tab="info", index=0, field="text", edit_mode="append", text="\n\nДополнение")

Заменить фрагмент

mcp_write(mode="update", tab="info", index=0, field="text", edit_mode="substitute", match="старое", text="новое")

Добавить метку (сохранив существующие)

mcp_write(mode="update", tab="info", index=0, field="tags", edit_mode="append", tags=["urgent"])

Удалить с превью

mcp_write(mode="delete", tab="info", index=0, intent="preview")
mcp_write(mode="delete", tab="info", index=0, intent="execute")

Создать подвкладку

mcp_write(mode="tab_create", path="workspace/новый_проект")

Переместить элемент

mcp_write(mode="move", tab="info", index=0, to_tab="workspace/архив")

Принципы дизайна

  1. Минимум инструментов — 3 вместо 10+

  2. Stateless — каждый вызов независим

  3. Компактные ответы — pipe-separated, без лишних полей

  4. Пагинация — skip/max_items для больших данных

  5. Явные параметрыinclude_text вместо fields: "minimal"

  6. Preview mode — intent="preview" для опасных операций

  7. Чёткие ошибки — коды + описания


Структура проекта

mcp-copyq/
├── README.md
├── pyproject.toml
├── src/
│   └── mcp_copyq/
│       ├── __init__.py
│       ├── server.py          # MCP server
│       ├── copyq_client.py    # CopyQ CLI wrapper
│       ├── tools/
│       │   ├── __init__.py
│       │   ├── read.py        # mcp_read
│       │   ├── write.py       # mcp_write
│       │   └── validate.py    # mcp_validate
│       ├── models.py          # Pydantic models
│       └── errors.py          # Error codes
└── tests/
    ├── __init__.py
    ├── test_read.py
    ├── test_write.py
    ├── test_validate.py
    └── test_integration.py

Лицензия

MIT

Available Tools

3 tools
mcp_readA

Read from CopyQ clipboard manager.

MCP tabs (full read/write access):

  • mcp/info - general information storage

  • mcp/заметки - notes storage

  • mcp/workspace - projects (supports subtabs like workspace/myproject)

External tabs (READ-ONLY access with scope="all" or scope="external"):

  • All other CopyQ tabs like "&clipboard", personal tabs, etc.

  • Use scope="all" to see all tabs, scope="external" for non-mcp only

Modes:

  • tree: Get tab structure with previews. Use FIRST to see available tabs.

  • list: Get items from tab with pagination

  • item: Get single item with full content (text, tags, note)

  • search: Search by regex across tabs

Parameters:

  • mode (required): "tree" | "list" | "item" | "search"

  • tab: For mcp tabs use relative path "info", "workspace/proj1". For external use full name "&clipboard"

  • scope: "mcp" (default) | "all" | "external" - controls which tabs are accessible

  • index: Item index (for mode=item)

  • query: Search regex (for mode=search)

Examples:

  • tree of mcp tabs: mode="tree"

  • tree of ALL tabs: mode="tree", scope="all"

  • read external tab: mode="list", tab="&clipboard", scope="external"

  • search everywhere: mode="search", query="pattern", scope="all"

Errors: TAB_NOT_FOUND, INDEX_OUT_OF_BOUNDS, INVALID_MODE

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesOperation mode
tabNoTab path: 'info', 'workspace/proj1' or full external name '&clipboard'
scopeNoTab scope: mcp (default, read/write), all (read external), external (only non-mcp, read-only)mcp
indexNoItem index (for mode=item)
queryNoSearch regex (for mode=search)
search_inNoall
max_depthNo
max_itemsNo
skipNo
include_textNo
include_tagsNo
include_noteNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes access permissions (read/write for MCP tabs, read-only for external tabs), error conditions (TAB_NOT_FOUND, INDEX_OUT_OF_BOUNDS, INVALID_MODE), and operational modes. However, it doesn't mention rate limits, performance characteristics, or authentication requirements, leaving some behavioral aspects uncovered.

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

Conciseness4/5

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

The description is well-structured with clear sections (MCP tabs, External tabs, Modes, Parameters, Examples, Errors) and front-loaded essential information. While comprehensive, it could be slightly more concise by integrating some parameter details more tightly, but overall it's efficient with minimal wasted text.

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

Completeness4/5

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

Given the complexity (12 parameters, multiple modes, access rules) and lack of annotations/output schema, the description is largely complete, covering purpose, usage, parameters, and errors. However, it doesn't detail the return format or pagination behavior for list mode, and some parameters lack semantic explanation, leaving minor gaps for a tool of this complexity.

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

Parameters4/5

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

With only 42% schema description coverage, the description compensates well by explaining the semantics of key parameters like mode, tab, scope, index, and query, including examples and usage context. It adds significant value beyond the schema, though it doesn't cover all 12 parameters (e.g., search_in, max_depth, include_text are mentioned only in schema).

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

Purpose5/5

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

The description clearly states the tool reads from the CopyQ clipboard manager, specifying the verb 'read' and resource 'CopyQ clipboard manager'. It distinguishes from siblings by focusing on read operations (vs. mcp_write for writing and mcp_validate for validation), making the purpose specific and differentiated.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool, including detailed access rules for MCP vs. external tabs, scope options, and mode-specific use cases. It distinguishes from alternatives by specifying read-only access for external tabs and directing users to use specific modes for different tasks, with clear examples for each scenario.

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

mcp_validateA

Validate parameters for mcp_read or mcp_write without executing.

Use to check if a call will succeed before making it.

Parameters:

  • tool (required): "read" | "write"

  • params (required): Parameters object to validate

Returns:

  • valid: true/false

  • errors: List of error codes and messages

  • warnings: List of warnings

  • estimated_tokens: Estimated response token count

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesTool to validate
paramsYesParameters to validate

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it validates parameters without executing, checks for success, and returns validation results (valid/errors/warnings/estimated_tokens). This covers the core behavior well, though it could mention performance or rate limits for completeness.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by clear sections for parameters and returns. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.

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

Completeness4/5

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

Given the tool's complexity (validation without execution), no annotations, and no output schema, the description does a good job by explaining the purpose, usage, parameters, and return values. It could be more complete by detailing error handling or validation rules, but it covers the essentials adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema by listing parameters and their types, but doesn't provide additional syntax or format details. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific purpose: 'Validate parameters for mcp_read or mcp_write without executing.' It distinguishes this tool from its siblings (mcp_read and mcp_write) by emphasizing validation without execution, which is a clear differentiation.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance: 'Use to check if a call will succeed before making it.' This tells the agent when to use this tool (before executing mcp_read or mcp_write) and implies an alternative (using the actual tools directly), making it clear in context.

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

mcp_writeA

Write to CopyQ clipboard manager.

IMPORTANT: All data stored under "mcp/" prefix. When you use tab="info", actual CopyQ path is "mcp/info".

Available tabs:

  • info - general storage (use tab="info")

  • заметки - notes (use tab="заметки")

  • workspace - projects, supports subtabs (use tab="workspace" or "workspace/myproject")

Modes:

  • add: Add item to tab. Params: tab, text, tags (optional), note (optional)

  • update: Update item. Params: tab, index, field, text/tags/note

  • delete: Delete item. Params: tab, index

  • move: Move item. Params: tab, index, to_tab

  • tab_create: Create subtab in workspace only. Params: path (e.g. "workspace/newproject")

  • tab_delete: Delete subtab. Params: path

Response shows full_path (e.g. "mcp/info") confirming where data was written.

Errors: TAB_NOT_FOUND, INDEX_OUT_OF_BOUNDS, PERMISSION_DENIED, MISSING_PARAM

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesOperation mode
tabNoTab path
indexNoItem index
textNoText content
tagsNoTags list
noteNoNote content
fieldNoField to update
edit_modeNoreplace
matchNoString to match (for substitute)
to_tabNoDestination tab (for move)
pathNoTab path (for tab_create/tab_delete)
intentNoexecute

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: data storage location ('mcp/' prefix), available tabs with usage examples, operation modes with parameter requirements, response format ('full_path'), and specific error conditions. It provides comprehensive operational context beyond basic functionality.

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

Conciseness4/5

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

The description is well-structured with clear sections (IMPORTANT note, Available tabs, Modes, Response, Errors) and front-loads critical information. Most sentences earn their place by providing essential operational details, though some redundancy exists (e.g., repeating 'use tab=' in tab descriptions).

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

Completeness4/5

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

For a complex tool with 12 parameters, no annotations, and no output schema, the description provides substantial context: operation modes, tab system, parameter requirements, response format, and error conditions. It covers most aspects needed for effective use, though additional details about authentication or rate limits could further enhance completeness.

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

Parameters4/5

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

With 83% schema description coverage, the baseline is 3, but the description adds significant value by explaining parameter usage in context: it maps modes to their required parameters (e.g., 'add: Params: tab, text, tags (optional), note (optional)'), clarifies tab usage with examples, and explains path parameter usage for workspace operations. This provides practical guidance beyond schema definitions.

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

Purpose5/5

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

The description starts with a clear verb ('Write to') and resource ('CopyQ clipboard manager'), specifying it's for writing operations. It distinguishes from sibling tools mcp_read (reading) and mcp_validate (validation) by focusing on write operations, making the purpose specific and differentiated.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (writing to CopyQ with data under 'mcp/' prefix) and explains tab usage scenarios. However, it doesn't explicitly state when NOT to use it or directly compare to alternatives like mcp_read, though the focus on writing implies usage for write operations rather than reading.

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

TDQS

A4.5/5.0
Disambiguation5/5

The three tools have clearly distinct purposes: mcp_read is for reading data from the clipboard manager, mcp_write is for writing data to it, and mcp_validate is for validating parameters before operations. There is no overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent 'mcp_' prefix with a descriptive verb (read, write, validate), using snake_case uniformly. This predictable pattern enhances readability and reduces confusion.

Tool Count4/5

With three tools, the count is appropriate for the server's purpose of clipboard management, covering read, write, and validation operations. It is well-scoped, though a slightly larger set might offer more granularity, but this is reasonable.

Completeness5/5

The tool set provides complete CRUD and lifecycle coverage for clipboard data management: mcp_read handles retrieval (including search and listing), mcp_write supports creation, updates, deletion, and movement, and mcp_validate ensures parameter integrity. No obvious gaps exist for the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/list91/mcp-copyq'

If you have feedback or need assistance with the MCP directory API, please join our Discord server