MCP Filesystem server fails to initialize when launched via npx due to stdio connection issues #7901
-
What happened?When launching the MCP Filesystem server using npx inside Docker on a remote server, not locally, the server starts but LibreChat fails to connect, resulting in connection timeouts or premature closures (MCP error -32000: Connection closed). Running the server directly with node and the same arguments works reliably. Locally weirdly enough it works out of the box... Version Informationghcr.io/danny-avila/librechat-dev-api latest 5de54fbf6745 2 days ago 1.13GB Steps to ReproduceSteps to reproduce: Install a vanilla librechat docker instance on a remote server, with mcpserver filesystem enable inside librechat.yaml :
Result: But for the second filesytem2 it works What browsers are you seeing the problem on?No response Relevant log output2025-06-14 12:57:54 info: [MCP] Initializing app-level servers
LibreChat | [DEBUG] MCP started with args: [
LibreChat | '/usr/local/bin/node',
LibreChat | '/root/.npm/_npx/a3241bba59c344f5/node_modules/@modelcontextprotocol/server-filesystem/dist/index.js',
LibreChat | '/home/user/LibreChat'
LibreChat | ]
LibreChat | [DEBUG] ENV: {
LibreChat | HOME: '/root',
LibreChat | PATH: '/app/node_modules/.bin:/node_modules/.bin:/usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
LibreChat | }
LibreChat | Secure MCP Filesystem Server running on stdio
LibreChat | Allowed directories: [ '/home/user/LibreChat' ]
LibreChat | 2025-06-14 12:57:56 info: [MCP][filesystem2] Capabilities: {"tools":{}}
LibreChat | 2025-06-14 12:57:56 info: [MCP][filesystem2] Available tools: read_file, read_multiple_files, write_file, edit_file, create_directory, list_directory, directory_tree, move_file, search_files, get_file_info, list_allowed_directories
chat-mongodb | {"t":{"$date":"2025-06-14T12:58:04.602+00:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.18.0.6:58938","uuid":{"uuid":{"$uuid":"105de933-b812-4a5c-bfb5-82d48d1f08ab"}},"connectionId":12,"connectionCount":12}}
chat-mongodb | {"t":{"$date":"2025-06-14T12:58:04.618+00:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn12","msg":"client metadata","attr":{"remote":"172.18.0.6:58938","client":"conn12","negotiatedCompressors":[],"doc":{"driver":{"name":"nodejs|Mongoose","version":"6.14.2|8.12.1"},"platform":"Node.js v20.19.2, LE","os":{"name":"linux","architecture":"x64","version":"6.8.0-60-generic","type":"Linux"},"env":{"container":{"runtime":"docker"}}}}}
LibreChat | 2025-06-14 12:58:05 error: [MCP][filesystem] Connection failed: Connection timeout
LibreChat | [DEBUG] MCP started with args: [
LibreChat | '/usr/local/bin/node',
LibreChat | '/root/.npm/_npx/a3241bba59c344f5/node_modules/.bin/mcp-server-filesystem',
LibreChat | '/home/user/LibreChat'
LibreChat | ]
LibreChat | [DEBUG] ENV: {
LibreChat | npm_config_user_agent: 'npm/10.8.2 node/v20.19.2 linux x64 workspaces/false',
LibreChat | npm_node_execpath: '/usr/local/bin/node',
LibreChat | npm_config_noproxy: '',
LibreChat | SHLVL: '1',
LibreChat | HOME: '/root',
LibreChat | npm_package_json: '/app/package.json',
LibreChat | npm_config_userconfig: '/root/.npmrc',
LibreChat | npm_config_local_prefix: '/app',
LibreChat | npm_config_yes: 'true',
LibreChat | COLOR: '0',
LibreChat | npm_config_prefix: '/usr/local',
LibreChat | npm_config_npm_version: '10.8.2',
LibreChat | npm_config_cache: '/root/.npm',
LibreChat | npm_config_node_gyp: '/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js',
LibreChat | PATH: '/root/.npm/_npx/a3241bba59c344f5/node_modules/.bin:/app/node_modules/.bin:/node_modules/.bin:/usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/app/node_modules/.bin:/node_modules/.bin:/usr/local/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
LibreChat | NODE: '/usr/local/bin/node',
LibreChat | npm_package_name: 'LibreChat',
LibreChat | npm_lifecycle_script: 'mcp-server-filesystem',
LibreChat | npm_package_version: 'v0.7.8',
LibreChat | npm_lifecycle_event: 'npx',
LibreChat | npm_config_globalconfig: '/usr/local/etc/npmrc',
LibreChat | npm_config_init_module: '/root/.npm-init.js',
LibreChat | npm_execpath: '/usr/local/lib/node_modules/npm/bin/npm-cli.js',
LibreChat | PWD: '/app',
LibreChat | npm_config_global_prefix: '/usr/local',
LibreChat | npm_command: 'exec',
LibreChat | INIT_CWD: '/app',
LibreChat | EDITOR: 'vi'
LibreChat | }
LibreChat | Secure MCP Filesystem Server running on stdio
LibreChat | Allowed directories: [ '/home/user/LibreChat' ]
LibreChat | 2025-06-14 12:58:07 error: [MCP][filesystem] Connection failed: MCP error -32000: Connection closed ScreenshotsNo response Code of Conduct
|
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
Within docker, it can run reliably, but it needs a volume mounted for the host-level file directory you wish to give it access to: LibreChat | 2025-06-14 14:08:37 info: [MCP] Initializing app-level servers
LibreChat | Secure MCP Filesystem Server running on stdio
LibreChat | Allowed directories: [ '/app/obsidian' ]
LibreChat | 2025-06-14 14:08:40 info: [MCP][filesystem] Instructions not included (serverInstructions not configured)
LibreChat | 2025-06-14 14:08:40 info: [MCP][filesystem] Capabilities: {"tools":{}}
LibreChat | 2025-06-14 14:08:40 info: [MCP][filesystem] Available tools: read_file, read_multiple_files, write_file, edit_file, create_directory, list_directory, directory_tree, move_file, search_files, get_file_info, list_allowed_directories
LibreChat | 2025-06-14 14:08:40 info: [MCP] Initialized 1/1 app-level server(s)
LibreChat | 2025-06-14 14:08:40 info: [MCP][filesystem] ✓ Initialized
LibreChat | 2025-06-14 14:08:40 info: [MCP] All app-level servers initialized successfully Example filesystem:
type: stdio
command: npx
args:
- -y
- "@modelcontextprotocol/server-filesystem"
- /app/obsidian and making use of services:
api:
volumes:
- /mnt/c/Users/danny/Documents/obsidian:/app/obsidian |
Beta Was this translation helpful? Give feedback.
-
Ok, found the problem, I'm answering to myself : npx works fine, but the default init timeout is too short to handle the initialization. Adding initTimeout with more time makes the mcp server work properly :
|
Beta Was this translation helpful? Give feedback.
Ok, found the problem, I'm answering to myself : npx works fine, but the default init timeout is too short to handle the initialization.
Adding initTimeout with more time makes the mcp server work properly :