Synology Chat

io.github.Louis-LastellaPublished by GitHub account Louis-Lastellav0.2.0Updated Oct 27, 2026

Read channels and posts, find users, send messages and files on any Synology Chat server.

Overview

AI-generated overview

MCP server for self-hosted Synology Chat: list channels and DMs, read recent posts, find users, and send messages or files.

What you can do
  • List joined channels and direct messages, with ids, names, types, members and unread counts
  • Find users by partial username and get the 1:1 DM channel id for a user
  • Read the most recent messages and files in a channel or DM
  • Post text messages to a channel or DM
  • Upload a local file to a channel, optionally with an accompanying message
When to use it
Useful when your team runs Synology Chat on a NAS and you want an assistant to read recent conversations, look up colleagues, or post messages and files into channels without setting up a bot or webhook.
Requirements
Runs locally via uvx from GitHub, a local clone, or the Docker image. Requires the Synology Chat base URL, a DSM username and password (SYNOLOGY_CHAT_PASS), all passed as environment variables. The account must not have two-factor authentication enabled. Network access to the NAS is needed; SYNOLOGY_CHAT_VERIFY_SSL can be set to false for self-signed certificates.
Before you install
The server stores a DSM account password in the client configuration (SYNOLOGY_CHAT_PASS) and logs in as that user, so it can see and post everything that user can. Sending messages and uploading files writes to real channels and DMs. Disabling SSL verification weakens transport security. Accounts with 2FA are unsupported, so a dedicated non-2FA account may be needed.

Installation

In SourceWeft

  1. Open Synology Chat in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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

ToolWhat 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:

VariableRequiredExample
SYNOLOGY_CHAT_URLyeshttps://chat.example.com, https://nas.local:5001, http://192.168.1.10:5000
SYNOLOGY_CHAT_USERyesDSM username
SYNOLOGY_CHAT_PASSyesDSM password
SYNOLOGY_CHAT_VERIFY_SSLnofalse 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):

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:

bash
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):

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:

json
{  "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_user only matches the username, not display names.
  • Downloading attachments is not a tool yet. The session is available via synology_chat_mcp._client().session; call GET /webapi/entry.cgi?api=SYNO.Chat.Post.File&method=get&version=2&post_id=<id>&_sid=<sid> with the header X-SYNO-TOKEN: <session.syno_token>.

Development

bash
uv syncuv run python tests/test_parse_url.py

License

MIT

Source: README.md at commit 7b8cbb6

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.0LatestOct 13, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts