From f3891aaf69fed1cfc063f44558ea5a980d622ea3 Mon Sep 17 00:00:00 2001 From: Nandha Reddy Date: Thu, 26 Jun 2025 00:02:16 +1000 Subject: [PATCH] Apply suggestions from code review comments on docs and logging Co-authored-by: Ola Hungerford --- src/filesystem/README.md | 10 +++++----- src/filesystem/index.ts | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/filesystem/README.md b/src/filesystem/README.md index 292fac6d..cd6d0a9f 100644 --- a/src/filesystem/README.md +++ b/src/filesystem/README.md @@ -9,11 +9,11 @@ Node.js server implementing Model Context Protocol (MCP) for filesystem operatio - Move files/directories - Search files - Get file metadata -- Dynamic directory access control via MCP roots protocol +- Dynamic directory access control via [Roots](https://modelcontextprotocol.io/docs/concepts/roots) ## Directory Access Control -The server uses a flexible directory access control system. Directories can be specified via command-line arguments or dynamically via the MCP roots protocol. +The server uses a flexible directory access control system. Directories can be specified via command-line arguments or dynamically via [Roots](https://modelcontextprotocol.io/docs/concepts/roots). ### Method 1: Command-line Arguments Specify Allowed directories when starting the server: @@ -21,14 +21,14 @@ Specify Allowed directories when starting the server: mcp-server-filesystem /path/to/dir1 /path/to/dir2 ``` -### Method 2: MCP Roots Protocol (Recommended) -MCP clients that support the roots protocol can dynamically update the Allowed directories. +### Method 2: MCP Roots (Recommended) +MCP clients that support [Roots](https://modelcontextprotocol.io/docs/concepts/roots) can dynamically update the Allowed directories. Roots notified by Client to Server, completely replace any server-side Allowed directories when provided. **Important**: If server starts without command-line arguments AND client doesn't support roots protocol (or provides empty roots), the server will throw an error during initialization. -This is the recommended method, as MCP roots protocol for dynamic directory management. This enables runtime directory updates via `roots/list_changed` notifications without server restart, providing a more flexible and modern integration experience. +This is the recommended method, as this enables runtime directory updates via `roots/list_changed` notifications without server restart, providing a more flexible and modern integration experience. ### How It Works diff --git a/src/filesystem/index.ts b/src/filesystem/index.ts index 25be8497..8dfca07c 100644 --- a/src/filesystem/index.ts +++ b/src/filesystem/index.ts @@ -927,14 +927,14 @@ server.oninitialized = async () => { if (response && 'roots' in response) { await updateAllowedDirectoriesFromRoots(response.roots); } else { - console.log("Client returned no roots set, keeping current settings"); + console.error("Client returned no roots set, keeping current settings"); } } catch (error) { console.error("Failed to request initial roots from client:", error instanceof Error ? error.message : String(error)); } } else { if (allowedDirectories.length > 0) { - console.log("Client does not support MCP Roots, using allowed directories set from server args:", allowedDirectories); + console.error("Client does not support MCP Roots, using allowed directories set from server args:", allowedDirectories); }else{ throw new Error(`Server cannot operate: No allowed directories available. Server was started without command-line directories and client either does not support MCP roots protocol or provided empty roots. Please either: 1) Start server with directory arguments, or 2) Use a client that supports MCP roots protocol and provides valid root directories.`); } @@ -947,7 +947,7 @@ async function runServer() { await server.connect(transport); console.error("Secure MCP Filesystem Server running on stdio"); if (allowedDirectories.length === 0) { - console.log("Started without allowed directories - waiting for client to provide roots via MCP protocol"); + console.error("Started without allowed directories - waiting for client to provide roots via MCP protocol"); } }