Synology Chat
Read channels and posts, find users, send messages and files on any Synology Chat server.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
ghcr.io/louis-lastella/synology-chat-mcp:0.2.0claude mcp add synology-chat -e 'SYNOLOGY_CHAT_URL=<SYNOLOGY_CHAT_URL>' -e 'SYNOLOGY_CHAT_USER=<SYNOLOGY_CHAT_USER>' -e 'SYNOLOGY_CHAT_PASS=<your synology_chat_pass>' -e 'SYNOLOGY_CHAT_VERIFY_SSL=true' -- docker run -i --rm ghcr.io/louis-lastella/synology-chat-mcp:0.2.0
{
"mcpServers": {
"synology-chat": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/louis-lastella/synology-chat-mcp:0.2.0"
],
"env": {
"SYNOLOGY_CHAT_URL": "<SYNOLOGY_CHAT_URL>",
"SYNOLOGY_CHAT_USER": "<SYNOLOGY_CHAT_USER>",
"SYNOLOGY_CHAT_PASS": "<your synology_chat_pass>",
"SYNOLOGY_CHAT_VERIFY_SSL": "true"
}
}
}
}
Environment variables
SYNOLOGY_CHAT_URLrequired Base URL of your Synology Chat server, e.g. https://nas.example.com:5001SYNOLOGY_CHAT_USERrequired Username of the Synology account (no 2FA)SYNOLOGY_CHAT_PASSrequired secret Password of the Synology accountSYNOLOGY_CHAT_VERIFY_SSLSet to false for self-signed certificates
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
synology-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
Frequently asked questions
What is Synology Chat?
Read channels and posts, find users, send messages and files on any Synology Chat server.
How do I install Synology Chat?
It runs on your machine. In Claude Code: claude mcp add synology-chat -e 'SYNOLOGY_CHAT_URL=<SYNOLOGY_CHAT_URL>' -e 'SYNOLOGY_CHAT_USER=<SYNOLOGY_CHAT_USER>' -e 'SYNOLOGY_CHAT_PASS=<your synology_chat_pass>' -e 'SYNOLOGY_CHAT_VERIFY_SSL=true' -- docker run -i --rm ghcr.io/louis-lastella/synology-chat-mcp:0.2.0. For other clients, paste the JSON configuration from this page into their MCP settings.
Does Synology Chat need an API key?
Yes. It expects SYNOLOGY_CHAT_URL, SYNOLOGY_CHAT_USER, SYNOLOGY_CHAT_PASS, which you set in its configuration.
Is Synology Chat open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains Synology Chat?
It is published by Louis-Lastella. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.