FileN-MCP
Provides tools for interacting with a Filen cloud drive, including listing directories, reading and writing files, searching paths, uploading and downloading files or directories, creating folders, retrieving metadata, and deleting items via trash or permanently.
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., "@FileN-MCPshow me what's in the root folder of my Filen drive"
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.
FileN-MCP
Unofficial Model Context Protocol (MCP) server for Filen (filen.io), built on the official @filen/sdk TypeScript SDK.
Unofficial disclaimer: This project is not affiliated with, endorsed by, or supported by Filen Cloud Dienste UG. It is a community effort and comes with no warranty. Use at your own risk. Filen itself has no official MCP server (yet) — if one is released, prefer the official one.
The server speaks MCP over stdio only (no network listener) and exposes your Filen cloud drive as tools to MCP clients such as Claude Desktop or Cursor.
Tools
All cloud paths are absolute, starting at / (the root of your Filen drive).
Tool | Description | Read-only |
| List entries of a directory ( | yes |
| Metadata of a file/folder: | yes |
| Read a file as UTF-8 text ( | yes |
| Case-insensitive substring search over paths ( | yes |
| Write UTF-8 text to a cloud file, creating/overwriting it ( | no |
| Upload a local file/directory to the cloud ( | no |
| Download a cloud file/directory to a local path ( | yes |
| Create a folder, including intermediate directories ( | no |
| Delete a file/folder ( | no |
Tool errors are returned as MCP tool results with isError: true and a text message starting with Error:.
Related MCP server: drive-mcp
Requirements
Node.js >= 20
A Filen account and either an API key or your email/password (see below)
Setup
git clone https://github.com/Mantic0re1337/FileN-MCP.git
cd FileN-MCP
npm install
npm run buildRun it directly:
FILEN_API_KEY="your-api-key" npm startOr inspect it with the MCP Inspector:
FILEN_API_KEY="your-api-key" npm run inspectCredentials (environment variables only)
The server never hardcodes credentials. Provide them via environment variables:
Variable | Purpose |
| Your Filen API key (Settings → Developer). Preferred option. |
| Account login instead of an API key. |
| Optional 2FA code, required if your account has two-factor authentication enabled. |
If neither FILEN_API_KEY nor FILEN_EMAIL + FILEN_PASSWORD is set, the server prints a clear error and exits with code 1.
You can also put them in a local .env file (git-ignored) and load it with your favorite dotenv runner, e.g. npx dotenvx run -- npm start.
Client configuration
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"filen": {
"command": "node",
"args": ["/absolute/path/to/FileN-MCP/dist/index.js"],
"env": {
"FILEN_API_KEY": "your-api-key"
}
}
}
}(Use FILEN_EMAIL, FILEN_PASSWORD and optionally FILEN_2FA_CODE instead of FILEN_API_KEY if you prefer.)
Cursor (.cursor/mcp.json)
{
"mcpServers": {
"filen": {
"command": "node",
"args": ["/absolute/path/to/FileN-MCP/dist/index.js"],
"env": {
"FILEN_API_KEY": "your-api-key"
}
}
}
}Replace /absolute/path/to/FileN-MCP with the real clone path on your machine.
Security notes
stdio only: the server listens exclusively on stdio on the local machine; it opens no network port. It only talks to Filen's API endpoints.
Zero-knowledge stays intact: all encryption/decryption happens locally inside
@filen/sdkusing your own keys. The server never sees plaintext keys beyond what the SDK needs, and Filen's servers never see your file contents.Credentials via env only: no credentials are hardcoded or committed;
.envis git-ignored.read_filehas a 5 MB cap so a single tool call cannot pull huge files into the model context; usedownload_filefor larger files.delete_itemdefaults to the trash (permanent=false); permanent deletion requires explicitly settingpermanent=true.Unofficial & use at your own risk: this is a community server, not affiliated with Filen. API/SDK behavior may change without notice.
Development
npm run dev # build + run
npm run build # compile TypeScript to dist/
npm start # run dist/index.js
npm run inspect # MCP InspectorLicense
AGPL-3.0 — matching the license of the Filen SDK (@filen/sdk).
Available Tools
9 toolscreate_folderCreate folderB
Create a folder in the Filen cloud. Intermediate directories are created recursively if missing.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the folder to create, e.g. '/Projects/2026' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the agent knows the safety profile. The description adds a genuinely useful trait beyond that — that intermediate directories are created recursively. It does not state the behavior when the folder already exists or whether permissions are required, so it earns credit but not full marks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the recursive-creation behavior is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter creation tool with no output schema, annotations covering the safety profile, and a fully documented param, the description contains what an agent needs. Minor gaps are existing-folder behavior and error semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the 'path' parameter fully documented as an absolute cloud path with an example, so the schema is doing the heavy lifting. The description implies the path may include missing intermediate segments, but adds no further syntax beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Create') and resource ('a folder in the Filen cloud'), so the agent can instantly distinguish it from siblings like write_file and upload_file. It is clear without being an explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to create a folder versus writing a file that implies the path, nor on prerequisites such as authentication or parent-folder ownership. The usage is only implicitly derivable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemDelete itemADestructive
Delete a file or directory from the Filen cloud. By default the item is moved to the trash; set permanent=true to delete it permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the item to delete | |
| permanent | No | If true, delete permanently instead of moving to trash |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds the crucial non-obvious behavior that deletion is recoverable by default via trash and only irreversible with permanent=true. That is real value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the scope stated first and the recoverability caveat immediately after; nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with an existing output-schema-free surface, this covers scope and the trash/permanent distinction. Minor gaps remain on error conditions, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both path and permanent including defaults, so the description largely restates it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('Delete a file or directory') scoped to 'the Filen cloud', making it clearly distinct from siblings like write_file or upload_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the destructive verb, but the description never states when to prefer deletion over other operations or what happens if the path is invalid. No explicit alternative or precondition is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_fileDownload fileARead-only
Download a file (or directory) from the Filen cloud to a local destination path on the machine running this server.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the file/directory to download | |
| destination | Yes | Absolute local destination path, e.g. 'C:\Users\me\Downloads\file.pdf' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, which do not communicate that this tool writes bytes onto the local filesystem of the server host. The description explicitly discloses that side effect and where it lands, which is real value beyond the annotations. It stops short of covering overwrite behavior for existing destinations or how recursive directory downloads behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the action front-loaded and no filler. The parenthetical '(or directory)' is a useful scope note rather than noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a two-parameter tool with full schema coverage and annotations, but an agent still cannot tell what happens if the destination exists, whether the call blocks on large files, or what a successful response looks like (no output schema). One more sentence on overwrite/recursive semantics would close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in detail, including the Windows-style absolute path example. The description adds only the cloud-vs-local framing, which the schema already conveys, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Download') plus resource ('a file (or directory)') plus source ('Filen cloud') and target ('local destination path'). It is clearly distinguishable from upload_file and read_file by the direction of transfer, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the way to pull content to local disk, but there is no statement of when to prefer this over read_file (in-memory read) or how directory downloads relate to list_directory. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryList directoryBRead-only
List the entries of a Filen cloud directory. Paths are absolute, starting at '/'.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the directory, e.g. '/' or '/Documents' | |
| recursive | No | If true, list all entries recursively below path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only the path-scoping constraint and says nothing about result ordering, entry count limits, hidden entries, or error behavior for non-existent paths — useful context that is left out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the operation stated first and the path convention second; nothing is wasted and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with annotations, the description is close to sufficient, but with no output schema an agent gets no hint of the return shape (entry objects, names, types, metadata). That is the one meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both `path` and `recursive` are fully documented in the schema. The description's note that paths are absolute and start at '/' largely restates the schema's own example, adding no new meaning — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (list) and resource (entries of a Filen cloud directory), which is unambiguous against siblings like read_file or stat. It does not, however, explicitly distinguish itself from search_files, which an agent might otherwise consider for the same goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over search_files, or when to set recursive=true versus a flat listing. The path convention ('absolute, starting at /') is a prerequisite, not a usage rule, and no exclusion conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileRead fileARead-only
Read a text file from the Filen cloud and return its UTF-8 content. Refuses files that are not regular files or larger than 5 MB (use download_file for those).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the file to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations provide safety hints, the description adds critical operational behavior: the file must be a 'regular file' and cannot exceed 5 MB. These constraints prevent misuse and clarify the tool's functional limits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is highly concise and efficient. It front-loads the core functionality and immediately follows with the necessary constraints and routing logic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description is fully complete. It covers the function, the expected content type, the hard limits (5MB, file type), and the correct tool to use for overflow, leaving no major gaps for an agent to resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given that the input schema coverage is 100%, the description does not need to define the 'path' parameter. However, it adds valuable semantic information regarding the output format (UTF-8 content) and the content type expectation (text file).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the primary function: reading a text file and returning its UTF-8 content. Crucially, it distinguishes itself from siblings like download_file by specifying its size and type limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidelines by defining failure conditions (non-regular file, > 5MB) and directs the user to an alternative tool (download_file) when those conditions are met, making decision logic straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesSearch filesBRead-only
Search the Filen cloud for files/directories whose path contains the query (case-insensitive substring match).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute cloud path of the directory to search in (recursive). Defaults to '/' | / |
| query | Yes | Search query, matched case-insensitively against full cloud paths |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the substring/path matching rule, but says nothing about recursion depth, result caps, pagination, or result ordering — traits an agent needs to plan a search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the matching rule stated inline and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A two-parameter read with no output schema; the description adequately covers what is matched but not what is returned (file objects vs paths) or whether results are truncated or paginated, which matters for a recursive cloud-wide search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, including the default '/' and recursion note for path, so the baseline is 3. The description restates the case-insensitive path-match semantics for query but adds nothing the schema does not already say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus resource (files/directories) and the matching semantics (path contains query, case-insensitive substring). This is clear and distinct from write_file/delete_item, though the boundary with list_directory is not explicitly drawn.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over list_directory or stat, and no note that the query matches paths rather than content. Usage must be inferred from the description's matching rule alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statStat itemARead-only
Get metadata (type, uuid, size, timestamps) of a file or directory in the Filen cloud.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the item, e.g. '/Documents/report.pdf' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; the description's real contribution is naming the returned fields (type, uuid, size, timestamps). It does not mention error behavior for a missing path, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and the field list in parentheses; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotations, this covers purpose and return fields well. With no output schema, slightly more detail on the shape of the returned metadata or the failure mode for nonexistent paths would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single 'path' parameter whose schema description already gives an absolute-path example. The description adds nothing about parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('metadata ... of a file or directory') with an enumerated field list and the backing service named. Its role is clearly separable from read_file and list_directory, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is only implied by the resource: inspect an item's metadata rather than its contents. There is no explicit statement of when to prefer this over read_file, list_directory, or search_files, and no prerequisites such as whether the path must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload fileA
Upload a local file (or directory) from the machine running this server into the Filen cloud. Parent directories are created automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud destination path, e.g. '/Documents/file.pdf' | |
| source | Yes | Absolute local path of the file/directory to upload, e.g. 'C:\Users\me\file.pdf' or '/home/me/file.pdf' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive operation in a closed world. The description adds useful behavior that parent directories are created automatically, but it does not disclose overwrite behavior, error cases, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and followed by one relevant behavioral detail. There is no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter upload tool with complete schema descriptions and useful annotations, the description covers the core action and auto-creation of parent directories. It could be stronger by mentioning overwrite/conflict behavior, but no output schema is present and return values do not need explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both source and path. The description adds little parameter-specific meaning beyond reinforcing that source may be a directory and destination is in Filen cloud.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: upload a local file (or directory) from the server machine into Filen cloud. It is clear on direction and scope, but it does not explicitly differentiate from nearby siblings such as write_file or create_folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case by saying it uploads local files/directories into the cloud, but it does not explicitly state when to choose this over write_file or download_file. No when-not or prerequisite guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileWrite fileBDestructive
Write UTF-8 text content to a file in the Filen cloud, creating or overwriting it. Parent directories are created automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute cloud path of the file to write, e.g. '/notes/todo.txt' | |
| content | Yes | Text content to write (UTF-8) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description corroborates with 'creating or overwriting it' and adds a genuinely non-structured detail: parent directories are created automatically. It does not mention limits, encoding edge cases, or what an overwrite loses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the verb and the destructive 'overwriting' consequence before the ancillary directory-creation note. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter write tool with full schema coverage and clear annotations, the essential facts are present. Since there is no output schema, a brief note on what is returned (or that nothing is) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented with examples ('/notes/todo.txt') and encoding notes. The description's 'UTF-8' and 'cloud' framing restates schema content, so it adds little beyond the baseline for fully covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: writing UTF-8 text content to a file in Filen cloud, with create-or-overwrite semantics. The 'UTF-8 text' qualifier implicitly separates it from upload_file (binary), but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus upload_file, download_file, or create_folder, and no mention of prerequisites or when-not-to-use. The agent must infer the text-vs-binary split from the word 'UTF-8' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
create_folder - First observed
delete_item - First observed
download_file - First observed
list_directory - First observed
read_file - First observed
search_files - First observed
stat - First observed
upload_file - First observed
write_file
TDQS
Scored across 9 tools
Each tool maps to a distinct operation, but two pairs have adjacent purposes: write_file vs upload_file (both create content) and read_file vs download_file (both retrieve content). The descriptions disambiguate them well (read_file explicitly points to download_file for large/binary files), so confusion is minor.
Nearly all tools follow a verb_noun pattern (list_directory, read_file, search_files, write_file, upload_file, download_file, create_folder, delete_item). The lone exception is 'stat', which breaks the pattern as a bare verb, but it is a recognizable filesystem convention.
Nine tools is well-scoped for a cloud file storage server, covering listing, metadata, reading, writing, transferring, folder creation, and deletion without redundancy. Every tool earns its place.
Core CRUD and transfer operations are covered, but notable gaps remain: there is no move/rename or copy tool, and delete_item mentions a trash but there is no restore-from-trash or list-trash operation. Agents can work around these (e.g. download+upload to move) but not the trash dead end.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Browse and manage files in your Moxt AI workspace from any MCP client.
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Notes, files, GitHub, and Drive through one MCP connection.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceManage Proton Drive from Claude, Codex, VS Code/Copilot, and any MCP client through Proton's official CLI. Authentication and encrypted Drive behavior stay with Proton's tooling.66 npmMIT
- AlicenseAqualityCmaintenanceMCP server enabling file operations (list, search, read, rename, move) on Google Drive and OneDrive.21MIT
- AlicenseAqualityCmaintenanceEnables an MCP client to search, read, download, create, edit, organize, trash, untrash, and share files in a single Google Drive account over stdio using your own Google OAuth client.17MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to browse, read, write, search, and share files in a pCloud account over HTTPS, including folder management, trash access, and public link creation.1MIT