Security and access policy

Token permissions are the ceiling. trello-mcp adds workspace restrictions, ownership checks, an optional read-only mode and confined attachment transfers.

Workspace allowlist and object ownership

TRELLO_ALLOWED_WORKSPACES accepts comma-separated workspace ids or canonical names, not display names. Unset means unrestricted within your token's permissions. This is additional server policy, not a replacement for token permissions.

Trello has no atomic authorization-and-mutation API, so local checks cannot prevent concurrent upstream moves between verification and mutation.

Writes are enabled by default; read-only is opt-in

"/absolute/path/to/trello-mcp" auth --read-only

Use the absolute path the installer printed. In Claude Desktop, create the token with scope=read for read-only access at Trello; the extension's read-only setting only hides write tools in this server.

Alternatively set TRELLO_READ_ONLY=1 in the server's environment. It hides all 29 mutation and transfer tools, including downloads that write local files. The 19 reads and local-selection tools remain eligible, subject to your tool profile.

A saved scope=read token implies read-only mode even with TRELLO_READ_ONLY=0. workspace_use and board_use still change local defaults. TRELLO_TOOLS selects comma-separated tool names or prefix groups; unknown selectors fail startup. The ten-tool read-oriented profile is in the setup guide.

Discover the effective access policy

MCP initialization instructions carry a compact policy summary and point to policy health. If a tool is hidden or an operation is refused, call server_health with:

{"detail":"policy"}

Health is local configuration, not validated Trello authentication. Basic/detailed report credentialSource as env, file or none, and configured responses include access: "unverified; call workspace_find". Metadata and policy exist only with credentials; unconfigured details return the setup response. Use workspace_find {} for a real Trello read. Empty success proves the read worked, not that a workspace selector matches. A permitted board_find can serve profiles without workspace_find; health-only profiles cannot verify access. Change the profile/reconnect if appropriate, never bypass restrictions. Desktop users need no CLI auth/status; CLI status describes that invocation, not Desktop credentials. Policy labels are best effort, not auth validation.

Policy health reports the allowlist, read-only state, credential scope, tool profile, enabled tool count, hidden write tools and the upload and download settings. Policy denials say they are server policy, not a token error. Upstream failures use trello API: HTTP <status>; a configured 401 or 403 is a token or permission issue, never missing setup. Without credentials, only server_health is registered, with a hint to run the installer's absolute-path auth command or fill in Desktop extension settings.

Saved credentials

The default file is ~/.secrets/.trello-mcp.secret (%USERPROFILE%\.secrets\.trello-mcp.secret on Windows). MCP client configurations need only the executable path. Precedence is the complete environment pair, then an absolute TRELLO_MCP_CREDENTIALS file, then the default file, then the shared ~/.secrets.env.

The macOS and Windows amd64 Desktop extension uses OS secure storage, passing sensitive settings as environment variables. Linux Desktop is beta; secure storage is unverified. Updates are manual: verify the checksum, install, check settings, restart, verify access. Settings may not be retained. Remove/disable in Settings > Extensions, manage retained sensitive settings using supported controls and revoke Trello access separately. Uninstall promises no secure-storage deletion or revocation. CLI logout is not Desktop cleanup; never inspect/delete keychains or credential stores. The authorization template requests read/write for 30 days; renewal is human-only in browser/settings. Read-only and allowlist settings restrict this server, not token authority; use scope=read for read-only Trello access.

The storage format, permission rules, exact error messages with safe fixes, locking and manual setup are in the configuration reference.

Attachment uploads and downloads

Local path uploads are disabled until TRELLO_UPLOAD_DIR names an absolute, dedicated staging directory; only regular files inside it may be uploaded and symlinks are refused. Base64 uploads need fileName. Downloads go to a private directory (TRELLO_DOWNLOAD_DIR, default under the temporary directory), verify card ownership and attachment membership, refuse redirects and never overwrite files. Both directions are capped at 10 MiB and results never include inline file bodies.

Local path uploads and attachment downloads fail closed on Windows even with directories set; configuring directories cannot enable them. Base64 uploads and URL attachments remain alternatives subject to write/profile policy; the URL is passed to Trello, not fetched locally. Read-only mode hides every attachment transfer but keeps metadata discovery.

Defensive HTTP and response handling

Requests have deadlines, redirects are refused, credentials are scrubbed from errors and upstream error bodies are not returned. JSON responses are capped at 8 MiB. Results are compact text-only JSON. Rate limits and retries are bounded per process, but other clients sharing your credentials consume the same quota. After an ambiguous write failure do not repeat the operation blindly: it may already have succeeded.

See the tool reference and the setup guide.

Frequently asked questions

What is trello-mcp?

trello-mcp is an independent, GPL-3.0-or-later licensed Trello MCP server written in Go. It lets Model Context Protocol clients manage Trello boards, cards, checklists and attachments through a local stdio process, without a hosted intermediary.

Which clients can use this Trello MCP server?

The setup guide covers Claude Code, Claude Desktop, Codex CLI and desktop, ChatGPT desktop, OpenCode, Cursor and VS Code. ChatGPT in a browser cannot start a local stdio server. Codex and ChatGPT desktop share ~/.codex/config.toml.

How do I connect my Trello account?

Run the absolute-path auth command the installer prints yourself in a private terminal, then reconnect or restart your MCP client. Claude Desktop extension users enter the key and token in extension settings instead. Agents must not run auth in a terminal they capture or ask for keys, tokens or authorization links.

Are writes enabled by default?

Yes. trello-mcp auth defaults to write access: Enter at Allow write access? [Y/n] means yes. Use trello-mcp auth --read-only to request a read-only token, or TRELLO_READ_ONLY=1 to hide mutation and transfer tools. A saved read-only token cannot be upgraded by setting TRELLO_READ_ONLY=0.

Why does my client only show server_health?

Without configured credentials only server_health is registered. The human runs the installer's absolute-path auth command privately, or fills in Desktop extension settings, then reconnects/restarts. Until credentials exist every health detail returns only this setup response; version and policy fields need them. Configured health is local (credentialSource env/file, access "unverified; call workspace_find"), not validated auth: use workspace_find {} for a real read. Empty success still proves the read worked. Desktop users need no CLI auth/status.

Where are credentials stored?

CLI credentials use unquoted KEY=VALUE lines in ~/.secrets/.trello-mcp.secret. Unix directories/files are private (0700/0600); Windows uses protected owner-only ACLs. Unsafe ownership, permissions and symlinks are refused. Desktop sensitive settings use OS secure storage and reach the server as environment variables; Linux Desktop is beta with secure storage unverified. Updates, settings retention and removal are covered under Saved credentials above.

Does logout revoke my Trello token?

No. trello-mcp auth logout removes only the three Trello keys from the saved file, preserving unrelated lines. It never modifies ~/.secrets.env, revokes the token at Trello or unsets environment credentials. Revoke the token in your Trello account when needed and restart clients after logout.

Can I restrict access to specific workspaces?

Yes. TRELLO_ALLOWED_WORKSPACES accepts comma-separated workspace ids or canonical names, not display names. Unset means unrestricted within token permissions. The server resolves actual object ownership, so a supplied board id cannot bypass the allowlist. Moves and copies check both boards.

Does it discover guest boards?

board_find searches accessible open account boards, including guest boards visible to your token, unless workspaceId narrows the search; the optional allowlist still applies. Checked 2026-10-16: Atlassian's support guide describes comments, activity, custom fields and URL attachments, while its repository lists them as coming soon. The sources also differ on multi-workspace support. Current coverage was not independently verified; see both official sources.

Are the benchmark numbers live tokenizer measurements?

No. The README reports characters divided by four on synthetic fixtures, compared with pretty-printed raw Trello JSON. That raw JSON is a reproducible reference, not output from any other MCP server or live account. Tool-call requests, protocol framing and model tokenization are excluded.

Why is a tool hidden or an operation denied?

Call server_health with detail set to policy before assuming the token is broken. Tool selection, read-only mode, the workspace allowlist and platform transfer checks can refuse operations. Policy errors say they are server policy. A configured 401 is not missing setup: it can mean an expired or revoked token, a missing scope or no access to that object. If workspace_find {} succeeds, check object access or write scope; a 403 points to access, permissions or scopes. Keep server_health in custom TRELLO_TOOLS profiles.

Can I upload and download attachments on Windows?

Windows refuses local path uploads and attachment downloads even when directories are set; configuring directories cannot enable them because the ownership and path checks require Unix. Base64 uploads and URL attachments remain alternatives subject to write/profile policy. Transfers are capped at 10 MiB.

Does read-only mode prevent every local change?

No. Read-only mode hides Trello mutations and attachment transfers, including local-file downloads, but workspace_use and board_use can still change local defaults. Server policy does not replace a suitably scoped Trello token.

Is this the official Atlassian Trello MCP connector?

No. trello-mcp is an independent Go implementation. The MIT-licensed @delorenj/mcp-server-trello 1.8.1 is the tool-coverage reference, not a runtime dependency, and this project is not the Atlassian-hosted connector.