דוח קבצים של יום שישי
Every Friday at 16:00, look through my Documents folder, list every file added this week with a one-line note on what it is, and save the list as weekly-files.md in that same folder.
שרת MCP מאומת: Filesystem
התשובה הקצרה
אומת לאחרונה 2026-08-02
שרת ה-MCP לקבצים נותן לעוזר AI גישת קריאה וכתיבה לתיקיות שאתם בוחרים, ומסרב לכל מה שמחוץ להן. זהו שרת הקבצים של פרויקט ה-Model Context Protocol עצמו, הוא רץ על ה-Mac שלכם על גבי stdio, ואינו דורש חשבון, מפתח API או הרשמה כלשהי. לא הסתפקנו במה שכתוב ב-README: הרצנו את השרת, דיברנו איתו בפרוטוקול, ספרנו כל כלי שהוא חושף ושמרנו את הפלט הגולמי, כולל השגיאות המדויקות שהוא מחזיר כשמשהו משתבש. הכל נמצא בעמוד הזה. [1][3][6]
אימות
השיטה
הרצנו את השרת עם npx על גבי stdio עם תיקיה מורשית אחת, השלמנו את לחיצת היד של MCP, קראנו ל-tools/list והרצנו קריאת כלי אמיתית אחת. ה-JSON הגולמי נלכד ישירות מהחיבור, וטבלת הכלים למטה היא הלכידה הזו, מילה במילה.
הודעת הפתיחה של השרת
Secure MCP Filesystem Server running on stdio Client does not support MCP Roots, using allowed directories set from server args: [ '/tmp', '/private/tmp' ]
קריאת כלי אמיתית אחת
tools/call list_directory {"path": "/tmp"}[FILE] build.log [DIR] claude-502 [DIR] com.apple.launchd.ugMEiOmS7E
שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.
כלים
השרת ענה ל-tools/list עם 14 כלים בתאריך 2026-08-02. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.
| כלי | מה הוא עושה |
|---|---|
| read_fileמיושןpath*tailhead | Read the complete contents of a file as text. DEPRECATED: Use read_text_file instead. |
| read_text_filepath*tailhead | Read the complete contents of a file from the file system as text. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file. Use the 'head' parameter to read only the first N lines of a file, or the 'tail' parameter to read only the last N lines of a file. Operates on the file as text regardless of extension. Only works within allowed directories. |
| read_media_filepath* | Read a file and return it as a base64-encoded content block with its MIME type. Image and audio files are returned as image/audio content; any other file type is returned as an embedded resource. Only works within allowed directories. |
| read_multiple_filespaths* | Read the contents of multiple files simultaneously. This is more efficient than reading files one by one when you need to analyze or compare multiple files. Each file's content is returned with its path as a reference. Failed reads for individual files won't stop the entire operation. Only works within allowed directories. |
| write_filepath*content* | Create a new file or completely overwrite an existing file with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding. Only works within allowed directories. |
| edit_filepath*edits*dryRun | Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories. |
| create_directorypath* | Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories. |
| list_directorypath* | Get a detailed listing of all files and directories in a specified path. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Only works within allowed directories. |
| list_directory_with_sizespath*sortBy | Get a detailed listing of all files and directories in a specified path, including sizes. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is useful for understanding directory structure and finding specific files within a directory. Only works within allowed directories. |
| directory_treepath*excludePatterns | Get a recursive tree view of files and directories as a JSON structure. Each entry includes 'name', 'type' (file/directory), and 'children' for directories. Files have no children array, while directories always have a children array (which may be empty). The output is formatted with 2-space indentation for readability. Only works within allowed directories. |
| move_filesource*destination* | Move or rename files and directories. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories. |
| search_filespath*pattern*excludePatterns | Recursively search for files and directories matching a pattern. The patterns should be glob-style patterns that match paths relative to the working directory. Use pattern like '*.ext' to match files in current directory, and '**/*.ext' to match files in all subdirectories. Returns full paths to all matching items. Great for finding files when you don't know their exact location. Only searches within allowed directories. |
| get_file_infopath* | Retrieve detailed metadata about a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is perfect for understanding file characteristics without reading the actual content. Only works within allowed directories. |
| list_allowed_directories | Returns the list of directories that this server is allowed to access. Subdirectories within these allowed directories are also accessible. Use this to understand which directories and their nested paths are available before trying to access files. |
פרמטרים המסומנים ב-* הם חובה.
התקנה
העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.
פתחו את הקובץ ~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}החליפו את נתיב התיקיה בתיקיות שתרצו להרשות (אפשר לרשום כמה), ואז סגרו ופתחו מחדש את Claude Desktop. [7]
פקודה אחת בטרמינל:
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/Documents
כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ. החליפו את ~/Documents בתיקיה שתרצו להרשות. [8]
הוסיפו ל-~/.cursor/mcp.json עבור כל הפרויקטים, או ל-.cursor/mcp.json בתוך פרויקט אחד:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Documents"
]
}
}
}Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. [9]
בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:
Name Filesystem Command npx Arguments -y @modelcontextprotocol/server-filesystem /Users/yourname/Documents
הערך בשדה ה-Arguments מתפצל לפי רווחים, לכן השתמשו בנתיב תיקיה מלא בלי רווחים, שמתחיל ב-/Users. לחצו קודם על Test Connection: שרת תקין עונה עם מספר הכלים שלו. [10]
בלי טרמינל
אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים שלושה שדות פעם אחת, והכלים של השרת זמינים ל-AI שלכם בצ׳אט ובשגרות מתוזמנות.
01
הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו.
02
לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.
03
אם זה שרת ה-MCP הראשון שלכם, תופיע שורת Quick Add עם תבנית Filesystem שממלאת את הטופס כולו בשבילכם. אחרת העבירו את הטופס ל-Command (stdio): השרת הזה הוא פקודה, לא כתובת אינטרנט.
04
Name: Filesystem. Command: npx. Arguments: -y @modelcontextprotocol/server-filesystem, אחריו רווח והנתיב המלא של התיקיה שתרצו להרשות, למשל /Users/yourname/Documents. כתבו את הנתיב במלואו, מתחיל ב-/Users, בלי רווחים.
05
השאירו את Environment Variables ריק, השרת הזה לא צריך משתנים. לחצו Test Connection: Routines מפעילה את השרת ומדווחת כמה כלים היא מצאה, ארבעה עשר עבור השרת הזה. אחר כך לחצו Add Server.
06
הכלים עובדים בצ׳אט מיד. כדי לתת לשגרה מתוזמנת להשתמש בהם, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.
רעיונות לשגרות
אחרי שהשרת מחובר, שגרה מתוזמנת יכולה להשתמש בכלים שלו גם כשאתם לא מול המסך. העתיקו פרומפט, הדביקו אותו ב-Routines ובחרו שעה. הפרומפטים כתובים באנגלית בכוונה, מדביקים אותם בדיוק כפי שהם.
Every Friday at 16:00, look through my Documents folder, list every file added this week with a one-line note on what it is, and save the list as weekly-files.md in that same folder.
Every Monday at 9:00, list everything in my Downloads folder with sizes, flag anything larger than 500 MB or untouched for 30 days, and write the list to downloads-review.md so I can decide what to delete.
Every evening at 18:30, read the files changed today in my Notes folder, add a one-line summary to the top of each file that has none, and save the changes.
פתרון תקלות
שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.
מה רואים
Usage: mcp-server-filesystem [allowed-directory] [additional-directories...] Note: Allowed directories can be provided via: 1. Command-line arguments (shown above) 2. MCP roots protocol (if client supports it) At least one directory must be provided by EITHER method for the server to operate. Secure MCP Filesystem Server running on stdio Started without allowed directories - waiting for client to provide roots via MCP protocol
הפתרון
הפעלתם אותו בלי ארגומנט של תיקיה. הגרסה הנוכחית לא יוצאת: היא מדפיסה את ההערה הזו ומחכה שהלקוח יספק תיקיות דרך פרוטוקול ה-roots של MCP, שלא כל לקוח תומך בו (לקוח הבדיקה שלנו לא תמך). הוסיפו לפחות נתיב תיקיה אחד אחרי שם החבילה והפעילו מחדש.
מה רואים
Access denied - path outside allowed directories: /etc not in /tmp, /private/tmp
הפתרון
עובד כמתוכנן: השרת מסרב לכל נתיב מחוץ לתיקיות שרשמתם בהפעלה. גרמנו לשגיאה הזו בכוונה כשביקשנו את /etc בזמן שרק /tmp היה מורשה. בקשו נתיב בתוך תיקיה מורשית, או הוסיפו את התיקיה לארגומנטים והפעילו מחדש. על Mac השרת עוקב אחרי קישורים סימבוליים בעצמו, ולכן התרת /tmp התירה בפועל גם את /private/tmp.
מה רואים
ENOENT: no such file or directory, open '/private/tmp/definitely-does-not-exist-mcp-verify-2026.txt'
הפתרון
הנתיב לא קיים: בדרך כלל שגיאת הקלדה, קובץ ששמו שונה או קידומת נתיב לא מדויקת. בקשו מהעוזר להריץ קודם list_directory על תיקיית האב ולבחור את הקובץ מהרשימה.
הפתרון
הפקודה npx שייכת ל-Node.js. אם Node לא מותקן על ה-Mac, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו Node מ-nodejs.org, הפעילו מחדש את לקוח ה-MCP ונסו שוב.
שאלות נפוצות
זהו שרת הגישה לקבצים של פרויקט ה-Model Context Protocol עצמו. אחרי החיבור, עוזר AI כמו Claude יכול לקרוא, לחפש, לערוך ולסדר קבצים בתוך התיקיות שהרשיתם במפורש, ושום דבר מחוץ להן. הוא רץ כתהליך מקומי על ה-Mac שלכם ומדבר עם אפליקציית ה-AI על גבי stdio. [5][6]
השרת הרץ חושף 14 כלים: קריאה (read_text_file, read_media_file, read_multiple_files, ולצדם read_file שהוכרז כמיושן), כתיבה ועריכה (write_file, edit_file), תיקיות (create_directory, list_directory, list_directory_with_sizes, directory_tree, move_file), חיפוש (search_files) ומטא-נתונים (get_file_info, list_allowed_directories). הטבלה למעלה היא פלט ה-tools/list החי, מילה במילה.
הוא תחום לתיקיות שאתם מציינים בהפעלה, ובדקנו את הגדר: בקשה ל-/etc בזמן שרק /tmp היה מורשה החזירה שגיאת גישה, המודפסת בקטע פתרון התקלות למעלה. הסיכון האמיתי הוא היקף: write_file דורס בלי אזהרה, לכן הרשו תיקיה אחת ספציפית, לא את כל תיקיית הבית, והרחיבו רק כשמשימה דורשת זאת.
לא. ב-Routines ממלאים שלושה שדות בהגדרות ולוחצים Test Connection; המדריך למעלה מראה כל לחיצה. Claude Desktop דורש עריכה חד-פעמית של קובץ JSON קטן. רק Claude Code הוא כלי טרמינל מטבעו. [10][7]
לא. אין למה להירשם ואין אישור גישה להדביק: לכן זה שרת ה-MCP הקל ביותר להתחיל איתו. הפקודה npx מורידה את החבילה ממאגר החבילות הציבורי של npm בריצה הראשונה, כך שההפעלה הראשונה צריכה חיבור לאינטרנט; אחריה החבילה שמורה על ה-Mac. [1]
שני המספרים אמיתיים ולכדנו את שניהם. תהליך הפרסום של npm מטביע גרסה מבוססת תאריך בזמן הפרסום, ולכן המאגר מציג 2026.7.10. על גבי MCP, השרת הרץ מדווח בעצמו את שמו וגרסתו הפנימית, secure-filesystem-server 0.2.0. אותו קוד, שתי שיטות מספור. [1]
מקורות
כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.
[1]
Latest version 2026.7.10, published 2026-07-10.
[2]
[3]
89,138 stars and a push dated 2026-08-02 at access time, per the GitHub API.
[4]
The project states it is transitioning from the MIT License to Apache-2.0; docs are CC-BY-4.0.
[5]
[6]
Instantiates StdioServerTransport: the server speaks stdio.
[7]
The official Claude Desktop quickstart; its example server is this one.
[8]
[9]
[10]
How Routines runs one-click OAuth connectors and any MCP server.
העמוד הזה מתאר את Filesystem כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.
מאחורי המדריך הזה
Routines, האפליקציה שמאחורי המדריך הזה, מריצה שרתי MCP כמו זה בלי טרמינל: כך עובדים המחברים. הפתקים שלכם נשארים קובצי markdown על ה-Mac שלכם, אין חשבון ענן לשלם, והיא עובדת גם בלי אינטרנט. להורדת Routines