Synology NAS Connector
Provides read-only access to selected Synology NAS folders through MCP tools for listing directories, searching filenames, retrieving file metadata, and reading bounded UTF-8 text documents, with DSM package lifecycle and a local management dashboard.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Synology NAS Connectorlist the files in my Documents folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Synology NAS Connector for ChatGPT
Independent, MIT-licensed v0.1 developer preview. A read-only MCP server for selected NAS folders, a portable Node.js core, a DSM dashboard, and a reproducible DSM .spk builder. No OpenAI API key, DSM password, file upload, outbound relay, telemetry or inference calls are required.
Implemented: folder listing, filename search, metadata, bounded UTF-8 document reads; MCP stdio and stateless Streamable HTTP; bearer-token development authentication; DSM package lifecycle. Build 0002 adds an authenticated management bridge, graphical share selection and live policy revocation, pending real DSM CGI validation.
Planned: production MCP OAuth, account pairing, Sign in with ChatGPT, public plugin distribution and an optional outbound relay. These features are visibly disabled. A .spk build is not proof of installation compatibility; real DSM testing remains a release gate.
Quick start
Use Node.js 22 (Node.js 24 is also covered by CI) and Python 3 for packaging.
npm ci
npm run initEdit .local/config.json; new configurations have no roots. Add only specific folders:
"roots": [{"id": "documents", "label": "Documents", "path": "/absolute/path/to/selected/folder"}]Keep the token file private, owned by the service user, with mode 0600. The generated configuration binds to 127.0.0.1 and permits only the two local dashboard origins.
npm run check
npm run build
node dist/server.cjs --config .local/config.jsonOpen http://127.0.0.1:8787. Enter the locally generated token from .local/token to see service status and allowed folder aliases. Copy it locally; never commit it. The dashboard stores no credentials. Root access is configured by editing the private config and restarting, rather than granting file permissions from a browser.
Related MCP server: File Server MCP
Local MCP clients
Use an absolute server and config path in a client that supports stdio:
{
"mcpServers": {
"synology-nas": {
"command": "node",
"args": ["/absolute/path/to/dist/server.cjs", "--stdio", "--config", "/absolute/path/to/.local/config.json"]
}
}
}Stdio trusts the local spawning process and OS identity; it does not require a bearer token. It uses the same root policy and core as HTTP and DSM. This configuration example is for clients that accept this format; it is not a claimed ChatGPT desktop configuration.
HTTP clients use POST /mcp with Authorization: Bearer <local-token> and MCP transport headers. There is no legacy SSE transport. Static tokens are for local/self-hosted development, not a completed public ChatGPT authentication flow.
Tool | Inputs | Result |
| none | allowed root IDs and labels |
|
| entries, |
|
| matching files, partial-coverage indicators |
|
| type, bytes, modification time |
|
| text, line range, trust marker |
Text support: .txt, .md, .csv, .tsv, .json, .xml, .yaml, .yml, .log, .rst, strictly UTF-8. PDF, DOCX, spreadsheets, OCR and archives are outside v0.1. Search matches filenames only and does not index file contents. Default directory scans stop at 5,000 examined entries; tool output is capped at 200 entries. Use nextOffset for another directory page. scanTruncated means the scan budget stopped discovery; further pages cannot recover unscanned entries. Pagination is not a snapshot if the directory changes. There is no persistent search index.
Docker
After generating .local, set http.host to 0.0.0.0 inside the container config, and use /data/documents as the root path. Keep tokenFile as token, allowed hosts as 127.0.0.1/localhost, and the local dashboard origins. Compose publishes only on the host loopback interface and mounts both config and documents read-only.
NAS_UID=$(id -u) NAS_GID=$(id -g) docker compose up --buildThe selected UID/GID must own .local/token and be able to traverse the mounted directories. Linux Docker uses descriptor-relative file access. The image runs without root, capabilities or a writable root filesystem. No Docker daemon is required for native local development.
DSM package
npm run build
npm run spk
npm run test:spkOutput: artifacts/SynologyNASConnector-0.1.0-0002-noarch.spk and its SHA-256 checksum. See DSM management preview for the new setup flow and device-validation limits. The original installation guide also documents manual/local diagnostics.
Project layout
packages/core/ filesystem policy, limits, config; no DSM or MCP dependency
packages/auth/ local-token authentication and future OAuth adapter contract
packages/management/ signed bridge, share catalog and private configuration service
apps/server/ MCP tool definitions, HTTP transport, stdio CLI
apps/dsm-ui/ static dashboard served locally and packaged for DSM
apps/dsm-bridge/ authenticated DSM CGI bridge; no DSM credentials forwarded
packaging/synology/ INFO, privilege policy, lifecycle scripts and DSM launcher
scripts/ portable bundle, SPK builder, package and Docker verification
tests/ policy, authentication and real MCP SDK client tests
docs/ architecture, installation, integration evidence, threat modelGitHub Actions tests on Linux with Node.js 22/24, builds and verifies .spk, uploads package artifacts, audits production dependencies, and builds/smoke-tests Docker. Source is published at sammkoo/synology-nas-connector. No release is published automatically; production promotion requires the product acceptance evidence.
See architecture, verified OpenAI integration points, security, verification record, and contributing.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server exposing a user ORANO library to their own AI agent.
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Search and retrieve published Alkemata articles, pages, and guidance through a read-only MCP server.
Public read-only MCP for products, frameworks, guides, methodology, and blog metadata.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceHosted filesystem MCP server over HTTP with auth. Enables reading, writing, editing, searching, and listing files via MCP tools like grep, glob, and tree.-
- FlicenseAqualityDmaintenanceEnables accessing and managing files from configured folders with filtering and size limits, allowing listing, reading, and searching files via MCP tools and resources.3-
- FlicenseNot gradedqualityCmaintenanceRead-only MCP server for AI clients to browse and search project files securely, with configurable permissions, virtual paths, and key-based access.-
- AlicenseNot gradedqualityBmaintenanceA security-first, read-only MCP server that lets clients browse and read text, PDF, and XLSX files from an explicit allowlist of local folders, with strict path and secret protections.MIT