FTP MCP Server
by nao9net
README.md
# FTP MCP Server(マルチサーバー対応版)
複数のFTPサーバーに、1つのMCPサーバーからまとめてファイルをアップロード/一覧/削除するためのローカルサーバーです。
各ツール呼び出し時に `server` パラメータ(エイリアス)でどのサーバーを操作するか指定します。
アップロード対象はローカルの絶対パスで指定し、ファイルの中身そのものはツール呼び出しの引数に含めません
(画像などバイナリデータをLLMのコンテキストに載せずに済ませるため)。
主な用途: 生成した画像をWebサーバー上の公開フォルダにアップロードし、そのURLを
`wp_upload_media_from_url`(wp-mcp)に渡してWordPressのメディアライブラリに正式登録する、
という2段階のフローの前段。
---
## 1. セットアップ
```bash
cd ftp-mcp
npm install
```
`servers.json.example` を `servers.json` にコピーして、管理する全サーバーの情報を書きます
(**このファイルには全サーバーの認証情報が入るので、絶対に公開・共有・Gitコミットしないでください**。
`.gitignore` に含めています)。
```bash
cp servers.json.example servers.json
```
```json
{
"mysite": {
"host": "ftp.example.com",
"user": "user@example.com",
"password": "xxxxxxxx",
"base_path": "/resource",
"public_base_url": "https://example.com/resource"
}
}
```
- `base_path`: このサーバーのアップロード先ルートフォルダ(FTPのルートからの絶対パス)。
すべてのツールはこの `base_path` を起点にした相対パスでファイルを指定します。
- `public_base_url`: `base_path` に対応する公開URLのベース。アップロード後にこれと相対パスを
結合したURLを返します。
- `port`(省略可・デフォルト21)、`secure`(省略可・デフォルトfalse。FTPS(暗黙的TLS)を使う場合はtrue)。
## 2. Claude Codeへの登録
Claude Codeを使っているプロジェクトのルートフォルダ内で `.mcp.json` にmcpサーバーの情報を追加します。
```json
{
"mcpServers": {
"ftp": {
"command": "node",
"args": ["/MCPの保存パス/ftp-mcp/index.js"],
"env": {
"SERVERS_CONFIG_PATH": "/MCPの保存パス/ftp-mcp/servers.json"
}
}
}
}
```
## 3. 提供ツール
- `ftp_list_servers` — 設定済みサーバー一覧(エイリアス・ホスト・base_path・public_base_url)を取得
- `ftp_upload_file` — ローカルファイル(絶対パス)をアップロードし、公開URLを返す。
`remote_path` に含まれるサブフォルダは自動作成される
- `ftp_list_files` — `base_path` 起点の指定フォルダ内のファイル一覧を取得
- `ftp_delete_file` — `base_path` 起点の相対パスを指定してファイルを削除
(WordPressメディアライブラリへの取り込み後、一時ファイルを掃除する用途を想定)
## 補足
- 依存ライブラリは [`basic-ftp`](https://www.npmjs.com/package/basic-ftp) を使用(FTP/FTPS対応、Promiseベース)。
- `remote_path` に `..` を含むパスはエラーになります(base_path外への書き込み・削除を防ぐため)。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues