mcp-server-synology
If you are the rightful owner of mcp-server-synology and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server for Synology NAS devices, enabling AI assistants to manage files and downloads through secure authentication and session management.
š¾ 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
- Add to your .env file:
ENABLE_XIAOZHI=true
XIAOZHI_TOKEN=your_xiaozhi_token_here
- 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 sessionssynology_login
- Authenticate with Synology NAS (conditional)synology_logout
- Logout from session (conditional)
š File System Operations
list_shares
- List all available NAS shareslist_directory
- List directory contents with metadatapath
(required): Directory path starting with/
get_file_info
- Get detailed file/directory informationpath
(required): File path starting with/
search_files
- Search files matching patternpath
(required): Search directorypattern
(required): Search pattern (e.g.,*.pdf
)
create_file
- Create new files with contentpath
(required): Full file path starting with/
content
(optional): File content (default: empty string)overwrite
(optional): Overwrite existing files (default: false)
create_directory
- Create new directoriesfolder_path
(required): Parent directory path starting with/
name
(required): New directory nameforce_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 directoriespath
(required): Current file pathnew_name
(required): New filename
move_file
- Move files to new locationsource_path
(required): Source file pathdestination_path
(required): Destination pathoverwrite
(optional): Overwrite existing files
š„ Download Station Management
ds_get_info
- Get Download Station informationds_list_tasks
- List all download tasks with statusoffset
(optional): Pagination offsetlimit
(optional): Max tasks to return
ds_create_task
- Create new download taskuri
(required): Download URL or magnet linkdestination
(optional): Download folder path
ds_pause_tasks
- Pause download taskstask_ids
(required): Array of task IDs
ds_resume_tasks
- Resume paused taskstask_ids
(required): Array of task IDs
ds_delete_tasks
- Delete download taskstask_ids
(required): Array of task IDsforce_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
// 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
// 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
// Create download task
{
"uri": "https://example.com/file.zip",
"destination": "/volume1/downloads"
}
// Pause tasks
{
"task_ids": ["dbid_123", "dbid_456"]
}
𦦠Download Results
⨠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! š