langflow-ai/langflow · warning · Error
No supported files found in folder. Allowed types: ${types?.
Error message
No supported files found in folder. Allowed types: ${types?.join(", ")} What it means
400 produced when get_config_path(client) raises ValueError — the client name is not one of cursor/windsurf/claude, or the OS is unsupported for that client (e.g. Claude config on a non-Windows, non-macOS, non-WSL system). The ValueError's text (raised in the path-resolution helper) is passed through as the detail.
Source
Thrown at src/frontend/src/hooks/files/use-upload-file.ts:54
const uploadFile = async ({
files,
}: {
files?: File[];
}): Promise<string[]> => {
try {
const filesToUpload = await getFilesToUpload({ files });
const filesIds: string[] = [];
// Filter files by supported types when using folder selection
let validFiles = filesToUpload;
if (webkitdirectory && types) {
validFiles = filesToUpload.filter((file) => {
const fileExtension = file.name.split(".").pop()?.toLowerCase();
return fileExtension && types.includes(fileExtension);
});
if (validFiles.length === 0) {
throw new Error(
`No supported files found in folder. Allowed types: ${types?.join(", ")}`,
);
}
}
for (const file of validFiles) {
validateFileSize(file);
// Check if file extension is allowed (for non-folder selection)
if (!webkitdirectory) {
const fileExtension = file.name.split(".").pop()?.toLowerCase();
if (!fileExtension || (types && !types.includes(fileExtension))) {
throw new Error(
`File type ${fileExtension} not allowed. Allowed types: ${types?.join(", ")}`,
);
}
if (!multiple && filesToUpload.length !== 1) {
throw new Error("Multiple files are not allowed");
}View on GitHub (pinned to 976ec789d2)
Solutions
- Use one of the supported client values: 'cursor', 'windsurf', or 'claude'.
- On plain Linux, install into Cursor/Windsurf instead of Claude, or copy the MCP JSON manually to whatever client you use.
- Check the response detail — it echoes the ValueError explaining exactly which condition failed.
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED_CLIENTS = {"cursor", "windsurf", "claude"}
if body["client"].lower() not in SUPPORTED_CLIENTS:
raise ValueError(f"unsupported client; choose from {SUPPORTED_CLIENTS}") Type guard
def is_supported_mcp_client(name: str) -> bool:
return name.lower() in {"cursor", "windsurf", "claude"} Prevention
- Restrict UI/client choices to cursor, windsurf, claude.
- On plain Linux, don't offer the 'claude' target — there is no Claude Desktop config path.
When it happens
Trigger: POST /{project_id}/install with body.client='vscode' or 'cline'; or client='claude' on plain Linux where no Claude Desktop config path is defined ('Unsupported operating system for Claude configuration').
Common situations: Asking to install into a client Langflow does not support; using the Claude Desktop flow on a bare Linux box (Claude Desktop has no Linux build).
Related errors
- Failed to install MCP
- File type ${fileExtension} not allowed. Allowed types: ${typ
- Failed to install MCP
- Failed to delete MCP Server
- Failed to patch MCP Server
AI-assisted analysis of langflow-ai/langflow@976ec789d2 (2026-08-14).
Data as JSON: /api/errors/c822f4a99ba28d5e.
Report an issue: GitHub.