Synology NAS について
mcp-synologyは、Synology DSMの機能をMCPクライアントに公開し、NASのファイル管理、システム監視、ダウンロード、写真ライブラリの操作を可能にします。モジュールと読み取り・書き込み権限を設定できます。
主な機能
- 01ファイルの閲覧と管理
- 02システムとリソース使用状況の監視
- 03Download Stationタスクの管理
- 04Photosの閲覧と整理
- 05モジュールと権限の設定
活用シーン
- 01NAS上のファイル検索や転送
- 02NASの状態とリソース使用状況の確認
- 03NASのダウンロード管理
- 04Synology Photosライブラリの整理
MCP 対応
Synology DSM APIの機能をMCPツールとして公開します。モジュールを設定し、読み取り専用または書き込み可能な権限を指定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
mcp-synology
Synology NAS デバイス向けの MCP サーバーです。Synology DSM API の機能を MCP ツールとして公開し、Claude から利用できます。
synology-mcp からの移行
synology-mcp(v0.3.x 以前)からアップグレードする場合、パッケージ名が変更されています。移行スクリプトにより、設定、状態、キーリングのエントリー、Claude Desktop の設定が自動的に移行されます。
# Download and run the migration script
curl -O https://raw.githubusercontent.com/cmeans/mcp-synology/main/scripts/migrate-from-synology-mcp.py
python migrate-from-synology-mcp.py # dry run — preview changes
python migrate-from-synology-mcp.py --apply # apply changes
スクリプトでは次の項目を移行します。
- 設定ディレクトリ(
~/.config/synology-mcp/→~/.config/mcp-synology/) - 状態ディレクトリ(
~/.local/state/synology-mcp/→~/.local/state/mcp-synology/) - キーリングの認証情報
- Claude Desktop の
claude_desktop_config.json(コマンドとパスを更新)
破壊的変更の詳細については、CHANGELOG.md を参照してください。
対応モジュール
File Station
NAS 上のファイルを閲覧、検索、転送、管理します。2 つの権限レベルで 15 個のツールを利用できます。
- READ — list_shares、list_files、list_recycle_bin、search_files、get_file_info、get_dir_size、download_file
- WRITE — create_folder、rename、copy_files、move_files、delete_files、restore_from_recycle_bin、upload_file、file_task
System
NAS の状態とリソース使用状況を監視します。読み取り専用のツールが 2 つあります。
- get_system_info — モデル、ファームウェアのバージョン、RAM、温度、稼働時間(すべてのユーザーが利用できます)
- get_resource_usage — CPU 負荷、メモリ使用量、ディスク I/O、ネットワークスループット(管理者アカウントが必要です)
Download Station
Download Station のキューと設定を管理します。2 つの権限レベルで 12 個のツールを利用できます。
- READ — list_downloads、get_download_info、get_download_stats、get_download_config、get_schedule
- WRITE — create_download、delete_download、pause_download、resume_download、edit_download、set_download_config、set_schedule
Download Station はオプトイン方式です。mcp-synology setup では File Station のみが設定されます。有効にするには、次の手順を実行してください。
-
まだインストールされていない場合は、NAS の Package Center から Download Station をインストールします。このパッケージがない場合でもツールは表示されますが、すべての呼び出しが
api_not_foundで失敗します。 -
設定ファイルを編集します。 ファイルは
~/.config/mcp-synology/config.yamlです。Multi-NAS を使用している場合は、home-nas.yamlなどの NAS ごとのファイルになります。既存のmodules:セクションの内側にdownloadstationを追加してください。modules:キーをもう一つ追加しないでください。読み取りツールのみを使う場合はpermission: readを、12 個すべてのツールを使う場合はpermission: writeを指定します。modules: filestation: # already there enabled: true permission: write downloadstation: # add this enabled: true permission: write # or read -
設定を確認します:
mcp-synology check --config <your config file>を実行すると、YAML または検証上の誤りが報告され、ログインが引き続き機能することも確認できます。 -
MCP クライアントを再起動します(例:Claude Desktop)。サーバーが設定を読み込むのは起動時のみです。その後、Download Station のツール(
list_downloadsなど)が File Station のツールと並んで表示されます。アシスタントに「ダウンロードを一覧表示して」と頼んで試してみてください。
アカウントが管理者でない場合は、先に以下のアカウントをお読みください。非管理者が Download Station でタスクを実行するには、一度だけ設定が必要です。
アカウント。 管理者(Download Station マネージャー)はすべてのツールを使用できます。非管理者アカウントには、Download Station アプリケーションの権限(Control Panel → User & Group → [account] → Edit → Applications)が必要です。また、以下の制限があり、いずれもツールによって適用または報告されます。
- 初回設定。 Download Station は、既定の保存先が設定されるまで、非管理者のタスクを開始しません。設定されるまではタスクがいつまでも保留状態になります。Download Station を一度も開いたことがないユーザーには、既定の保存先がありません。
set_download_config(default_destination="<share>")で一度設定してください。この設定は DSM により、そのユーザーにのみ適用されます。設定前に明示的なdestinationを指定してcreate_downloadを実行すると、タスクは作成されますが、開始されないという警告が表示されます。destinationを指定しない場合は処理が拒否され、設定すべき値が示されます。フォールバック先となる既定の保存先がない場合、この拒否は管理者を含むすべてのアカウントに適用されます。 - 自分のタスクのみ。
list_downloadsおよびその他のタスクツールには、ユーザー自身のタスクのみが表示されます。 - 設定。
get_download_configに表示されるのは、NAS 全体の設定ではなく、ユーザー自身の設定です。set_download_configで変更できるのは、ユーザー自身のdefault_destinationのみです。速度制限は NAS 全体に適用されるため、非管理者による変更は拒否されます。DSM は非管理者からの変更を受け付けた後、何も通知せずに無視するためです。 - スケジュール。
get_schedule/set_scheduleの週間プランと速度制限には管理者権限が必要です。非管理者でもスケジュールのオン/オフは切り替えられますが、その切り替えは NAS 全体に適用されます。 Torrent ファイル。torrent_file_pathを指定したcreate_downloadは、ローカルの.torrentまたは.nzbファイルをアップロードします。ただし、許可されたローカルフォルダーからのみアップロードできます。デフォルトでは Downloads フォルダーです。別の種類のファイルを指すリンクも含め、それ以外のファイルは読み込む前に拒否されます。別のフォルダーを使うには、すべてのモジュールに適用する設定の最上位、またはこのモジュールの設定内でallowed_local_pathsに追加してください。最上位にも設定がある場合、モジュール独自のリストは最上位のリストに追加されます。最上位にリストがない場合、Downloads のデフォルト設定は置き換えられるため、引き続き使用するには~/Downloadsを含めてください。
modules:
downloadstation:
enabled: true
permission: write
settings:
allowed_local_paths:
- ~/Downloads # keep the default folder too
- ~/Torrents
機能のローカルパスの制限を参照してください。マグネットリンクと URL(uri)には影響しません。
既知の制限:
destinationは既存のフォルダーである必要があります。Download Station は存在しないフォルダーを作成しません。まず File Station のcreate_folder(/video/TV/New show。filestationモジュールでenabled: trueとpermission: writeが必要です)を使うか、DSM の File Station でフォルダーを作成し、共有フォルダーからの相対パス(video/TV/New show)を指定してください。保存先が存在しないというエラーが表示された場合は、この方法で解決できます(#296)。- URL に
username/passwordを使用する場合、create_downloadはタスク ID を返しません。 edit_downloadで変更できるのは保存先のみです。- torrent 内の個別ファイルを選択する方法はありません。
- BT 検索と RSS フィードにはまだ対応していません。
delete_download(force_complete=true)では、部分データが確実に保持されるとは限りません。DSM は未完了の HTTP ダウンロードも破棄していました。また、完了済みのタスクに対する削除も DSM に拒否され、ツールは削除されなかったことを報告します。
DSM 7.1(Download Station 3.9-4627)および DSM 7.2.2、7.3.2、7.4.1(Download Station 4.1-5012)でテスト済みです。
Synology Photos
個人スペースと共有スペースで、Synology Photos ライブラリの閲覧、検索、整理、共有ができます。2 つの権限レベルにまたがる 19 個のツールがあります。
- READ — list_photos、list_photo_collections、get_photo、download_photos
- WRITE — upload_photos、photo_album、photo_share_link、photo_folder、copy_photos、move_photos、photo_task、tag_photos、edit_photo、edit_person、photo_request、merge_people、delete_photos、delete_photo_folders、delete_photo_albums
Download Station と同様、Photos はオプトイン方式です。Package Center から Synology Photos をインストールし、既存の modules: セクションに photos を追加して、mcp-synology check で設定を確認し、MCP クライアントを再起動してください。
modules:
photos:
enabled: true
permission: write # or read
アカウント。 アカウントには Synology Photos アプリケーションの権限(コントロールパネル → アプリケーション権限 → Synology Photos)が必要です。また、個人スペースを使うにはユーザーホームサービス(コントロールパネル → ユーザーとグループ → 詳細 → ユーザーホーム)が必要です。共有スペースは Synology Photos の設定で有効にし、アカウントにアクセス権を付与する必要があります。これらが不足している場合、ツールは該当する項目名を示します。
知っておくとよいこと:
- 編集すると元のファイルが変更されます。 Photos は評価、説明、タグ、撮影日時の変更、回転をファイル自体に書き込むため、ファイルの日付とサイズが変わります。その結果、バックアップツールや同期ツールには新しいバージョンとして認識されます。
- タグは名前で指定します。 タグはどのアイテムにも付いていない状態になると存在しなくなるため、すべてのアイテムから削除すると、そのタグ自体も削除されます。
- 削除したアイテムは、そのスペースを格納している共有フォルダーにごみ箱がある場合、そこに移動します。Photos 独自のごみ箱はありません。大容量のコピー、移動、削除処理は
photos:<id>ハンドルを返し、photo_taskでその処理を追跡します。 - お気に入りとコンセプト(Photos が認識した物体やシーン)を利用するには、Synology Photos 1.9.1(DSM 7.2)が必要です。バージョン 1.3.4 では
not_supportedが返されます。 - ローカルファイル。
upload_photosの読み込みとdownload_photosの書き込みは、許可されたローカルフォルダー内でのみ行われます(デフォルトでは Downloads フォルダー)。allowed_local_pathsについては、上記の Download Station のトレントファイルに関する注意事項を参照してください。task_timeout(秒単位、デフォルト 30、最大 600)は、コピー、移動、削除が処理を引き渡すまで待機する時間を設定します。 - 未対応の機能: 共有スペースのフォルダー共有、顔単位の人物編集、写真リクエストへのゲストからのアップロード、Photos 自体の設定変更。
DSM 7.1(Synology Photos 1.3.4)、DSM 7.2.2、7.3.2、7.4.1(Synology Photos 1.9.1)でテスト済みです。各ツールが送信する内容と、その背後にある DSM の動作については、docs/specs/photos-module-spec.md を参照してください。
機能
- 対話形式のセットアップ — 設定を作成し、認証情報を保存し、2FA を処理して、Claude Desktop 用のスニペットを出力するガイド付き設定です
- 権限レベル — モジュールごとに READ または WRITE を設定し、ツールの登録時に適用します。権限レベルによって、サーバーが NAS 上で実行できる操作が制御されます。このマシン上に書き込む
download_fileには破壊的操作の注釈が付いているため、クライアントで確認できます。読み取り専用接続では、利用できないツールと有効化方法をモデルに伝えるため、モデルがサーバーには実行できないと誤って主張することはありません - 長時間の操作も実行を継続 — 大量の削除、コピー、移動、ごみ箱からの復元では、呼び出しが待機している間に進捗状況が報告されます。待機時間の終了時(デフォルトでは 30 秒)にも操作が実行中の場合、NAS はそのまま処理を続けます。応答には、進捗を確認したり、実行中の操作を一覧表示したり、操作を停止したりする
file_task用のハンドルが含まれます。File Station の設定を参照してください - ローカルパスの制限 —
upload_file、download_file、およびcreate_downloadの torrent ファイルで使用できるのは、allowed_local_pathsに記載されたローカルフォルダーのみです。デフォルトでは Downloads フォルダーです。すべてのモジュールに適用するには設定の最上位で指定し、モジュールごとに設定するにはそのモジュールの設定で指定します。最上位のリストが設定されている場合、モジュール独自のリストは最上位のリストに追加されます。最上位のリストがない場合は、Downloads のデフォルト設定を置き換えるため、引き続き使用するには~/Downloadsを含めてください。create_downloadが読み取るのは.torrentと.nzbファイルのみです。シンボリックリンクと..は最初に解決されるため、許可された範囲外には移動できません。すべてを許可するには["/"]に設定します(macOS/Linux) - 2FA 対応 — 自動検出されます。デバイストークンを初期設定し、サイレントな再認証を自動で行います
- 安全な認証情報 — macOS、Windows、Linux で透過的に動作する OS キーチェーンとの連携に対応しています(Claude Desktop からの利用を含む)。docs/credentials.mdを参照してください。
- 複数の NAS — NAS デバイスごとに設定、認証情報、状態を分けて管理できます
クイックスタート
1. セットアップを実行する
uvx mcp-synology setup
uv が必要です。uvx は最新バージョンを自動的にダウンロードして実行するため、別途インストールする必要はありません。
セットアップでは、NAS のホスト、認証情報、設定を尋ねられます。アカウントで 2FA が有効になっている場合は、OTP コードの入力を求められ、自動ログイン用のデバイストークンが保存されます。
最後に、コピーして貼り付けられる Claude Desktop 用の JSON スニペットが出力されます。
2. Claude Desktop に追加する
セットアップで出力されたスニペットを claude_desktop_config.json にコピーし、Claude Desktop を再起動します。次のような内容になります。
{
"mcpServers": {
"synology-nas": {
"command": "uvx",
"args": ["mcp-synology", "serve", "--config", "~/.config/mcp-synology/nas.yaml"]
}
}
}
設定ファイル名(例:nas.yaml)は、接続を識別するための自然な名前としても使われます。NAS に合わせて名前を付けることができます(例:home-nas.yaml、office-nas.yaml)。
Linux では、サーバーがキーチェーンへのアクセスに使う D-Bus セッションソケットを自動検出します。自動検出に失敗する場合は、Claude Desktop の設定に "env": {"DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/<uid>/bus"} を追加してください。セットアップコマンドが、生成するスニペットにこの設定を含めます。
3. 動作を確認する
uvx mcp-synology check # Validates credentials work
uvx mcp-synology setup --list # Shows all configured NAS instances
別の方法:グローバルインストール
実行のたびにダウンロードする必要がない、永続的なインストールを希望する場合に使用します。uv が必要です。curl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux)でインストールするか、その他の方法についてはインストールガイドを参照してください。
uv tool install mcp-synology
mcp-synology setup
mcp-synology check
別の方法:環境変数のみのモード
SYNOLOGY_HOST が設定されている場合、設定ファイルは不要です。Docker や CI 環境で便利です。
{
"mcpServers": {
"synology": {
"command": "uvx",
"args": ["mcp-synology", "serve"],
"env": {
"SYNOLOGY_HOST": "192.168.1.100",
"SYNOLOGY_USERNAME": "your_user",
"SYNOLOGY_PASSWORD": "your_password"
}
}
}
}
または、CLI から実行します。
SYNOLOGY_HOST=192.168.1.100 uvx mcp-synology check
2FA サポート
mcp-synology は、2 要素認証を使用する DSM アカウントを完全にサポートしています。自動検出されるため、特別な設定は不要です。
- ブートストラップ —
mcp-synology setupが 2FA を検出し、OTP コードを求めたうえで、デバイストークンをキーリングに保存します - サイレント再認証 — 以降のログインではデバイストークンが自動的に使用されます(OTP の入力は求められません)
- インスタンスごと — NAS の設定ごとに専用のデバイストークンが作成されるため、2FA の有無が混在する環境でも問題なく動作します
デバイストークンに固定の有効期間はありません。DSM の「個人 > セキュリティ > サインインアクティビティ」で信頼済みデバイスを削除するか、DSM がそれ以外の理由でトークンを受け付けなくなるまで有効です。DSM が保存済みのトークンを拒否した場合は、その旨がエラーに表示されます。mcp-synology setup を再度実行し、新しい 2FA コードでサインインしてください。
キーリングと認証情報
認証情報は OS のキーリングに保存され、透過的にアクセスされます。
| プラットフォーム | バックエンド | 備考 |
|---|---|---|
| macOS | Keychain | そのまま動作します |
| Windows | Credential Manager | そのまま動作します |
| Linux | GNOME Keyring / KWallet | D-Bus セッションを自動検出し、Claude Desktop からも動作します |
認証情報の解決順序は、環境変数 > 設定ファイル > キーリングです。明示的に指定された情報は、暗黙のデフォルトより優先されます。
キーリングのない環境(Docker、CI)では、環境変数または設定ファイルに直接記述した認証情報を使用してください。
キーリングのサービス名、複数 NAS の設定、保存済み認証情報の確認・削除方法については、docs/credentials.md を参照してください。
アップデート
mcp-synology はアップデートを確認し、Claude Desktop の会話で通知します。各セッションで最初に返されるツールの応答に、PyPI で新しいバージョンが入手可能な場合は通知が含まれます。
CLI からアップデートを管理するには、次のようにします。
mcp-synology --check-update # Check for a newer version
mcp-synology --auto-upgrade enable # Auto-upgrade on each interactive run
mcp-synology --revert # Roll back to previous version
mcp-synology --revert 0.1.0 # Roll back to a specific version
アップデート通知を無効にするには、設定ファイルのトップレベルに次の内容を追加してください。
# ~/.config/mcp-synology/config.yaml
check_for_updates: false
設定
対話形式のセットアップによって、設定ファイルが作成されます。手動で設定する場合や詳細オプションについては、examples/ を参照してください。
config-minimal.yaml— 最小限の設定config-power-user.yaml— HTTPS、カスタムタイムアウト、ログ、指示config-docker.yaml— 環境変数を使った設定
複数 NAS の設定
NAS ごとに、専用の設定ファイル、認証情報、Claude Desktop のエントリーを用意します。設定ファイル名を識別子として使用できます(例:home-nas.yaml、media-server.yaml)。
接続に表示名を付けるには、alias を設定してください。
# ~/.config/mcp-synology/home-nas.yaml
alias: HomeNAS
エイリアスは MCP サーバー名(例:synology-HomeNAS)に表示されるため、Claude はどの NAS と通信しているかを把握できます。
File Station の設定
File Station の設定は、filestation モジュール内の settings: に記述します。すべて省略可能です。
modules:
filestation:
enabled: true
permission: write
settings:
delete_timeout: 120 # wait up to 2 minutes before handing a delete off
copy_move_timeout: 300 # copy, move and restore: 5 minutes
async_timeout: 180 # search_files and get_dir_size
allowed_local_paths:
- ~/Downloads
- ~/Media
default_download_dir: ~/Downloads
タイムアウトは秒単位(10~3600 を指定可能)で、実時間で計測されます。
| 設定 | デフォルト | 機能 |
|---|---|---|
delete_timeout | 30 | delete_files が処理を引き継ぐまで待機する時間です。 |
copy_move_timeout | 30 | copy_files、move_files、restore_from_recycle_bin が処理を引き継ぐまで待機する時間です。 |
async_timeout | 120 | search_files と get_dir_size の制限時間です。削除、コピー、移動、復元には適用されません。 |
search_timeout、dir_size_timeout | async_timeout | search_files と get_dir_size のツールごとの制限時間です。制限時間に達すると、NAS のタスクは停止します。 |
upload_timeout、download_timeout | 300 | upload_file と download_file の制限時間です。 |
削除、コピー、移動、復元では、タイムアウトは処理の制限時間ではなく、処理を引き継ぐまで呼び出しが待機する時間です。待機中に処理が完了した場合は、通常どおり結果を返します。処理がまだ実行中の場合、NAS 上で処理は継続し、応答には delete:FileStation_… のようなハンドルが含まれます。このハンドルを file_task で使用して、進行状況や最終結果を確認したり、処理を停止したりできます。ハンドルを指定せずに file_task を実行すると、実行中の処理が一覧表示されます。設定値にかかわらず、待機時間の上限は 600 秒です。MCP クライアントが呼び出しを中断すると、その呼び出しはキャンセルされ、処理も停止するためです。
クライアントのタイムアウト。 MCP クライアントにも独自の制限時間があります。Claude Code は、アイドル状態の時間内に結果も進行状況の通知も送信されないツール呼び出しを中断します。このサーバーのような stdio サーバーではデフォルトで 30 分(HTTP サーバーでは 5 分)です。CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT 環境変数(ミリ秒。0 にするとチェックが無効になります)で延長できます。または、このサーバーに限り、MCP 設定エントリの timeout フィールド(ミリ秒)で延長できます。このフィールドは呼び出しごとのハードリミットも設定します。Claude Code の MCP ドキュメントを参照してください。削除、コピー、移動、復元の処理では、待機中に進行状況の通知を送信するため、アイドル制限には達しません。get_dir_size と search_files はまだ進行状況を送信しないため(#252)、アイドル時間を超えて実行されると、クライアントによって中断される場合があります。クライアントの制限を延長するか、検索するパスを絞り込んでください。
その他の設定:
allowed_local_paths—upload_fileとdownload_fileが使用できるローカルフォルダーとそのサブフォルダーです(デフォルト:Downloads フォルダー)。トップレベルのallowed_local_pathsはすべてのモジュールに適用され、このリストはその内容に追加されます。トップレベルのリストがない場合、このリストが Downloads のデフォルト設定に代わります。Features の ローカルパスの制限を参照してください。default_download_dir—dest_folderが指定されていない場合にdownload_fileが使用するローカルフォルダーです。常に許可されます。default_upload_dir—dest_folderが指定されていない場合にupload_fileが使用する NAS フォルダーです。hide_recycle_in_listings—list_filesで#recycleフォルダーを非表示にします(デフォルト:false)。file_type_indicator— 一覧表示で使用するマーカーです。emoji(デフォルト)またはtextを指定します。
スキーマ全体については docs/specs/config-schema-spec.md を、設定例全体については examples/config-power-user.yaml を参照してください。
カスタム指示
カスタム指示を使うと、Claude が NAS ツールとどのようにやり取りするかを調整できます。次のような場合に便利です。
- 複数の NAS 接続 — タスクごとに優先する接続を Claude に伝えます(「メディアにはこちらを使い、ユーザーをまたぐ操作には admin を使う」など)
- 安全ガードレール — 「削除する前に必ず確認する」「/Backups には絶対に触れない」などのルールを追加します
- コンテキスト — NAS に何があるかを説明します(「これはメディアサーバーで、/video にはジャンル別に整理したライブラリがあります」など)
コンテキストを追加 — custom_instructions は組み込みのプロンプトの前に追加されます(優先度が高くなります)。
# ~/.config/mcp-synology/config.yaml
custom_instructions: |
This is the admin NAS with elevated privileges.
Prefer this connection for file operations requiring cross-user access.
Never delete files from /Backups without explicit confirmation.
完全に制御 — instructions_file は組み込みのプロンプト全体を置き換えます。出発点として、組み込みの server.md をコピーしてください。置き換えファイルは HTML コメントを除き、記述どおりに使用されます。そのため、接続で使用できないツールと、その有効化方法をモデルに伝える、生成された PERMISSIONS セクションは追加されません(custom_instructions には追加されます)。
# ~/.config/mcp-synology/config.yaml
instructions_file: ~/.config/mcp-synology/my-instructions.md
どちらもテンプレート変数に対応しています:{display_name}、{instance_id}、{host}、{port}。
HTML コメント(``)はテキストの送信前に両方から削除されるため、ファイルを編集する人向けのメモを記載できます。独立した行にあるコメントは、その行ごと削除されます。
トラブルシューティング
エラーの help_url は、docs/error-codes.md 内の該当セクションを指します。エラーではないものの動作がおかしい場合(ダウンロードが waiting のままになる、Photos の日付が古い値として読み戻される、削除がハンドルを伴って引き継がれるなど)は、モジュール別にまとめられた docs/troubleshooting.md を参照してください。
デバッグ
デバッグログを有効にする方法は 2 つあります。
mcp-synology check --verbose # --verbose flag on setup/check
SYNOLOGY_LOG_LEVEL=debug mcp-synology serve # env var, works for all commands
または、設定ファイルで永続的に設定します。
# ~/.config/mcp-synology/config.yaml
logging:
level: debug
file: ~/.local/state/mcp-synology/nas/server.log # optional, logs to stderr by default
デバッグ出力には、すべての DSM API リクエスト/レスポンス(パスワードはマスクされます)、認証情報の解決手順、設定の検出、バージョンネゴシエーション、モジュール登録の判断が含まれます。
コントリビューション
ビルドコマンド、テスト、統合テストのセットアップ、設計ドキュメントについては、DEVELOPMENT.md を参照してください。
謝辞
このプロジェクトは、Spec-First Coding のアプローチを用いて構築されました。これは、設計を実装に先行させ、仕様を人間と AI の間の契約とする共同作業モデルです。
希望を説明して AI にその場でコードを生成させるバイブコーディングとは異なり、Spec-First Coding では設計を独立した慎重なフェーズとして扱います。docs/specs/ にある 4 つの仕様は、トレードオフの検討、代替案の却下、理由を添えた決定事項の記録を含む、長時間の対話を通じて作成されました。その後、11 のビルドフェーズにわたって、仕様を信頼できる唯一の情報源として実装を進めました。
実際のハードウェアでのライブテストにより、仕様では予測できなかった動作が明らかになりました(検索サービスのスロットリングに見えた JSON 解析済みパラメーター値などの DSM API の癖や、バージョン形式の互換性の問題など)。これらの発見は CLAUDE.md とコードに記録されています。仕様と食い違う場合は、コードが正とされます。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。