selectel-s3-mcp-ai-cli について
selectel-s3-mcp-ai-cliは、Selectel Object Storage向けのGo製MCPサーバー、CLI、エージェントスキルです。オブジェクトの確認やバックアップ復元に使え、権限別のツール登録、アクセス範囲の制限、破壊的操作の人間による承認に対応します。
主な機能
- 01オブジェクトのCRUD、コピー、バージョン管理
- 02マルチパート転送と署名付きURL
- 03制限付きスキャンとプレフィックス使用量分析
- 04CLI、JSON出力、診断
- 05MCP設定とエージェントスキルの導入
- 06アクセス範囲の制限と破壊的操作の承認
活用シーン
- 01Selectel S3のバケットとオブジェクトの確認
- 02大容量オブジェクトとプレフィックス使用量の確認
- 03バケットからのバックアップアーカイブ取得
- 04ポリシーに沿ったエージェントの操作制限
MCP 対応
MCPクライアントにS3ツールと設定、機能、プールのリソースを公開します。標準では読み取りツールのみを登録し、権限レベルに応じて書き込み、削除、管理操作を有効化できます。アクセス範囲の制限と破壊的操作の承認にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e SELECTEL_S3_ACCESS_KEY_ID -e SELECTEL_S3_SECRET_ACCESS_KEY -e SELECTEL_S3_POOL -e SELECTEL_S3_ENDPOINT -e SELECTEL_S3_ALLOW_INSECURE -e SELECTEL_S3_ALLOW -e SELECTEL_S3_DESTRUCTIVE_POLICY -e SELECTEL_S3_ALLOWED_BUCKETS -e SELECTEL_S3_ALLOWED_PREFIXES -e SELECTEL_S3_FILE_ROOT -e SELECTEL_S3_AUDIT_FILE ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0SELECTEL_S3_ACCESS_KEY_IDシークレットS3 access key IDSELECTEL_S3_SECRET_ACCESS_KEYシークレットS3 secret access keySELECTEL_S3_POOLSigning poolSELECTEL_S3_ENDPOINTOptional endpoint overrideSELECTEL_S3_ALLOW_INSECURESet 1 only for explicit HTTP test endpointsSELECTEL_S3_ALLOWIndependent write,delete,admin levels; read only by defaultSELECTEL_S3_DESTRUCTIVE_POLICYSELECTEL_S3_ALLOWED_BUCKETSComma-separated bucket scopeSELECTEL_S3_ALLOWED_PREFIXESComma-separated bucket/prefix/ scopeSELECTEL_S3_FILE_ROOTOptional confined local file rootSELECTEL_S3_AUDIT_FILEOptional private append-only audit outputローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Selectel S3 MCP サーバー&AI CLI
Selectel S3(Selectel Object Storage)用のMCP サーバーとCLIです。Claude Code、Cursor、Codexに接続し、バケットの表示、バックアップの復元、Goバイナリselectel-s3によるファイル操作ができます。
English guide · S3 MCP サーバーのカタログ
English
Selectel S3 Object Storage用のGo製MCP サーバー、CLI、エージェントスキルです。Claude Code、Cursor、Codexを、範囲を限定したオブジェクトストレージに接続して、内容の確認やバックアップの復元を行えます。6つのプロファイルプールに対応しています。タグ付けとライフサイクル関連のツールは無効になっています。英語版の完全なガイドをご覧ください。
機能
- オブジェクトのCRUD、サーバー側のコピー/移動、バージョン、マルチパート、署名付きGET/PUT。
- CORS、バケットポリシー、Object Lockの設定。プロファイルの機能に基づいて登録されます。
- 範囲を限定したスキャン:大容量オブジェクト、プレフィックスの使用状況、放棄されたアップロード。
- ストリーミングCLI、JSON、診断、MCP設定と組み込みスキルのインストール。
クイックスタート
Releasesからお使いのプラットフォーム用バイナリを取得するか(v0.1.0公開済み。MCP RegistryとSmitheryにも掲載)、Go 1.27.2でビルドします。
go build -o selectel-s3 ./cmd/selectel-s3
./selectel-s3 version
./selectel-s3 auth set
./selectel-s3 auth status
./selectel-s3 ls --json
auth setはキーIDとシークレットをエコーなしで尋ねます。TTYがない場合は、stdinから2行を読み取ります。シークレットをargvに渡さないでください。ファイル~/.config/selectel-s3/credentialsは0600でアトミックに作成されます。これより広い権限は拒否されます。
優先順位:フラグ > env > ファイル。環境変数:SELECTEL_S3_ACCESS_KEY_ID、SELECTEL_S3_SECRET_ACCESS_KEY、SELECTEL_S3_POOL(ru-1)、SELECTEL_S3_ENDPOINT。HTTPを使うにはSELECTEL_S3_ALLOW_INSECURE=1が必要です。
イメージ:ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0。ローカルでのビルド:docker build -t selectel-s3 . イメージはuid 65532でMCPを起動し、CA証明書を含みます。認証情報はプライベートな環境変数またはファイル経由で渡してください。
Claude Code、Cursor、Codexへの接続
このボタンを使うと、読み取り専用モードでDockerイメージghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0からMCPがインストールされます。キーは設定ファイルに書き込まれません。Cursorは環境変数から${env:…}を設定するため、Cursorの起動元でSELECTEL_S3_ACCESS_KEY_IDとSELECTEL_S3_SECRET_ACCESS_KEYを設定してください。バケットがデフォルトプールにない場合はSELECTEL_S3_POOLも設定します(空の値はデフォルトプールを意味します)。同じブロックをWindsurf(mcp_config.json)と~/.cursor/mcp.jsonへの手動設定にも使えます。
{
"mcpServers": {
"selectel-s3": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SELECTEL_S3_ACCESS_KEY_ID",
"-e",
"SELECTEL_S3_SECRET_ACCESS_KEY",
"-e",
"SELECTEL_S3_POOL",
"ghcr.io/stufently/selectel-s3-mcp-ai-cli:0.1.0"
],
"env": {
"SELECTEL_S3_ACCESS_KEY_ID": "${env:SELECTEL_S3_ACCESS_KEY_ID}",
"SELECTEL_S3_SECRET_ACCESS_KEY": "${env:SELECTEL_S3_SECRET_ACCESS_KEY}",
"SELECTEL_S3_POOL": "${env:SELECTEL_S3_POOL}"
}
}
}
}
selectel-s3 mcp install --client cursor --dry-run
selectel-s3 mcp install --client cursor
selectel-s3 mcp install --client claude-desktop
selectel-s3 mcp install --client codex
selectel-s3 mcp install --client claude-code --scope project
selectel-s3 mcp install --client claude-code --scope user
最後のコマンドはclaude mcp addを表示するだけです。バイナリのパスは絶対パスです。キーは設定ファイルに書き込まれません。Cursor:~/.cursor/mcp.json、Claude Codeプロジェクト:./.mcp.json、Desktop:使用するOSの設定ディレクトリです。JSONでは既存のキーが保持され、.bakと冪等性にも対応しています。
Codex:~/.codex/config.toml。既存のテーブルがある場合は--forceが必要です。置き換えられるのは、# >>> selectel-s3 (managed) / # <<< selectel-s3 (managed)の間のブロックだけです。マーカーのないテーブルは、--forceを指定しても置き換えられません。TOMLの他のバイトはそのまま保持されます。
各レベルは個別に有効にできます:selectel-s3 mcp --allow-write --allow-delete --allow-admin、またはSELECTEL_S3_ALLOW=write,delete,admin。mcp installでもフラグを使用できます。FILE_ROOTはSELECTEL_S3_FILE_ROOTで有効にします。
MCP ツール
| レベル | ツール |
|---|---|
| read | s3_list_buckets, s3_list_objects, s3_head_object, s3_get_object, s3_preview_object, s3_presign_get, s3_list_object_versions, s3_list_multipart_uploads, s3_list_parts, s3_get_bucket_config, s3_largest_objects, s3_prefix_usage, s3_unfinished_uploads |
| read + FILE_ROOT | s3_download_file |
| write | s3_put_object, s3_create_folder, s3_copy_object, s3_presign_put, s3_multipart_create, s3_multipart_presign_part, s3_multipart_complete |
| write + FILE_ROOT | s3_upload_file |
| delete | s3_delete_object, s3_delete_objects, s3_multipart_abort |
| write + delete | s3_move_object |
| admin | s3_create_bucket, s3_put_bucket_versioning, s3_put_bucket_cors, s3_put_bucket_policy, s3_delete_bucket_policy, s3_put_object_lock_configuration |
| admin + delete | s3_delete_bucket |
Selectel ではタグは登録されません。リソース:selectel-s3://config、selectel-s3://capabilities、selectel-s3://pools。
一覧は continuation_token を使用して最大 1000 件を取得します。バージョン/マルチパートには 2 つ目のマーカーがあります。インライン get/put は 262144 バイト、プレビューは 65536 バイトです。それより大きなファイルは、署名付き URL または FILE_ROOT 経由で処理されます。応答には structuredContent と JSON テキストが含まれます。256 KiB を超えるテキストは簡潔な要約に置き換えられます。エラーは code/message/retryable を含みます。429/503 の場合、SDK が適応的に再試行します。
分析では最大 max_scan 件(デフォルトは 10000 件)をスキャンします。partial/token は結果が不完全であることを示します。Prefix usage は next_result_offset を使用して集計結果のページを返します。これは課金情報ではありません。
シナリオ:プールの選択とバックアップの復元
既存のバケットのプールを選択し、復元前にアーカイブを確認してください。--pool はエンドポイントと署名リージョンの両方を変更します。モスクワのプール ru-6 の例は次のとおりです。
selectel-s3 --pool ru-6 ls backups/daily/ --json
selectel-s3 --pool ru-6 stat backups/daily/archive.tar
selectel-s3 --pool ru-6 cp s3://backups/daily/archive.tar ./restored-selectel.tar
例では、既存のバケット backups とオブジェクト daily/archive.tar を使用します。ご自身の値に置き換えてください。プロファイルとクラウド API は、まだ実環境での確認が必要です。
CLI
selectel-s3 mb backups
selectel-s3 cp ./archive.tar s3://backups/daily/archive.tar --part-size 5242880
selectel-s3 ls backups/daily/ --max-keys 100 --json
selectel-s3 stat backups/daily/archive.tar
selectel-s3 cp s3://backups/daily/archive.tar ./restored.tar
selectel-s3 cp ./directory s3://backups/tree/ --recursive
selectel-s3 cp s3://backups/tree/ ./restored-directory --recursive
selectel-s3 cp s3://backups/daily/archive.tar s3://backups/copy.tar
selectel-s3 cat backups/daily/notes.txt
selectel-s3 versions backups/daily/ --json
selectel-s3 du backups/daily/ --max-scan 10000 --json
selectel-s3 presign backups/daily/archive.tar --expires 3600
selectel-s3 mv s3://backups/copy.tar s3://backups/moved.tar --yes
selectel-s3 rm backups/moved.tar --yes
selectel-s3 rb empty-bucket --yes
selectel-s3 doctor --json
selectel-s3 compat --markdown
cp は通常のローカルパスと、S3 URI s3://bucket/key または selectel-s3://bucket/key を受け付けます。大きなファイルのアップロードには manager/multipart を使用し、--recursive はディレクトリ/プレフィックスをコピーします。上書きには --overwrite と確認が必要です。ダウンロードはアトミックに行われます。rm/rb/mv は、TTY でない環境では --yes を指定しないと終了コード 2 を返し、TTY では確認を求めます。--json は共通オプションです。エラーは stderr に出力され、終了コードは 0 以外になります。
doctor は認証情報のソース/権限、DNS/TLS、Date と ListBuckets による時刻を確認します。5 分を超えるずれは警告、15 分を超えるずれはエラーです。
AI エージェント向けスキル
selectel-s3 skill install
selectel-s3 skill install --target ./agent-skills/selectel-s3
デフォルトのインストール先は ~/.claude/skills/selectel-s3 です。SKILL.md と 6 つのリファレンス(バックアップ/復元、共有、最小権限、コスト管理、移行、インシデント対応)を冪等にインストールします。トリガー:「selectel s3」、「селектел のバケット」、「s3 にアップロード」、「presigned」、「s3 にバックアップ」。
セキュリティ
MCP はデフォルトで読み取り専用ツールのみを登録します。未対応の機能や不足している権限レベルがある場合、そのツールは除外されます。
SELECTEL_S3_DESTRUCTIVE_POLICY:confirm はクライアントが対応している場合に elicitation を使用し、それ以外の場合は人間の同意後に confirm:true が必要です。elicit は elicitation を必須とし、confirm:true による回避はできません。block は常に禁止し、allow はゲートなしで実行します。拒否はすべての S3 リクエストに先立って行われます。ゲートは削除、move、presigned PUT、ポリシー/Object Lock、バージョニングの停止、上書きを対象とします。
put/copy/move/multipart complete/upload file はデフォルトで overwrite:false です。対象に対して HEAD と If-None-Match: * を実行します。overwrite:true には同じゲートが必要です。
スコープ:SELECTEL_S3_ALLOWED_BUCKETS=backups、SELECTEL_S3_ALLOWED_PREFIXES=backups/daily/。プレフィックスはセグメント境界を考慮するため、daily-evil は一致しません。「..」セグメントは拒否されます。部分的なスコープが設定されている場合、対象のバケットが ALLOWED_BUCKETS に含まれていても、バケット全体や広範なリスト操作は禁止されます。Copy/move ではソースと宛先を検証します。
ファイル用 MCP ツールは os.Root を使用します。FILE_ROOT 内の相対パスのみが許可され、「..」、絶対パス、外部へのシンボリックリンクは拒否されます。呼び出しごとに stderr に 1 行の JSON を出力し、SELECTEL_S3_AUDIT_FILE が設定されている場合は、さらに 0600 で記録します。シークレットと X-Amz-Signature/Credential/Security-Token はログ/エラー内でマスキングされます。署名済みの完全なリンクは操作の結果としてのみ返されます。S3 キー自体の権限も制限してください。
s3_download_file はデフォルトで、ダウンロード中に作成されたファイルも含め、既存のファイルを置き換えずにダウンロード済みファイルを公開します。置き換えるには overwrite:true を渡してください。確認フォームによる確認、または人間の同意後の confirm:true を伴う破壊的操作ポリシーが適用されます。
Selectel のプールとストレージクラス
ru-1 と ru-3 はサンクトペテルブルク、ru-6(Multi-AZ)、ru-7、gis-1(隔離された GIS)はモスクワ、uz-2 はウズベキスタンです。SigV4 のリージョンはプールと同じです。デフォルトでは path-style を使用します。エンドポイントと互換性。
標準、コールド、アイス。アイスは ru-3 でのみ利用できます。クラスは作成時にパネルで選択し、後から変更できません。create_bucket ではクラスを指定できません。2.56/1.25/0.89 ₽/GB・月からの料金は、2026-10 時点の所有者による未検証の概要です。presigned の最大有効期間が 604800 秒であることも未確認です。ドキュメントには、リクエスト署名の有効期間は 15 分と記載されています。
オブジェクトは最大 50 TB、単一の PUT は最大 5 GB、multipart は最大 10000 パーツです。バケットあたりのリクエスト数/秒は、合計 2000、GET+HEAD 1000、POST 200、PUT と DELETE はそれぞれ 300 です。上限を超えると 429 が返されます。TTL はパネルで設定し、新しいオブジェクトに適用されます。
FAQ
MCP 用の Selectel S3 リージョンはどのように選択しますか? SELECTEL_S3_POOL を指定するか、互換性テーブルに記載された識別子を使って --pool フラグを指定します。プールはバケットのプールと一致している必要があります。デフォルト値は ru-1 です。
この MCP サーバーを使って Selectel のライフサイクルやタグを設定できますか? プロジェクトプロファイルではこれらの機能が無効になっているため、該当するツールは登録されません。パネルでの TTL 設定については、Selectel の調査を参照してください。
Selectel S3 からバックアップを復元するにはどうすればよいですか? stat を実行し、その後 cp s3://bucket/key ./new-file を使用してください。CLI はストリーム形式でダウンロードし、ローカルファイルをアトミックに公開します。新しいパスを指定すれば、既存のアーカイブを置き換えずに済みます。
MCP サーバーとは何ですか? エージェントに Model Context Protocol を通じてツールとリソースを提供するプログラムです。ここでは stdio を使用します。
MCP サーバーを Claude Code に接続するにはどうすればよいですか? auth set でキーを保存してから、project install を実行するか、表示された user コマンドを使用します。
エージェントに S3 へのアクセスを許可しても安全ですか? キー、スコープ、権限レベルを制限してください。confirm/block を有効にし、破壊的な操作は内容を理解したうえで承認してください。
aws-cli や rclone との違いは何ですか? このバイナリは MCP、ゲート、監査、分析、skill、CLI をまとめて提供します。aws-cli/rclone は、引き続き単独で転送/自動化に使用できます。
ライフサイクルやタグが使えないのはなぜですか? Selectel S3 API が対応していないためです。新しいオブジェクトの TTL はパネルで設定します。タグはプロファイルで除外されています。
Другие провайдеры
Общий каталог: MCP-серверы и CLI для российских S3.
| Провайдер | Репозиторий | Сценарий |
|---|---|---|
| Selectel | selectel-s3-mcp-ai-cli | Выбор пула и восстановление резервных копий |
| Yandex Cloud | yandex-s3-mcp-ai-cli | Инвентаризация объектов и проверка версий бэкапов |
| VK Cloud | vkcloud-s3-mcp-ai-cli | Проверка Hotbox/Icebox и доступ к нужному региону |
| Cloud.ru | cloudru-s3-mcp-ai-cli | Диагностика доступа к Evolution Object Storage |
| Timeweb Cloud | timeweb-s3-mcp-ai-cli | Восстановление архивов и учёт объёма префикса |
| MWS | mws-s3-mcp-ai-cli | Проверка HMAC-доступа и короткие ссылки на архивы |
| Beget | beget-s3-mcp-ai-cli | Просмотр и восстановление файлов из готового бакета |
| Shared Go kit | s3-mcp-ai-cli-kit | Общие MCP, CLI, защиты и CI |
Лицензия
MIT. Проверенные факты и предположения.
Проверки в Docker: bash scripts/go.sh go test -race ./..., bash scripts/conformance.sh, bash scripts/mcp_smoke.sh, bash scripts/mutation_gate.sh, bash scripts/check_docs.sh. Conformance использует versitygw v1.8.0 и тестовые ключи.
Общие MCP/CLI, защиты и проверки поставляет s3-mcp-ai-cli-kit v0.1.0; в этом репозитории остаются встроенный профиль, тонкий main и документы Selectel.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。