Skip to main content

A Model Context Protocol (MCP) server for Synology NAS devices

Project description

๐Ÿ’พ Synology MCP Server

Synology MCP Server

A Model Context Protocol (MCP) server for Synology NAS devices. Enables AI assistants to manage files and downloads through secure authentication and session management.

๐ŸŒŸ NEW: Unified server supports both Claude/Cursor (stdio) and Xiaozhi (WebSocket) simultaneously!

๐Ÿš€ Quick Start with Docker

1๏ธโƒฃ Setup Environment

# Clone repository
git clone https://github.com/atom2ueki/mcp-server-synology.git
cd mcp-server-synology

# Create environment file
cp env.example .env

2๏ธโƒฃ Configure .env File

Basic Configuration (Claude/Cursor only):

# Required: Synology NAS connection
SYNOLOGY_URL=http://192.168.1.100:5000
SYNOLOGY_USERNAME=your_username
SYNOLOGY_PASSWORD=your_password

# Optional: Auto-login on startup
AUTO_LOGIN=true
VERIFY_SSL=false

Extended Configuration (Both Claude/Cursor + Xiaozhi):

# Required: Synology NAS connection
SYNOLOGY_URL=http://192.168.1.100:5000
SYNOLOGY_USERNAME=your_username
SYNOLOGY_PASSWORD=your_password

# Optional: Auto-login on startup
AUTO_LOGIN=true
VERIFY_SSL=false

# Enable Xiaozhi support
ENABLE_XIAOZHI=true
XIAOZHI_TOKEN=your_xiaozhi_token_here
XIAOZHI_MCP_ENDPOINT=wss://api.xiaozhi.me/mcp/

3๏ธโƒฃ Run with Docker

One simple command supports both modes:

# Claude/Cursor only mode (default if ENABLE_XIAOZHI not set)
docker-compose up -d

# Both Claude/Cursor + Xiaozhi mode (if ENABLE_XIAOZHI=true in .env)
docker-compose up -d

# Build and run
docker-compose up -d --build

4๏ธโƒฃ Alternative: Local Python

# Install dependencies
pip install -r requirements.txt

# Run with environment control
python main.py

๐Ÿ”Œ Client Setup

๐Ÿค– Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "synology": {
      "command": "docker-compose",
      "args": [
        "-f", "/path/to/your/mcp-server-synology/docker-compose.yml",
        "run", "--rm", "synology-mcp"
      ],
      "cwd": "/path/to/your/mcp-server-synology"
    }
  }
}

โ†—๏ธ Cursor

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "synology": {
      "command": "docker-compose",
      "args": [
        "-f", "/path/to/your/mcp-server-synology/docker-compose.yml",
        "run", "--rm", "synology-mcp"
      ],
      "cwd": "/path/to/your/mcp-server-synology"
    }
  }
}

๐Ÿ”„ Continue (VS Code Extension)

Add to your Continue configuration (.continue/config.json):

{
  "mcpServers": {
    "synology": {
      "command": "docker-compose",
      "args": [
        "-f", "/path/to/your/mcp-server-synology/docker-compose.yml",
        "run", "--rm", "synology-mcp"
      ],
      "cwd": "/path/to/your/mcp-server-synology"
    }
  }
}

๐Ÿ’ป Codeium

For Codeium's MCP support:

{
  "mcpServers": {
    "synology": {
      "command": "docker-compose",
      "args": [
        "-f", "/path/to/your/mcp-server-synology/docker-compose.yml",
        "run", "--rm", "synology-mcp"
      ],
      "cwd": "/path/to/your/mcp-server-synology"
    }
  }
}

๐Ÿ Alternative: Direct Python Execution

If you prefer not to use Docker:

{
  "mcpServers": {
    "synology": {
      "command": "python",
      "args": ["main.py"],
      "cwd": "/path/to/your/mcp-server-synology",
      "env": {
        "SYNOLOGY_URL": "http://192.168.1.100:5000",
        "SYNOLOGY_USERNAME": "your_username",
        "SYNOLOGY_PASSWORD": "your_password",
        "AUTO_LOGIN": "true",
        "ENABLE_XIAOZHI": "false"
      }
    }
  }
}

๐ŸŒŸ Xiaozhi Integration

New unified architecture supports both clients simultaneously!

How It Works

  • ENABLE_XIAOZHI=false (default): Standard MCP server for Claude/Cursor via stdio
  • ENABLE_XIAOZHI=true: Multi-client bridge supporting both:
    • ๐Ÿ“ก Xiaozhi: WebSocket connection
    • ๐Ÿ’ป Claude/Cursor: stdio connection

Setup Steps

  1. Add to your .env file:
ENABLE_XIAOZHI=true
XIAOZHI_TOKEN=your_xiaozhi_token_here
  1. Run normally:
# Same command, different behavior based on environment
python main.py
# OR
docker-compose up

Key Features

  • โœ… Zero Configuration Conflicts: One server, multiple clients
  • โœ… Parallel Operation: Both clients can work simultaneously
  • โœ… All Tools Available: Xiaozhi gets access to all Synology MCP tools
  • โœ… Backward Compatible: Existing setups work unchanged
  • โœ… Auto-Reconnection: Handles WebSocket connection drops
  • โœ… Environment Controlled: Simple boolean flag to enable/disable

Startup Messages

Claude/Cursor only mode:

๐Ÿš€ Synology MCP Server
==============================
๐Ÿ“Œ Claude/Cursor only mode (ENABLE_XIAOZHI=false)

Both clients mode:

๐Ÿš€ Synology MCP Server with Xiaozhi Bridge
==================================================
๐ŸŒŸ Supports BOTH Xiaozhi and Claude/Cursor simultaneously!

๐Ÿ› ๏ธ Available MCP Tools

๐Ÿ” Authentication

  • synology_status - Check authentication status and active sessions
  • synology_login - Authenticate with Synology NAS (conditional)
  • synology_logout - Logout from session (conditional)

๐Ÿ“ File System Operations

  • list_shares - List all available NAS shares
  • list_directory - List directory contents with metadata
    • path (required): Directory path starting with /
  • get_file_info - Get detailed file/directory information
    • path (required): File path starting with /
  • search_files - Search files matching pattern
    • path (required): Search directory
    • pattern (required): Search pattern (e.g., *.pdf)
  • create_file - Create new files with content
    • path (required): Full file path starting with /
    • content (optional): File content (default: empty string)
    • overwrite (optional): Overwrite existing files (default: false)
  • create_directory - Create new directories
    • folder_path (required): Parent directory path starting with /
    • name (required): New directory name
    • force_parent (optional): Create parent directories if needed (default: false)
  • delete - Delete files or directories (auto-detects type)
    • path (required): File/directory path starting with /
  • rename_file - Rename files or directories
    • path (required): Current file path
    • new_name (required): New filename
  • move_file - Move files to new location
    • source_path (required): Source file path
    • destination_path (required): Destination path
    • overwrite (optional): Overwrite existing files

๐Ÿ“ฅ Download Station Management

  • ds_get_info - Get Download Station information
  • ds_list_tasks - List all download tasks with status
    • offset (optional): Pagination offset
    • limit (optional): Max tasks to return
  • ds_create_task - Create new download task
    • uri (required): Download URL or magnet link
    • destination (optional): Download folder path
  • ds_pause_tasks - Pause download tasks
    • task_ids (required): Array of task IDs
  • ds_resume_tasks - Resume paused tasks
    • task_ids (required): Array of task IDs
  • ds_delete_tasks - Delete download tasks
    • task_ids (required): Array of task IDs
    • force_complete (optional): Force delete completed
  • ds_get_statistics - Get download/upload statistics

โš™๏ธ Configuration Options

Variable Required Default Description
SYNOLOGY_URL Yes* - NAS base URL (e.g., http://192.168.1.100:5000)
SYNOLOGY_USERNAME Yes* - Username for authentication
SYNOLOGY_PASSWORD Yes* - Password for authentication
AUTO_LOGIN No true Auto-login on server start
VERIFY_SSL No true Verify SSL certificates
DEBUG No false Enable debug logging
ENABLE_XIAOZHI No false Enable Xiaozhi WebSocket bridge
XIAOZHI_TOKEN Xiaozhi only - Authentication token for Xiaozhi
XIAOZHI_MCP_ENDPOINT No wss://api.xiaozhi.me/mcp/ Xiaozhi WebSocket endpoint

*Required for auto-login and default operations

๐Ÿ“– Usage Examples

๐Ÿ“ File Operations

โœ… Creating Files and Directories

File Creation

// List directory
{
  "path": "/volume1/homes"
}

// Search for PDFs
{
  "path": "/volume1/documents", 
  "pattern": "*.pdf"
}

// Create new file
{
  "path": "/volume1/documents/notes.txt",
  "content": "My important notes\nLine 2 of notes",
  "overwrite": false
}

๐Ÿ—‘๏ธ Deleting Files and Directories

File Deletion

// Delete file or directory (auto-detects type)
{
  "path": "/volume1/temp/old-file.txt"
}

// Move file
{
  "source_path": "/volume1/temp/file.txt",
  "destination_path": "/volume1/archive/file.txt"
}

โฌ‡๏ธ Download Management

๐Ÿ› ๏ธ Creating a Download Task

Download Sample

// Create download task
{
  "uri": "https://example.com/file.zip",
  "destination": "/volume1/downloads"
}

// Pause tasks
{
  "task_ids": ["dbid_123", "dbid_456"]
}

๐Ÿฆฆ Download Results

Download Result

โœจ Features

  • โœ… Unified Entry Point - Single main.py supports both stdio and WebSocket clients
  • โœ… Environment Controlled - Switch modes via ENABLE_XIAOZHI environment variable
  • โœ… Multi-Client Support - Simultaneous Claude/Cursor + Xiaozhi access
  • โœ… Secure Authentication - RSA encrypted password transmission
  • โœ… Session Management - Persistent sessions across multiple NAS devices
  • โœ… Complete File Operations - Create, delete, list, search, rename, move files with detailed metadata
  • โœ… Directory Management - Recursive directory operations with safety checks
  • โœ… Download Station - Complete torrent and download management
  • โœ… Docker Support - Easy containerized deployment
  • โœ… Backward Compatible - Existing configurations work unchanged
  • โœ… Error Handling - Comprehensive error reporting and recovery

๐Ÿ—๏ธ Architecture

File Structure

mcp-server-synology/
โ”œโ”€โ”€ main.py                    # ๐ŸŽฏ Unified entry point
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ mcp_server.py         # Standard MCP server
โ”‚   โ”œโ”€โ”€ multiclient_bridge.py # Multi-client bridge
โ”‚   โ”œโ”€โ”€ auth/                 # Authentication modules
โ”‚   โ”œโ”€โ”€ filestation/          # File operations
โ”‚   โ””โ”€โ”€ downloadstation/      # Download management
โ”œโ”€โ”€ docker-compose.yml        # Single service, environment-controlled
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ requirements.txt
โ””โ”€โ”€ .env                      # Configuration

Mode Selection

  • ENABLE_XIAOZHI=false โ†’ main.py โ†’ mcp_server.py (stdio only)
  • ENABLE_XIAOZHI=true โ†’ main.py โ†’ multiclient_bridge.py โ†’ mcp_server.py (both clients)

Perfect for any workflow - from simple Claude/Cursor usage to advanced multi-client setups! ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_atom2ueki_mcp_server_synology-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_atom2ueki_mcp_server_synology-0.1.0.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_atom2ueki_mcp_server_synology-0.1.0.tar.gz
Algorithm Hash digest
SHA256 afc4183b6e37e73c4df42ae2fe4d501ff4faac30721c9ab8f8905f272a73e6dc
MD5 f10ee2b06eb82a456d17ead2c03c5ea4
BLAKE2b-256 80d65e9938c4d2795d37bd235e14f0c08a80bae7d73532416180dc7339049782

See more details on using hashes here.

File details

Details for the file iflow_mcp_atom2ueki_mcp_server_synology-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_atom2ueki_mcp_server_synology-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_atom2ueki_mcp_server_synology-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc32327503c4251252dff39ba3314222e80b41515715c4c0f81b952387717935
MD5 ab65e81875e420011aa56561f5ac0024
BLAKE2b-256 ee668fc02838b3c10e3b65fcdf85f6ad687d452588cf41cd3a309374c11c1204

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page