Seafile MCP Server
Click on "Install 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., "@Seafile MCP ServerSearch for 'project-plan.md' across all my libraries"
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.
Seafile MCP Server
MCP (Model Context Protocol) server for Seafile cloud storage. Access your self-hosted files from AI assistants like Claude, OpenCode, and other MCP clients.
Features
List, read, and write files in your Seafile libraries
Create and manage directories
Move, copy, and rename files
Search across libraries
Supports both account-based and library-specific authentication
Related MCP server: Seafile MCP Server
Installation
Using pip
pip install seafile-mcpFrom source
git clone https://github.com/5p00kyy/seafile-mcp.git
cd seafile-mcp
pip install -e .Configuration
Create a .env file or set environment variables:
Required
SEAFILE_SERVER_URL: Your Seafile server URL
Authentication (choose one)
Option 1: Account Authentication (access all libraries)
SEAFILE_USERNAME: Your emailSEAFILE_PASSWORD: Your password
Option 2: Library Token (single library, more secure)
SEAFILE_REPO_TOKEN: API token from library settingsSEAFILE_REPO_ID: Library UUID
Optional
SEAFILE_MAX_READ_SIZE: Max file size to read (default: 1MB)SEAFILE_MAX_WRITE_SIZE: Max upload size (default: 10MB)SEAFILE_TIMEOUT: Request timeout in seconds (default: 30)
Usage with OpenCode
Add to your OpenCode MCP configuration:
{
"mcpServers": {
"seafile": {
"command": "python",
"args": ["-m", "seafile_mcp"],
"env": {
"SEAFILE_SERVER_URL": "https://your-seafile.com",
"SEAFILE_USERNAME": "user@example.com",
"SEAFILE_PASSWORD": "your-password"
}
}
}
}Or with library token:
{
"mcpServers": {
"seafile": {
"command": "seafile-mcp",
"env": {
"SEAFILE_SERVER_URL": "https://your-seafile.com",
"SEAFILE_REPO_TOKEN": "your-api-token",
"SEAFILE_REPO_ID": "library-uuid"
}
}
}
}Available Tools
Tool | Description |
| List all accessible libraries |
| Get library details |
| List directory contents |
| Read file content |
| Write text to a file |
| Upload binary file (base64) |
| Create a folder |
| Delete file or folder |
| Move file or folder |
| Copy file or folder |
| Rename file or folder |
| Get file metadata |
| Get download URL |
| Search files by name |
File Handling
Text files: Content returned directly (up to MAX_READ_SIZE)
Binary files: Returns metadata and download URL
Large files: Returns download URL instead of content
Security Notes
Use library tokens for production (limits access to single library)
Never commit
.envfiles with credentialsAPI tokens can be revoked from Seafile web interface
License
MIT
Available Tools
14 toolsseafile_copyA
Copy a file or directory within a Seafile library.
Args:
repo_id: The library/repository ID.
src_path: The path of the file or directory to copy.
dst_path: The destination directory path.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| src_path | Yes | Source path of file or directory | |
| dst_path | Yes | Destination path (directory where copy will be placed) |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool copies files/directories and returns an OperationResult, but lacks details on permissions required, whether it overwrites existing files, handles recursive copying for directories, rate limits, or error conditions. This is a significant gap for a mutation tool with zero annotation coverage.
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 efficiently structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence earns its place, with no redundant or verbose language, making it easy to scan and understand.
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?
Given the tool's moderate complexity (copy operation with 3 parameters), 100% schema coverage, and the presence of an output schema (implied by Returns section mentioning OperationResult), the description is mostly complete. However, it lacks behavioral details like permissions or overwrite behavior, which would be helpful despite the output schema.
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%, providing clear documentation for all three parameters (repo_id, src_path, dst_path). The description adds minimal value by listing the parameters in the Args section, but doesn't provide additional context beyond what the schema already states (e.g., path format examples or constraints). Baseline 3 is appropriate when schema does the heavy lifting.
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 specific action ('Copy a file or directory') and resource ('within a Seafile library'), distinguishing it from sibling tools like seafile_move (which moves rather than copies) and seafile_rename (which renames rather than copies). It precisely communicates what the tool does.
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 usage through the action described (copying within a library) but doesn't explicitly state when to use this tool versus alternatives like seafile_move or seafile_upload_file. No guidance is provided on prerequisites, exclusions, or specific scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_create_directoryB
Create a new directory in a Seafile library.
Args:
repo_id: The library/repository ID.
path: The full path of the directory to create.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | Full path of directory to create |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool creates a directory and returns an OperationResult, but lacks critical details like whether it overwrites existing directories, requires specific authentication, has rate limits, or what OperationResult contains. For a mutation tool, this is a significant gap.
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 well-structured with clear sections (Args, Returns) and front-loaded the core purpose. It's efficient but could be slightly more concise by integrating the parameter explanations into the main sentence rather than separate bullet points.
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?
Given the tool has an output schema (implied by 'Returns: OperationResult'), the description doesn't need to detail return values. However, as a mutation tool with no annotations and incomplete behavioral context, it should provide more guidance on usage and effects to be fully complete for agent 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 description coverage is 100%, with both parameters clearly documented in the schema. The description adds no additional meaning beyond what's in the schema (e.g., no examples, format details, or constraints). Baseline 3 is appropriate when the schema does the heavy lifting.
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 specific action ('Create a new directory') and resource ('in a Seafile library'), distinguishing it from siblings like seafile_delete, seafile_list_directory, or seafile_upload_file. It precisely communicates the tool's function without ambiguity.
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 is provided on when to use this tool versus alternatives. For example, it doesn't mention if this should be used instead of seafile_upload_file for folders, or prerequisites like needing write permissions. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_deleteA
Delete a file or directory from Seafile.
Warning: This operation is irreversible. Deleted items may be recoverable
from the library's trash for a limited time, depending on server settings.
Args:
repo_id: The library/repository ID.
path: The path to the file or directory to delete.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | Path of file or directory to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes critical behavioral traits: the operation is irreversible, deleted items may be recoverable from trash for a limited time, and it returns an OperationResult indicating success/failure. This covers safety implications and expected outcomes.
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 well-structured and appropriately sized. It front-loads the core purpose, includes a critical warning, then lists parameters and return value in a clear format. Every sentence adds value without 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?
Given the tool's complexity (destructive operation with 2 parameters), no annotations, and the presence of an output schema (OperationResult), the description is complete. It covers purpose, behavioral risks, parameters, and return value, providing sufficient context for safe and effective use.
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?
The schema description coverage is 100%, so the schema already documents both parameters (repo_id and path) adequately. The description repeats these parameter names in the Args section but doesn't add meaningful semantic context beyond what the schema provides, such as path format examples or repo_id constraints.
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 specific action ('Delete a file or directory') and resource ('from Seafile'), distinguishing it from sibling tools like seafile_move or seafile_rename that involve different operations on similar resources. The verb 'Delete' is precise and unambiguous.
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 provides clear context for when to use this tool (to delete files/directories) and includes a warning about irreversibility, which helps guide usage. However, it doesn't explicitly mention when NOT to use it or name specific alternatives like seafile_move for relocation instead of deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_get_download_linkA
Get a temporary download URL for a file.
The download URL is typically valid for a limited time (usually 1 hour).
Args:
repo_id: The library/repository ID.
path: The path to the file within the library.
Returns:
Temporary download URL string.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | File path within the library |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the operation generates a temporary URL (not a direct file read) and mentions typical validity (1 hour), which is useful context beyond basic functionality. However, it doesn't cover other aspects like authentication requirements, error conditions, or rate limits that would be helpful for a tool with no annotations.
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 efficiently structured with a clear purpose statement upfront, followed by behavioral context, and then parameter and return value sections. Every sentence adds value: the first states the action, the second explains the temporary nature, and the Args/Returns sections provide structured documentation without 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?
Given the tool's moderate complexity (2 parameters, no annotations, but with output schema), the description is reasonably complete. It explains what the tool does, the temporary nature of the output, and documents parameters and return values. The output schema existence means the description doesn't need to detail return structure, but it could benefit from more behavioral context (e.g., error cases) since annotations are absent.
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 documents both parameters (repo_id and path) with clear descriptions. The description adds minimal value by repeating the parameter names in the Args section without providing additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
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 specific action ('Get a temporary download URL for a file') and distinguishes it from siblings like seafile_read_file (which reads file content directly) or seafile_get_file_info (which retrieves metadata). It specifies the resource (download URL) and the temporary nature of the output.
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 usage context by mentioning the temporary nature of the URL (typically valid for 1 hour), which suggests it's for sharing or time-limited access rather than persistent retrieval. However, it doesn't explicitly state when to use this tool versus alternatives like seafile_read_file (for immediate content access) or seafile_get_file_info (for metadata).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_get_file_infoB
Get metadata about a file.
Args:
repo_id: The library/repository ID.
path: The path to the file within the library.
Returns:
FileInfo containing file metadata including size, mtime, and MIME type.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | File path within the library |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | File name |
| path | Yes | File path in the library |
| size | Yes | File size in bytes |
| mtime | Yes | Last modification timestamp |
| mime_type | Yes | MIME type of the file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get metadata' implies a read-only operation, it doesn't explicitly state permission requirements, error conditions (e.g., if file doesn't exist), or rate limits. The mention of return values is helpful but basic.
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 well-structured with clear sections (purpose, Args, Returns) and uses only essential sentences. However, the Args section somewhat duplicates schema information, and the Returns section could be more concise given the output schema exists.
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 read operation with 2 parameters, 100% schema coverage, and an output schema, the description is reasonably complete. It covers the core purpose and return value structure adequately, though it lacks behavioral context like error handling or authentication requirements.
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%, providing clear parameter descriptions. The description adds minimal value by restating parameter names and purposes in the Args section, but doesn't provide additional context like path format examples or repository ID constraints beyond what's in the schema.
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 tool's purpose with a specific verb ('Get metadata about a file') and resource ('file'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'seafile_get_library_info' or 'seafile_list_directory', which also retrieve metadata but for different resources.
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 provides no guidance on when to use this tool versus alternatives. With siblings like 'seafile_get_library_info' (for library metadata) and 'seafile_list_directory' (for directory contents), there's no indication of when file metadata retrieval is preferred over other metadata tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_get_library_infoC
Get information about a specific library.
Args:
repo_id: The unique identifier of the library.
Returns:
Library object containing detailed library metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Unique library identifier |
| name | Yes | Library name |
| size | No | Total size in bytes |
| mtime | No | Last modification timestamp |
| owner | No | Library owner username |
| encrypted | No | Whether the library is encrypted |
| permission | No | User's permission level (r, rw) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information, implying it's a read-only operation, but doesn't specify if it requires authentication, has rate limits, or what happens with invalid repo_id inputs. The description lacks details on error handling, response format beyond 'Library object,' or any performance considerations, leaving significant gaps for a tool with no annotation support.
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 appropriately sized and front-loaded, with the main purpose stated first. The 'Args' and 'Returns' sections are structured but slightly redundant since schema coverage is high. Every sentence earns its place by clarifying input and output, though it could be more concise by omitting the schema-like formatting if not adding extra value.
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?
Given the tool's low complexity (1 parameter, no nested objects) and the presence of an output schema (implied by 'Returns' note), the description is minimally complete. It covers the basic operation but lacks context on authentication, error cases, or sibling tool differentiation. With no annotations and simple schema, it should do more to compensate, but the output schema reduces the need for detailed return value 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?
The description adds minimal value beyond the input schema, which has 100% coverage for the single parameter 'repo_id.' It restates the parameter name and its purpose ('unique identifier of the library') but doesn't provide additional context like format examples, validation rules, or where to obtain repo_id from. With high schema coverage, the baseline is 3, and the description doesn't significantly enhance parameter understanding.
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 tool's purpose as 'Get information about a specific library,' which is a specific verb ('Get information') and resource ('library'). It distinguishes from siblings like seafile_list_libraries (which lists multiple libraries) by focusing on a single library. However, it doesn't explicitly mention how it differs from seafile_get_file_info (which gets file-level info), leaving some sibling differentiation incomplete.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid repo_id), exclusions, or comparisons to siblings like seafile_list_libraries for broader queries or seafile_get_file_info for file-specific details. Usage is implied only by the tool name and description, with no explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_list_directoryC
List files and folders in a directory.
Args:
repo_id: The library/repository ID.
path: The directory path to list (default: root "/").
Returns:
List of DirEntry objects for files and subdirectories.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | No | Directory path within the library | / |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List') and return type ('List of DirEntry objects'), but lacks critical details like whether this is a read-only operation (implied but not explicit), pagination behavior, error conditions, or authentication requirements. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
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 well-structured and concise, using a clear purpose statement followed by 'Args' and 'Returns' sections. Every sentence adds value, with no redundant information. However, it could be slightly more front-loaded by integrating the parameter details more seamlessly rather than as separate bullet points.
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?
Given the tool's low complexity (simple list operation), 100% schema coverage, and presence of an output schema (implied by 'Returns' section), the description is adequate but not complete. It covers the basics but lacks behavioral context (e.g., error handling, pagination) that would be helpful for an agent, especially with no annotations provided. The output schema reduces the need to explain return values, but more operational details would improve completeness.
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%, with both parameters ('repo_id' and 'path') clearly documented in the schema. The description adds minimal value beyond the schema, only restating parameter purposes and noting the default for 'path'. Since the schema already provides comprehensive parameter info, the baseline score of 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?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('files and folders in a directory'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'seafile_get_file_info' or 'seafile_list_libraries', which also retrieve file/directory information but with different scopes or details.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'seafile_list_directory' over 'seafile_get_file_info' (for single file details) or 'seafile_list_libraries' (for listing repositories instead of contents), leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_list_librariesA
List all accessible Seafile libraries.
Returns a list of all libraries (repositories) the authenticated user has access to.
Note: This operation requires account-based authentication and may not work
with repository token authentication.
Returns:
List of Library objects containing library metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it's a read operation (implied by 'List'), requires account-based authentication, has limitations with repository token authentication, and describes the return format. It doesn't mention rate limits or pagination, but covers the essential safety and operational context.
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 perfectly structured and concise: first sentence states the purpose, second explains returns and scope, third covers authentication constraints, and fourth clarifies return format. Every sentence adds value with zero redundancy or fluff.
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?
Given the tool's simplicity (0 parameters, read-only operation), the description is complete: it explains what it does, authentication requirements, limitations, and return values. The existence of an output schema means the description doesn't need to detail Library object structure, and it covers all necessary context for this straightforward listing tool.
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?
The tool has 0 parameters with 100% schema coverage, so the schema already fully documents the empty input. The description appropriately doesn't add parameter details, maintaining focus on the tool's purpose and behavior. A baseline of 4 is appropriate for zero-parameter tools.
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 specific action ('List all accessible Seafile libraries') and resource ('libraries/repositories'), distinguishing it from siblings like seafile_get_library_info (single library) and seafile_list_directory (directory contents). The verb 'List' is precise and the scope 'all accessible' is well-defined.
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 provides clear context about when to use it ('list all libraries the authenticated user has access to') and mentions authentication requirements, but doesn't explicitly contrast with alternatives like seafile_get_library_info or seafile_list_directory. It tells you what it does but not when to choose it over similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_moveB
Move a file or directory within a Seafile library.
Args:
repo_id: The library/repository ID.
src_path: The current path of the file or directory.
dst_path: The destination directory path.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| src_path | Yes | Source path of file or directory | |
| dst_path | Yes | Destination path (directory where item will be moved) |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions the operation returns an 'OperationResult', it doesn't explain what that contains, whether the move is atomic, if it overwrites existing files, what permissions are required, or any rate limits. The description is minimal beyond stating the basic operation.
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 efficiently structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence serves a purpose with zero wasted words, making it easy to parse quickly.
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?
Given that there's an output schema (implied by 'Returns: OperationResult'), the description doesn't need to detail return values. However, for a mutation tool with no annotations, it lacks important behavioral context like permissions, overwrite behavior, or error conditions. The description is adequate but has clear gaps for safe operation.
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 documents all three parameters thoroughly. The description adds no additional semantic context beyond what's in the schema (e.g., format examples, path conventions, or library ID sourcing). This meets the baseline for high schema coverage.
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 action ('Move a file or directory') and resource ('within a Seafile library'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'seafile_rename' or 'seafile_copy', which could involve similar file operations.
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 provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose 'seafile_move' over 'seafile_rename' (for renaming within same directory) or 'seafile_copy' (for duplication), nor any prerequisites or constraints for moving files/directories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_read_fileA
Read a file from Seafile.
For text files within the size limit, returns the file content directly.
For binary files or files exceeding the size limit, returns a download URL.
Args:
repo_id: The library/repository ID.
path: The path to the file within the library.
Returns:
FileContent with either text content or a download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | File path within the library |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | File name |
| path | Yes | File path in the library |
| size | Yes | File size in bytes |
| mtime | Yes | Last modification timestamp |
| content | No | Text content (if readable) |
| message | Yes | Status message |
| is_binary | Yes | Whether the file is binary |
| truncated | No | Whether content was truncated |
| download_url | No | Temporary download URL (for binary/large files) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: the different return behaviors for text vs. binary/large files, and the existence of a size limit. However, it doesn't specify what the actual size limit is or mention authentication 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 perfectly structured and concise: a clear purpose statement, usage guidelines in two sentences, and well-organized parameter/return sections. Every sentence earns its place with no wasted words.
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?
Given the tool's moderate complexity, 100% schema coverage, and the presence of an output schema (which handles return value documentation), the description is complete enough. It covers purpose, usage context, behavioral details, and parameter overview without needing to duplicate structured data.
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 fully documents both parameters. The description repeats the parameter names and basic meanings but doesn't add significant semantic value beyond what the schema provides, such as format examples or constraints.
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 specific action ('Read a file from Seafile') and distinguishes it from siblings like seafile_get_file_info (which returns metadata) and seafile_get_download_link (which only provides URLs). It precisely identifies the resource being accessed.
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 provides clear context about when to use this tool (for reading files) and implies alternatives through sibling tool names like seafile_get_download_link, but doesn't explicitly state when NOT to use it or name specific alternatives for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_renameA
Rename a file or directory in Seafile.
Args:
repo_id: The library/repository ID.
path: The current path of the file or directory.
new_name: The new name (not a path, just the name).
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | Path of file or directory to rename | |
| new_name | Yes | New name for the file or directory |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It states this is a rename operation (implying mutation) and mentions the return type ('OperationResult indicating success or failure'), but lacks details on permissions required, whether the operation is atomic/reversible, rate limits, or what specific failure conditions might be. It adds some context but leaves significant behavioral aspects unspecified.
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 perfectly structured and front-loaded: the first sentence states the core purpose, followed by clearly labeled sections for Args and Returns. Every sentence earns its place with no wasted words, making it easy to scan and understand quickly.
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?
Given the mutation nature (rename), 3 parameters with full schema coverage, and the presence of an output schema (implied by 'Returns' statement), the description is reasonably complete. It covers purpose, parameters with key clarification, and return type. The main gap is lack of behavioral details like permissions or error conditions, but the output schema likely handles return value documentation.
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 documents all parameters thoroughly. The description adds value by clarifying that 'new_name' is 'not a path, just the name', which provides important semantic guidance beyond the schema's basic description. This compensates well for the high schema coverage baseline.
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 specific action ('Rename a file or directory') and resource ('in Seafile'), distinguishing it from siblings like seafile_move (which changes location) or seafile_delete (which removes). It uses precise verb+resource phrasing that immediately communicates the tool's function.
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 usage when renaming is needed, but provides no explicit guidance on when to choose this over alternatives like seafile_move (which could also handle name changes via path manipulation) or seafile_copy (which creates duplicates with new names). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_searchA
Search for files by name across Seafile libraries.
Searches file and folder names matching the query string.
Note: Search functionality depends on server configuration and may
not be available on all Seafile installations.
Args:
query: The search query string.
repo_id: Optional library ID to limit search scope.
Returns:
List of dictionaries containing search results with file information.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query string | |
| repo_id | No | Limit search to specific library (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the search scope ('file and folder names matching the query string'), optional scoping with repo_id, and important limitations ('Search functionality depends on server configuration and may not be available on all Seafile installations'). It doesn't cover aspects like rate limits or authentication needs, but provides solid operational context.
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 well-structured and appropriately sized. It front-loads the core purpose in the first sentence, adds important behavioral notes, and includes clear sections for Args and Returns. Every sentence earns its place without 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?
Given the tool's moderate complexity (search operation with 2 parameters), 100% schema coverage, and the presence of an output schema (implied by the Returns section), the description is complete enough. It covers purpose, usage context, behavioral limitations, and return format without needing to duplicate schema details.
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 fully documents both parameters. The description adds minimal value beyond the schema by briefly mentioning the optional nature of repo_id ('Optional library ID to limit search scope') and restating the query parameter. This meets the baseline expectation when schema coverage is high.
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 tool's purpose with a specific verb ('Search') and resource ('files by name across Seafile libraries'). It distinguishes itself from siblings like seafile_list_directory or seafile_get_file_info by focusing on search functionality rather than listing or retrieving specific files.
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 provides clear context for when to use this tool ('Search for files by name') and includes a note about server configuration dependencies. However, it doesn't explicitly state when not to use it or name specific alternatives among the sibling tools, such as using seafile_list_directory for browsing instead of searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_upload_fileA
Upload a binary file to Seafile.
Use this for uploading binary files by providing the content as base64.
For text files, prefer seafile_write_file instead.
Args:
repo_id: The library/repository ID.
path: The path where the file should be uploaded.
base64_content: The file content encoded as base64.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | File path within the library | |
| base64_content | Yes | Base64 encoded file content |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool uploads files and returns an 'OperationResult', which indicates success or failure, adding some behavioral context. However, it lacks details on permissions, rate limits, error handling, or side effects, leaving gaps for a mutation tool.
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 well-structured and front-loaded with the core purpose, followed by usage guidelines and parameter details. Every sentence adds value without redundancy, making it efficient and easy to parse.
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?
Given that there is an output schema (implied by 'Returns: OperationResult'), the description does not need to detail return values. It covers purpose, usage, and parameters adequately. However, as a mutation tool with no annotations, it could benefit from more behavioral details like authentication requirements or potential impacts.
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?
The schema description coverage is 100%, so the schema already documents all parameters. The description lists the parameters and adds minimal context (e.g., 'base64 encoded file content'), but does not provide significant additional meaning beyond what the schema offers. This meets the baseline for high schema coverage.
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 specific action ('Upload a binary file to Seafile') and distinguishes it from sibling tools by explicitly mentioning 'seafile_write_file' as the alternative for text files. It identifies the resource (binary file) and the target system (Seafile), providing a precise purpose.
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 provides explicit guidance on when to use this tool ('for uploading binary files') and when not to ('For text files, prefer seafile_write_file instead'), directly naming the alternative sibling tool. This gives clear context for selection among available options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seafile_write_fileA
Create or update a text file in Seafile.
If the file exists, it will be overwritten. If it doesn't exist, it will be created.
Parent directories must exist.
Args:
repo_id: The library/repository ID.
path: The path where the file should be written.
content: The text content to write.
Returns:
OperationResult indicating success or failure.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_id | Yes | Library/repository ID | |
| path | Yes | File path within the library | |
| content | Yes | Text content to write to the file |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | Affected path (if applicable) |
| message | Yes | Result message |
| success | Yes | Whether the operation succeeded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the overwrite behavior ('If the file exists, it will be overwritten'), creation behavior ('If it doesn't exist, it will be created'), and a constraint ('Parent directories must exist'). It also mentions the return type ('OperationResult indicating success or failure'), though it lacks details on error handling or permissions.
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 well-structured and front-loaded with the core purpose, followed by behavioral details and parameter/return sections. Every sentence adds value without redundancy, making it efficient and easy to parse.
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?
Given the tool's complexity (a write operation with 3 parameters), no annotations, and an output schema (implied by 'Returns'), the description is mostly complete. It covers purpose, behavior, parameters, and returns, but could improve by addressing potential errors or auth requirements, though the output schema helps mitigate gaps.
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?
The schema description coverage is 100%, with clear parameter descriptions in the input schema. The description adds minimal value beyond the schema by listing the parameters in the 'Args' section, but it does not provide additional context like format examples or constraints (e.g., path syntax). This meets the baseline for high schema coverage.
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 verb ('Create or update') and resource ('a text file in Seafile'), making the purpose specific. It distinguishes from siblings like seafile_read_file (read-only) and seafile_upload_file (which might handle binary uploads), establishing a clear write operation.
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 provides clear context for when to use this tool ('Create or update a text file') and includes a prerequisite ('Parent directories must exist'), which helps guide usage. However, it does not explicitly state when not to use it or name alternatives (e.g., seafile_upload_file for non-text files), missing full sibling differentiation.
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. Dates show when Glama detected each change.
14 tool updates
v0.1.0- First observed
seafile_copy - First observed
seafile_create_directory - First observed
seafile_delete - First observed
seafile_get_download_link - First observed
seafile_get_file_info - First observed
seafile_get_library_info - First observed
seafile_list_directory - First observed
seafile_list_libraries - First observed
seafile_move - First observed
seafile_read_file - First observed
seafile_rename - First observed
seafile_search - First observed
seafile_upload_file - First observed
seafile_write_file
TDQS
Each tool has a clearly distinct purpose targeting specific file operations or metadata retrieval in Seafile. There is no overlap; for example, seafile_copy vs seafile_move, seafile_upload_file vs seafile_write_file, and seafile_read_file vs seafile_get_download_link all serve different functions with clear boundaries described in their documentation.
All tools follow a consistent 'seafile_verb_noun' pattern with snake_case throughout, such as seafile_list_directory, seafile_create_directory, and seafile_get_file_info. This uniformity makes the tool set predictable and easy to navigate for an agent.
With 14 tools, this server is well-scoped for managing a Seafile file storage system. It covers essential operations like CRUD for files and directories, metadata access, search, and upload/download, which is appropriate for the domain without being overly sparse or bloated.
The tool set provides comprehensive coverage for file management in Seafile, including create, read, update, delete, copy, move, rename, list, search, and metadata retrieval. There are no obvious gaps; it supports full lifecycle operations for files and directories, ensuring agents can handle typical workflows without dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Securely search and manage workspace context files for AI agents and teams.
Manage files and folders directly from your workspace. Read and write files, list directories, cre…
Artifact store for AI agents — read, write, and search files by path; share by rendered URL.
1
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables CRUD operations on WebDAV file systems with authentication support, allowing users to manage files and directories through natural language commands. Includes advanced features like file search, range requests, smart editing with diff preview, and directory tree visualization.162MIT
- AlicenseNot gradedqualityDmaintenanceConnects Claude to your self-hosted or cloud-based Seafile storage for managing libraries and files through natural language. It enables users to browse directories, read file contents, and perform file operations like moving, renaming, or searching across their private infrastructure.2MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Google Drive, supporting file operations like list, search, read, create, update, delete, share, and manage permissions.74654MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage Microsoft SharePoint documents and folders through natural language, supporting operations like listing, reading, uploading, updating, deleting, and creating Office files.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/5p00kyy/seafile-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server