About Synology Chat
Synology Chat is an MCP server for self-hosted Synology Chat instances, enabling users to work with channels, direct messages and users from an MCP client. It logs in as a regular DSM user through the Synology Web API, so access follows that account's Chat visibility without bot or webhook setup.
Key features
- 01List joined channels and DMs
- 02Read recent posts and files
- 03Find users by username
- 04Send messages to channels or DMs
- 05Upload local files
Use cases
- 01Review recent channel conversations
- 02Find a user and locate a DM
- 03Send a message from an MCP client
- 04Share a local file in a conversation
MCP support
The MCP server exposes tools to list channels and DMs, read recent posts, find users, send messages and upload files on a Synology Chat instance.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
docker run -i --rm -e SYNOLOGY_CHAT_URL -e SYNOLOGY_CHAT_USER -e SYNOLOGY_CHAT_PASS -e SYNOLOGY_CHAT_VERIFY_SSL ghcr.io/louis-lastella/synology-chat-mcp:0.2.0SYNOLOGY_CHAT_URLBase URL of your Synology Chat server, e.g. https://nas.example.com:5001SYNOLOGY_CHAT_USERUsername of the Synology account (no 2FA)SYNOLOGY_CHAT_PASSSecretPassword of the Synology accountSYNOLOGY_CHAT_VERIFY_SSLSet to false for self-signed certificatesLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
ghcr.io/louis-lastella/synology-chat-mcp:0.2.0stdioTools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEsynology-chat-mcp
MCP server for Synology Chat. Works with any self-hosted Synology Chat instance: list channels, read recent posts, find users, send messages and upload files from any MCP client (Claude Desktop, Claude Code, Hermes, ...).
It logs in as a normal DSM user through the Synology Web API, so it sees exactly what that user sees in Chat (channels and DMs), no bot or webhook setup needed.
Tools
| Tool | What it does |
|---|---|
list_channels() | Joined channels and DMs (id, name, type, members, unread) |
find_user(name_query) | Find users by partial username |
get_recent_posts(channel_id, limit=20) | Most recent messages/files in a channel or DM |
dm_channel_for_user(user_id) | 1:1 DM channel id for a user, or null if none exists yet |
send_message(channel_id, message) | Post a text message |
send_file(channel_id, file_path, message="") | Upload a local file, optionally followed by a message |
Configuration
All config comes from environment variables, set them in your MCP client config:
| Variable | Required | Example |
|---|---|---|
SYNOLOGY_CHAT_URL | yes | https://chat.example.com, https://nas.local:5001, http://192.168.1.10:5000 |
SYNOLOGY_CHAT_USER | yes | DSM username |
SYNOLOGY_CHAT_PASS | yes | DSM password |
SYNOLOGY_CHAT_VERIFY_SSL | no | false for self-signed certificates (default true) |
A URL without scheme means https, without port it uses 443 (https) or 80 (http).
Install
Needs uv. No clone required, uvx runs it straight from GitHub.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"synology-chat": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Louis-Lastella/synology-chat-mcp", "synology-chat-mcp"],
"env": {
"SYNOLOGY_CHAT_URL": "https://chat.example.com",
"SYNOLOGY_CHAT_USER": "your-username",
"SYNOLOGY_CHAT_PASS": "your-password"
}
}
}
}
Claude Code:
claude mcp add synology-chat \
-e SYNOLOGY_CHAT_URL=https://chat.example.com \
-e SYNOLOGY_CHAT_USER=your-username \
-e SYNOLOGY_CHAT_PASS=your-password \
-- uvx --from git+https://github.com/Louis-Lastella/synology-chat-mcp synology-chat-mcp
Hermes (~/.hermes/config.yaml):
mcp_servers:
synology-chat:
command: uvx
args: [--from, git+https://github.com/Louis-Lastella/synology-chat-mcp, synology-chat-mcp]
env:
SYNOLOGY_CHAT_URL: https://chat.example.com
SYNOLOGY_CHAT_USER: your-username
SYNOLOGY_CHAT_PASS: your-password
From a local clone instead: git clone, uv sync, then use uv with args --directory /path/to/synology-chat-mcp run synology-chat-mcp.
Docker (no uv needed), image ghcr.io/louis-lastella/synology-chat-mcp:
{
"mcpServers": {
"synology-chat": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "SYNOLOGY_CHAT_URL", "-e", "SYNOLOGY_CHAT_USER", "-e", "SYNOLOGY_CHAT_PASS",
"ghcr.io/louis-lastella/synology-chat-mcp"],
"env": {
"SYNOLOGY_CHAT_URL": "https://chat.example.com",
"SYNOLOGY_CHAT_USER": "your-username",
"SYNOLOGY_CHAT_PASS": "your-password"
}
}
}
}
Also listed in the official MCP Registry as io.github.Louis-Lastella/synology-chat-mcp.
Notes
- Accounts with 2-factor authentication are not supported (the Web API wants a fresh OTP per login). Use an account without 2FA.
- DMs show up with type
anonymous, that is Synology's name for 1:1 conversations. find_useronly matches theusername, not display names.- Downloading attachments is not a tool yet. The session is available via
synology_chat_mcp._client().session; callGET /webapi/entry.cgi?api=SYNO.Chat.Post.File&method=get&version=2&post_id=<id>&_sid=<sid>with the headerX-SYNO-TOKEN: <session.syno_token>.
Development
uv sync
uv run python tests/test_parse_url.py
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.