Filelayer

dev.filelayer/core

User files for a SaaS, under one person's authority: list, share with an expiry, revoke.

Connect this server

Add this to your MCP client config — claude_desktop_config.json (Claude Desktop) or .cursor/mcp.json (Cursor).Suits: Claude Desktop · Cursor.

{
  "mcpServers": {
    "core": {
      "command": "npx",
      "args": [
        "-y",
        "@filelayer/core@0.35.2"
      ],
      "env": {
        "DATABASE_URL": "<your DATABASE_URL>",
        "FILELAYER_AS": "<your FILELAYER_AS>",
        "FILELAYER_ORG": "<your FILELAYER_ORG>",
        "S3_REGION": "auto",
        "S3_ACCESS_KEY_ID": "<your S3_ACCESS_KEY_ID>",
        "S3_SECRET_ACCESS_KEY": "<your S3_SECRET_ACCESS_KEY>",
        "FILELAYER_MCP_AGENT_LABEL": "filelayer-mcp",
        "FILELAYER_MCP_ALLOW_DESTRUCTIVE": "false",
        "FILELAYER_MCP_EXPOSE_AUDIT": "false",
        "FILELAYER_MCP_RETURN_BYTES": "false"
      }
    }
  }
}
Environment variables
  • DATABASE_URLrequiredsecretYour own PostgreSQL, where this library keeps file ownership, grants and the audit chain. Apply node_modules/@filelayer/core/schema.sql once before starting.
  • FILELAYER_ASrequiredThe ONE subject this server speaks for, in your own id space. Fixed for the life of the process: no tool reads it as an argument and no tool can change it, which is the only reason exposing these tools to an agent is safe. Write it yourself or have your provisioning write it, never derive it from a conversation. Serving several people means starting several servers.
  • FILELAYER_ORGrequiredThe organisation this server is scoped to, in your own id space.
  • S3_REGIONRegion, or `auto` for Cloudflare R2.
  • S3_ACCESS_KEY_IDsecretAccess key id for the bucket.
  • S3_SECRET_ACCESS_KEYsecretSecret access key for the bucket.
  • FILELAYER_MCP_AGENT_LABELHow this agent names itself in the audit trail, recorded on every event these tools produce. It is what lets the chain separate "the partner opened this document" from "the partner's assistant opened this document".
  • FILELAYER_MCP_ALLOW_DESTRUCTIVESet to exactly `true` to register delete_file. Off by default because deleting is not recoverable and an agent that misreads a sentence deletes the wrong thing silently.
  • FILELAYER_MCP_EXPOSE_AUDITSet to exactly `true` to register file_audit. Off by default because the trail is an organisation's whole history and a tool that returns it copies every file name, actor and denial into the model's context. Reading it is itself audited since 0.27.0, which was the previous reason; the default did not move.
  • FILELAYER_MCP_RETURN_BYTESSet to exactly `true` to register read_file. Off by default because a document returned by a tool is a document copied into a model's context; file_info plus a share link is usually what was actually needed.

A starting point — check the repository for exact arguments and setup. Restart your client after editing the config.

Category
Other
Version
0.35.2
Registry
active
Published
11/3/2026
Browse all Other →

Add the badge to your site

Show visitors that Filelayer is listed here — it’s also the link we check for a free listing.

Filelayer — listed on Serverdex

HTML — for your website

<a href="https://serverdex.io/server/dev-filelayer-core?utm_source=badge"><img src="https://serverdex.io/brand/badge.svg" alt="Filelayer — listed on Serverdex" width="123" height="40" loading="lazy"></a>

Recommended. A dofollow link from your own domain is the one that counts for search engines, and it's the link we check for a free listing.

Markdown — for your README

[![Filelayer — listed on Serverdex](https://serverdex.io/brand/badge.svg)](https://serverdex.io/server/dev-filelayer-core?utm_source=badge)

Nice for visibility, but GitHub marks README links nofollow, so it doesn't pass authority. Use the HTML badge on your site as well.