Skip to main content
Glama

dsm-mcp

Synology DSM および Container Manager 用の Model Context Protocol サーバーです。MCP クライアント(Claude)が NAS を検査し、Synology Web API 経由でコンテナを直接管理できるようにします。ブラウザは不要で、リクエストごとの DSM ログインや 2FA も不要です。サーバーは専用サービスアカウントで一度ログインし、セッションを自ら維持します。これは実質的に、あなたが求めていた「期限切れにならないセッション」です。Claude が再認証することはありません。

arr-mcp の姉妹品です。同じ構成(Python、streamable-HTTP、ベアラ認証)で、ポートが異なり(8788)、Synology 専用のクライアントです。

ツール

領域

ツール

検出/ヘルス

dsm_health、dsm_api_discover、dsm_raw_call

システム

dsm_system_info、dsm_storage、dsm_utilization

コンテナ

dsm_docker_containers、dsm_docker_container、dsm_docker_action*、dsm_docker_logs、dsm_docker_projects

* = 書き込みアクション(コンテナの開始/停止/再起動)。dsm_raw_call は任意の DSM メソッドを呼び出せます(書き込みも含む)。これは DSM の API のうちバージョンによって異なる部分のための逃げ道です。

DSM の API について(必読)

Synology の Web API はディスカバリ駆動型で、バージョン/モデルに依存します。各ツールは呼び出し時に SYNO.API.Info を介して正しい CGI パスとバージョンを解決するため、システム/ストレージ/利用状況ツールは堅牢です。Docker/Container Manager のメソッドは DSM のリリース間で一貫して文書化されていないことがあります。dsm_docker_logs、dsm_docker_projects、またはアクションのパラメータがお使いの DSM と一致しない場合は、dsm_api_discover(SYNO.Docker または all をクエリ)を実行して NAS が公開している内容を正確に確認し、dsm_raw_call で操作してください。ライブで回避できないハードコードはありません。

Related MCP server: Synology_MCP

サービスアカウント(最初にこれを行ってください)

これをメインの管理者に向けないでください。DSM で:

  1. コントロールパネル → ユーザーとグループ → 作成 でユーザー(例: claude-svc)を作成します。

  2. 必要なものだけを付与します: Container Manager アプリの権限、およびシステム/ストレージの読み取り。DSM のバージョンが管理者なしで Docker API を許可している場合は administrators グループから外してください。管理者が必要な場合は、ここでのみ使用する別の管理者グループアカウントを推奨します。

    • 注: 現時点では、コンテナマネージャのエンドポイントにアクセスするには、サービスアカウントが administrators グループのメンバーである必要があります。

  3. このアカウントで 2FA を無効 にします(デーモンは回転コードを入力できません)。ポリシーで 2FA が強制されている場合は、信頼できるデバイスを一度登録し、そのトークンを DSM_DEVICE_ID に設定します。

  4. オプションで LAN に制限します(コントロールパネル → セキュリティ → ファイアウォール / IP ルール)。MCP サーバーは LAN 上にあり、トンネルのみが公開されているためです。

セットアップ

cp config.example.env .env
# edit .env: DSM_URL, the service account + password, a strong MCP_AUTH_TOKEN.
# HTTPS with the self-signed cert? use :5001 and set DSM_VERIFY_SSL=false

docker compose up -d --build
docker logs -f dsm-mcp        # confirm it starts; auth runs on the first tool call

Docker なしで実行(開発用):

pip install -r requirements.txt
set -a; source .env; set +a
python server.py

Claude に公開する

エンドポイント: https://<your-hostname>/mcp。arr-mcp と同じです:

  1. トンネルを張ります(専用の cloudflared、または既存の Jellyfin トンネル上のホスト名 → http://dsm-mcp:8788)。理想的には Cloudflare Access の背後に置きます。

  2. Claude → 設定 → コネクタ → カスタムコネクタ → /mcp URL に、Authorization: Bearer <MCP_AUTH_TOKEN> を指定します。

セキュリティに関する注意

  • これはコンテナの再起動やシステム内部の読み取りが可能で、DSM ユーザーとして認証されます。アカウントは最小権限に保ち、2FA オフはその LAN アカウントのみに限定し、エンドポイントは常にベアラトークン(理想的には Cloudflare Access)の背後に置いてください。

  • 資格情報は .env(git/docker で無視)にのみ存在します。MCP クライアントがそれらを見ることはありません。ツールの結果のみを見ます。

  • アカウント削除、DSM 設定の変更、ボリューム/プールの破壊的なツールは公開されていません。dsm_raw_call は設計上強力です。エンドポイントの認証をそれに応じて扱ってください。

ファイル

  • server.py — MCP サーバー + ツール(streamable-HTTP + ベアラ認証)

  • dsm_client.py — Synology Web API クライアント(ディスカバリ、ログイン、セッション更新)

  • config.py — 環境変数からクライアントを構築

  • Dockerfile / docker-compose.yml — コンテナ + オプションのトンネル

  • config.example.env — .env にコピー

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Synology NAS services including DSM, File Station, Calendar, Note Station, Contacts, Chat, Download Station, and Container Manager through a modular MCP interface with configurable safety modes.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes a Synology NAS through the official DSM WebAPI, covering File Station, Download Station, Synology Photos, Container Manager, and system management with curated tools and a generic bridge for other APIs.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server enabling AI agents to manage and monitor Synology NAS via official DSM API, including file operations, system stats, backups, downloads, and camera lists.
    15
    -