Skip to main content
Glama
GeiserX

duplicacy-mcp

by GeiserX

你将获得

类型

用途

MCP URI / 工具 ID

资源

只读浏览备份状态、进度和健康状况

duplicacy://statusduplicacy://progressduplicacy://health

工具

查询备份历史、列出快照并检查清理状态

get_backup_statusget_backup_historylist_snapshotsget_prune_status

所有内容均通过单个 JSON-RPC 端点 (/mcp) 暴露。 LLM / 代理可以:initialize -> readResource -> listTools -> callTool ……以此类推。


Related MCP server: duplicati-mcp

快速入门 (Docker Compose)

services:
  duplicacy-mcp:
    image: drumsergio/duplicacy-mcp:0.1.0
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      - DUPLICACY_EXPORTER_URL=http://duplicacy-exporter:9750

安全提示: HTTP 传输默认监听 127.0.0.1:8080。如果你需要将其暴露在网络上,请将其置于带有身份验证的反向代理之后。

通过 npm 安装 (stdio 传输)

npx duplicacy-mcp

或者全局安装:

npm install -g duplicacy-mcp
duplicacy-mcp

这将从 GitHub Releases 为你的平台下载预构建的 Go 二进制文件,并使用 stdio 传输运行它。至少需要一个 已发布的版本

本地构建

git clone https://github.com/GeiserX/duplicacy-mcp
cd duplicacy-mcp

# (optional) create .env from the sample
cp .env.example .env && $EDITOR .env

go run ./cmd/server

配置

变量

默认值

描述

DUPLICACY_EXPORTER_URL

http://localhost:9750

Duplicacy Prometheus 导出器 URL(末尾不带 /)

LISTEN_ADDR

127.0.0.1:8080

HTTP 监听地址(Docker 设置为 0.0.0.0:8080

TRANSPORT

(空 = HTTP)

设置为 stdio 以使用 stdio 传输

将它们放入 .env 文件(从 .env.example 复制)或在环境中设置它们。

测试

已使用 Inspector 进行测试,目前完全正常工作。在提交 PR 之前,请确保此 MCP 服务器通过此媒介表现良好。

客户端 LLM 的配置示例

{
  "schema_version": "v1",
  "name_for_human": "Duplicacy-MCP",
  "name_for_model": "duplicacy_mcp",
  "description_for_human": "Monitor Duplicacy backup status, progress, and health via Prometheus metrics.",
  "description_for_model": "Interact with a Duplicacy backup monitoring server that reads metrics from a Prometheus exporter. First call initialize, then reuse the returned session id in header \"Mcp-Session-Id\" for every other call. Use readResource to fetch URIs that begin with duplicacy://. Use listTools to discover available actions and callTool to execute them.",
  "auth": { "type": "none" },
  "api": {
    "type": "jsonrpc-mcp",
    "url":  "http://localhost:8080/mcp",
    "init_method": "initialize",
    "session_header": "Mcp-Session-Id"
  },
  "contact_email": "acsdesk@protonmail.com",
  "legal_info_url": "https://github.com/GeiserX/duplicacy-mcp/blob/main/LICENSE"
}

鸣谢

Duplicacy -- 无锁去重云备份

duplicacy-exporter -- Duplicacy 的 Prometheus 导出器

MCP-GO -- 现代 MCP 实现

GoReleaser -- 轻松实现多架构发布

维护者

@GeiserX

贡献

欢迎参与!提交 Issue 或提交 PR。

Duplicacy-MCP 遵循 Contributor Covenant 行为准则。

GeiserX 的其他 MCP 服务器

相关项目

项目

描述

duplicacy-cli-cron

使用 Duplicacy CLI 的基于 Docker 的加密双存储备份自动化

duplicacy-exporter

Duplicacy 备份的实时 Prometheus 导出器

duplicacy-ha

用于监控 Duplicacy 备份的 Home Assistant 自定义集成

duplicacy-container

在 Kubernetes 上运行 Duplicacy 的容器镜像和 Helm Chart

Available Tools

4 tools
get_backup_historyC
Destructive

Get the last backup details for a specific Duplicacy snapshot (files, bytes, duration, exit code)

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_idYesThe snapshot ID to query history for

TDQS

C2.8/5.0
Behavior1/5

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

Annotation Contradiction: Description uses 'Get' implying read-only operation, but annotations mark destructiveHint=true without any warning about side effects or destructive behavior in the text.

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?

Appropriately concise, front-loaded with action verb, and parenthetically lists return fields efficiently.

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

Completeness3/5

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

Compensates for missing output schema by listing return fields, but fails to address the destructive annotation or explain what 'last backup' means versus current status.

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?

With 100% schema description coverage, meets baseline; description implies the snapshot parameter by mentioning 'specific Duplicacy snapshot' but adds no additional semantic context beyond schema.

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

Purpose4/5

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

Clearly states it retrieves last backup details with specific fields (files, bytes, duration, exit code) for Duplicacy snapshots, though doesn't differentiate from sibling get_backup_status.

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

Usage Guidelines2/5

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

Provides no guidance on when to use versus alternatives or when not to use.

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

get_backup_statusB
Destructive

Get the current backup status for a specific Duplicacy snapshot

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_idYesThe snapshot ID to query status for

TDQS

B3.1/5.0
Behavior2/5

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

Mentions 'Duplicacy' for domain context but critically fails to explain why a 'get' operation has destructiveHint=true, which is highly unexpected and risky.

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?

Single sentence, front-loaded with action and target, no redundant words.

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

Completeness3/5

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

Adequate for a single-parameter tool but gaps remain around the destructive behavior and whether status refers to active operations or snapshot metadata.

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?

Baseline score since schema has 100% coverage; description adds no parameter-specific semantics beyond the schema.

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

Purpose4/5

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

Clear verb 'Get' and resource 'backup status', with 'current' distinguishing it from sibling get_backup_history, though 'status' semantics (running vs completed) remain ambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use vs list_snapshots (which also retrieves snapshot info) or get_backup_history; lacks when-not exclusions.

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

get_prune_statusC
Destructive

Get the prune operation status, optionally filtered by storage target

ParametersJSON Schema
NameRequiredDescriptionDefault
storage_targetNo(optional) Filter prune status to a specific storage target

TDQS

C2.8/5.0
Behavior1/5

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

Annotation Contradiction: Description implies read-only operation ('Get'), but annotations indicate destructiveHint=true and readOnlyHint=false without explanation for this discrepancy.

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?

Single sentence is appropriately front-loaded and concise, though extreme brevity contributes to missing behavioral transparency and output details.

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

Completeness3/5

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

Lacks description of return values (critical given no output schema exists), but adequately covers the single parameter and low complexity of the operation.

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?

With 100% schema description coverage, baseline is met; description mentions 'optionally filtered' but adds no semantic depth beyond schema's '(optional) Filter' text.

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

Purpose4/5

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

States specific action (get prune operation status) and filtering capability, distinguishing from backup/snapshot siblings, though assumes user knows what 'prune' entails.

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

Usage Guidelines2/5

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

No guidance on when to use versus get_backup_status or other status tools; lacks 'when-not' or alternative recommendations.

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

list_snapshotsB
Destructive

List all unique Duplicacy snapshot IDs known to the exporter

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior1/5

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

Annotation Contradiction: Description implies read-only operation ('List'), but annotations indicate destructiveHint: true and readOnlyHint: false without explanation.

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?

Single, front-loaded sentence that immediately conveys action and target; no extraneous text.

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

Completeness3/5

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

Lacks output schema description (return values undefined) and fails to explain the destructive behavior flagged in annotations.

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?

Zero parameters present, meeting baseline requirement; no additional parameter context needed.

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

Purpose4/5

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

Clear verb (List) and resource (snapshot IDs), mentions 'Duplicacy' to distinguish domain, and functionally differentiates from sibling status/history getters.

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

Usage Guidelines2/5

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

No guidance on when to use versus get_backup_history or other retrieval tools; no exclusion criteria provided.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedget_backup_history
    • First observedget_backup_status
    • First observedget_prune_status
    • First observedlist_snapshots

TDQS

B3.2/5.0
Disambiguation4/5

Tools have clearly distinct purposes, though get_backup_history and get_backup_status both target specific snapshots with similar naming patterns (historical vs current status). The descriptions adequately clarify the distinction between completed backup details and ongoing operations.

Naming Consistency5/5

All four tools follow a strict verb_noun pattern using snake_case (get_backup_history, get_backup_status, get_prune_status, list_snapshots). The naming convention is uniform and predictable throughout the set.

Tool Count4/5

Four tools is reasonable for a focused observability server interfacing with a Duplicacy exporter, providing essential monitoring capabilities without excessive scope. However, the read-only nature limits the server's overall utility for backup operations.

Completeness3/5

As a monitoring-specific server, it covers basic backup status, history, and prune operations, but lacks storage metrics, verification/check status, and error log access. For general Duplicacy management, the absence of backup execution, restore, or configuration tools represents notable functional gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

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

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that enables Large Language Models to retrieve, analyze, and query metric data from Prometheus databases through pre-defined routes.
    34
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A lean MCP server that provides LLM agents with transparent access to multiple Prometheus instances for metrics analysis and SRE operations.
    4
    GPL 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for administering Duplicacy backups via the duplicacy-web API, enabling AI clients to inspect and manage storages, repositories, schedules, and jobs.
    15
    MIT

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/GeiserX/duplicacy-mcp'

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