6.6 KiB
Tool Reference
This document describes all MCP tools provided by mcp-synology-container.
Tools marked confirmation required will return a description of the action and ask you to call the tool again with confirmed=True before executing. This prevents accidental destructive operations.
Project Tools
list_projects
List all Container Manager projects with their current status.
Parameters: none
Returns: Formatted table with project name, status, path, and container count.
Example output:
Projects:
myapp
Status: RUNNING
Path: /volume1/docker/myapp
Containers: 2
database
Status: STOPPED
Path: /volume1/docker/database
Containers: 0
get_project_status
Get detailed status of a specific project.
Parameters:
project_name(string, required): Name of the project
Returns: Detailed status including ID, path, timestamps, container IDs, and services.
start_project
Start a stopped Container Manager project.
Parameters:
project_name(string, required): Name of the project to start
Returns: Success or error message.
stop_project
Stop a running Container Manager project. Stops all containers in the project.
Confirmation required.
Parameters:
project_name(string, required): Name of the project to stopconfirmed(boolean, defaultfalse): Set totrueto confirm
Returns: Confirmation prompt or success message.
redeploy_project
Redeploy a project by pulling latest images, stopping, and restarting.
Confirmation required.
Parameters:
project_name(string, required): Name of the project to redeployconfirmed(boolean, defaultfalse): Set totrueto confirm
Steps performed:
- Pull latest images (
SYNO.Docker.Projectbuild) - Stop all containers
- Start all containers
Returns: Confirmation prompt or step-by-step progress output.
Container Tools
list_containers
List containers, optionally filtered by project.
Parameters:
project_name(string, optional): Filter by project name. Lists all containers if omitted.
Returns: Formatted list with container name, status, and image.
get_container_status
Get detailed status and resource information for a container.
Parameters:
container_name(string, required): Name of the container
Returns: Status, running state, image, start/stop times, memory limits, and environment variable count.
get_container_logs
Fetch log output from a container.
Parameters:
container_name(string, required): Name of the containertail(integer, default100): Number of recent log lines to returnkeyword(string, optional): Filter logs to lines containing this keyword
Returns: Log lines with timestamps and stream tags (stdout/stderr).
Example:
Logs for myapp_web (showing 50 of 312):
2025-01-01T10:00:00Z [stdout] Server started on port 8080
2025-01-01T10:00:01Z [stderr] Warning: deprecated config option
exec_in_container
Execute a shell command in a running container.
Confirmation required.
Parameters:
container_name(string, required): Name of the containercommand(string, required): Shell command to executeconfirmed(boolean, defaultfalse): Set totrueto confirm
Returns: Confirmation prompt, or exit code and command output.
Compose File Tools
Compose files are accessed via the Synology FileStation API. The server looks for the following filenames under {compose_base_path}/{project_name}/:
docker-compose.ymldocker-compose.yamlcompose.ymlcompose.yaml
read_compose
Read the compose file of a project.
Parameters:
project_name(string, required): Name of the project
Returns: File path and full YAML content.
update_image_tag
Update the image tag for a service in the compose file.
Confirmation required.
Parameters:
project_name(string, required): Name of the projectservice_name(string, required): Name of the service in the compose filenew_tag(string, required): New image tag (e.g."latest","1.2.3")confirmed(boolean, defaultfalse): Set totrueto confirm
Returns: Confirmation prompt showing before/after, or success message with redeploy suggestion.
Example confirmation prompt:
About to update service 'web' in project 'myapp':
Before: nginx:1.24
After: nginx:1.25
Call this tool again with confirmed=True to apply the change.
After applying: suggests running redeploy_project.
update_env_var
Add or update an environment variable for a service.
Confirmation required.
Parameters:
project_name(string, required): Name of the projectservice_name(string, required): Name of the servicevar_name(string, required): Environment variable namevar_value(string, required): New valueconfirmed(boolean, defaultfalse): Set totrueto confirm
Supports both list format (- KEY=VALUE) and dict format (KEY: VALUE) in the compose file.
After applying: suggests running redeploy_project.
update_compose
Replace the entire compose file with new content.
Confirmation required.
Parameters:
project_name(string, required): Name of the projectnew_content(string, required): Complete new YAML content (must contain aserviceskey)confirmed(boolean, defaultfalse): Set totrueto confirm
Validates that the content is valid YAML with a services key before writing.
After applying: suggests running redeploy_project.
Image Tools
check_image_updates
Check which images have updates available.
Parameters:
project_name(string, optional): Filter to images used by this project. Checks all images if omitted.
Returns: List of images with update status. Images with the upgradable flag from the NAS are highlighted.
Example output:
Image update status for project 'myapp':
Updates available (1):
nginx:1.24 (50 MiB) ← UPDATE AVAILABLE
Up to date (1):
postgres:15 (80 MiB)
Confirmation Pattern
Tools that modify state require confirmation to prevent accidents. The pattern is:
-
Call the tool without
confirmed:stop_project(project_name="myapp")Returns a description of what will happen.
-
Call again with
confirmed=True:stop_project(project_name="myapp", confirmed=True)Executes the operation.
This applies to: stop_project, redeploy_project, exec_in_container, update_image_tag, update_env_var, update_compose.