Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
A fast, configurable filesystem server for the Model Context Protocol (MCP), written in Rust.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"fs-rs": {
"command": "npx",
"args": [
"-y",
"fs-mcp-rs"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add fs-rs -- npx -y fs-mcp-rs프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"fs-rs": {
"command": "npx",
"args": [
"-y",
"fs-mcp-rs"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"fs-rs": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"fs-mcp-rs"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 nihmadev 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.2.4)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, LexPact UK Contracts
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Generate UK-law contracts: NDA, service, freelance, recruiter terms of business, IR35.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A fast, configurable filesystem server for the Model Context Protocol (MCP), written in Rust.
fs-mcp-rs gives an MCP client a small set of filesystem tools while keeping access inside directories selected by the operator. It has no implicit filesystem root, no built-in personal path, and no writable default. The server starts only when you provide a configuration file.
The public distribution is one crate and one executable, both named fs-mcp-rs. The protocol, policy, filesystem, search, and settings components remain separate Rust modules inside that crate. This keeps installation simple:
cargo install fs-mcp-rs
Users do not need to install or understand a graph of internal crates. The benchmark runner remains a development-only workspace member and is not included in the crates.io package.
npx fs-mcp-rs..gitignore support and configurable hidden-file handling.[OK] / [WARN]).npx execution, or Rust 1.85+ when building from source.The easiest way to run fs-mcp-rs with any MCP client (such as Claude Desktop or Cursor) is using npx:
npx fs-mcp-rs /path/to/project
The npm package automatically downloads the appropriate precompiled binary for your operating system and architecture (Windows x64, Linux x64, macOS x64/arm64).
cargo install fs-mcp-rs
fs-mcp-rs --version
git clone https://github.com/nihmadev/fs-mcp-rs.git
cd fs-mcp-rs cargo build --release
The executable will be at target/release/fs-mcp-rs on Unix-like systems or target\release\fs-mcp-rs.exe on Windows.
Copy configs/example.toml somewhere appropriate and edit it. The server intentionally has no default config path:
cp configs/example.toml fs-mcp-rs.toml
Windows PowerShell:
Copy-Item configs\example.toml fs-mcp-rs.toml
Minimal read-only configuration:
[server]
host = "127.0.0.1" port = 8000 max_concurrency = 32 max_io_concurrency = 16
[filesystem] roots = ["/home/alice/projects"] read_only = true max_read_bytes = 8388608 max_write_bytes = 8388608 follow_links = false
[search] max_results = 1000 max_concurrency = 4 worker_threads = 4 regex_cache_capacity = 64 include_hidden = false respect_gitignore = true
[terminal] enabled = true max_concurrency = 2 default_timeout_ms = 30000 max_timeout_ms = 300000 max_output_bytes = 4194304
Windows roots use escaped backslashes or forward slashes:
roots = ["C:\\Users\\Alice\\Projects", "D:/Shared/Documentation"]
Relative roots are resolved relative to the directory containing the configuration file, not relative to an arbitrary process working directory.
[server]host: IP address to bind. Keep 127.0.0.1 unless remote clients genuinely need access.port: TCP port for /health and /mcp.max_concurrency: maximum number of MCP requests processed at once.max_io_concurrency: maximum number of simultaneous non-search filesystem jobs.log_tools: whether concise tool execution logging ([OK] / [WARN]) is printed (default: true).[filesystem]roots: non-empty list of allowed directories. Every requested path must resolve inside one of them.read_only: when true, all mutating tools are rejected.max_write_bytes: largest permitted write_file or resulting edit_text content.follow_links: whether paths containing symbolic links may be followed. Leave this false unless you have reviewed the consequences.[search]max_results: maximum matches returned by one search.max_concurrency: maximum simultaneous search jobs.worker_threads: filesystem traversal threads used by each search.regex_cache_capacity: number of compiled search patterns cached in memory; 0 disables the cache.include_hidden: include hidden files and directories.respect_gitignore: apply Git ignore files while walking directories.[terminal]enabled: expose command execution. When disabled, run_command returns a tool error.max_concurrency: maximum terminal commands running simultaneously.default_timeout_ms: timeout used when a call does not provide one.max_timeout_ms: largest timeout a call may request.max_output_bytes: maximum combined stdout/stderr bytes retained per terminal session. Old output is evicted and reported as dropped/truncated.max_read_bytes: maximum output bytes returned by one terminal_read call.max_wait_ms: maximum long-poll duration for one terminal_read call.session_retention_ms: how long completed sessions and their output remain readable before automatic cleanup.run_command executes arbitrary commands through cmd.exe on Windows and /bin/sh on GNU/Linux and macOS. It is advertised with destructive and open-world MCP annotations so compatible providers can show a warning. Enabling it gives commands all permissions of the operating-system account running the server; filesystem roots and read-only mode do not sandbox terminal commands.
Unknown fields and zero-valued safety limits are rejected. This catches misspelled settings instead of silently ignoring them.
Start directly by specifying allowed filesystem directories on the command line:
fs-mcp-rs /home/alice/project1 /home/alice/project2
If no configuration file or positional roots are passed, fs-mcp-rs uses default settings scoped to the current working directory.
Pass the configuration explicitly:
fs-mcp-rs --config /absolute/path/to/fs-mcp-rs.toml
Or use the environment variable:
FS_MCP_CONFIG=/absolute/path/to/fs-mcp-rs.toml fs-mcp-rs
PowerShell:
$env:FS_MCP_CONFIG = "C:\config\fs-mcp-rs.toml"
fs-mcp-rs
--stdio. Structured logs are written to stderr to keep stdout clean for line-delimited JSON-RPC messages./health and /mcp endpoints.Check HTTP health:
curl http://127.0.0.1:8000/health
Expected response:
ok
The MCP endpoint is:
http://127.0.0.1:8000/mcp
The run subcommand always starts the MCP server in HTTP mode and can manage an ngrok, Cloudflare Quick Tunnel, or zrok public share in the same process lifecycle:
fs-mcp-rs run --ngrok /path/to/allowed/directory
fs-mcp-rs run --ngrok --config ./fs-mcp-rs.toml fs-mcp-rs run --cloudflared /path/to/allowed/directory fs-mcp-rs run --zrok /path/to/allowed/directory
The providers are mutually exclusive. On Windows, the tunnel opens in a new console by default. Use --tunnel-window hidden to avoid a separate visible console while keeping the generated URL in the current terminal, or --tunnel-window inherit to attach normally. On Linux and macOS, new inherits the current terminal because creating a terminal window is desktop-specific. Each provider accepts repeatable extra arguments and an explicit executable path:
fs-mcp-rs run --ngrok --tunnel-window hidden --ngrok-arg=--region=eu
fs-mcp-rs run --ngrok --ngrok-bin /opt/ngrok/ngrok fs-mcp-rs run --cloudflared --cloudflared-arg=--no-autoupdate fs-mcp-rs run --zrok --zrok-bin /opt/zrok/zrok
Stopping the MCP server also stops the tunnel process. Existing invocations such as fs-mcp-rs [PATHS], fs-mcp-rs --config FILE, and fs-mcp-rs serve are unchanged. The earlier --ngrok-window spelling remains an alias for --tunnel-window.
For testing with a remote MCP client, keep fs-mcp-rs bound to loopback and expose it through a tunnel. Start the server first:
fs-mcp-rs --config ./fs-mcp-rs.toml
Verify the local endpoint before creating a tunnel:
curl http://127.0.0.1:8000/health
[!CAUTION]
A public tunnel URL gives remote clients a path to the tools and filesystem roots allowed by your configuration. Start with
read_only = true, grant only narrowly scoped roots, never expose secrets, and stop the tunnel when it is no longer needed. Quick tunnels are intended for development—not permanent production hosting.
Install cloudflared, then create a temporary Quick Tunnel:
cloudflared tunnel --url http://127.0.0.1:8000
cloudflared prints a temporary URL similar to https://random-name.trycloudflare.com. Use the MCP endpoint with /mcp appended:
https://random-name.trycloudflare.com/mcp
For a stable hostname, create a named Cloudflare Tunnel, map a DNS hostname to it, and route that hostname to http://127.0.0.1:8000. Protect long-lived deployments with Cloudflare Access or another authentication layer.
Install ngrok, authenticate its CLI if required by your account, and start an HTTP tunnel:
ngrok http 8000
Use the HTTPS forwarding URL shown by ngrok and append /mcp:
https://example.ngrok-free.app/mcp
The local inspection UI is normally available at http://127.0.0.1:4040. It can expose request details, so keep it local and do not share it publicly.
Use the public HTTPS URL as an HTTP/Streamable HTTP MCP server:
{
"mcpServers": { "filesystem": { "transport": "http", "url": "https://your-public-host.example/mcp" } } }
Test both endpoints after the tunnel starts:
curl https://your-public-host.example/health
curl -i https://your-public-host.example/mcp
A non-200 response from a plain `G
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요