🚀 文件系統服務器工具文檔
這個文件系統服務器工具提供了一系列用於管理文件和目錄的操作。它支持列出文件內容、讀取文件、搜索文件、編輯文件以及列出允許訪問的目錄等多種功能,能有效助力文件管理工作。
🚀 快速開始
本工具支持在Linux、macOS和Windows系統上運行,以下是不同系統的安裝和運行步驟:
Linux系統
wget https://example.com/fs-mcp-server_linux
chmod +x fs-mcp-server_linux
./fs-mcp-server_linux
macOS系統
tar -xvf fs-mcp-server_macos.tar.gz
./fs-mcp-server_macos
Windows系統
# 下載可執行文件
# 雙擊文件運行
✨ 主要特性
- 跨平臺支持:適用於Linux、macOS和Windows。
- 強大的權限控制:通過配置允許訪問的目錄,確保操作的安全性。
- 高效的操作性能:優化了文件操作的速度,適合處理大量數據。
- 靈活的配置選項:可以通過命令行參數或配置文件自定義行為。
📦 安裝指南
配置允許訪問的目錄
在服務器啟動前,需要配置允許訪問的目錄。可以通過以下命令列出允許訪問的目錄:
./fs-mcp-server_linux --list-allowed-dirs
./fs-mcp-server_linux --add-allowed-dir /path/to/directory
./fs-mcp-server_linux --remove-allowed-dir /path/to/directory
💻 使用示例
客戶端集成示例
以下是一個使用Rust語言的客戶端調用服務器工具的示例:
use mcp_client::{ClientBuilder, transport::StdioTransport};
use serde_json::json;
#[tokio::main]
async fn main() -> Result<()> {
let server_path = "path/to/fs-mcp-server";
let (transport, mut receiver) = StdioTransport::new(server_path, vec![]);
let client = ClientBuilder::new("fs-client", "0.1.0")
.with_transport(transport)
.build()?;
let client_for_handler = client.clone();
tokio::spawn(async move {
while let Some(message) = receiver.recv().await {
if let Err(e) = client_for_handler.handle_message(message).await {
eprintln!("處理消息時出錯: {}", e);
}
}
});
let init_result = client.initialize().await?;
println!("連接到服務器:{} v{}", init_result.server_info.name, init_result.server_info.version);
let allowed_dirs_result = client.call_tool("list_allowed_dirs", &json!({})).await?;
println!("允許訪問的目錄: {:?}", allowed_dirs_result);
let list_dir_result = client.call_tool("list_dir", &json!({"path": "/your/directory/path"})).await?;
println!("目錄內容: {:?}", list_dir_result);
let read_file_result = client.call_tool("read_file", &json!({"file_path": "/path/to/file.txt"})).await?;
println!("文件內容: {}", String::from_utf8(read_file_result).unwrap());
let search_result = client.call_tool("search_files", &json!({
"pattern": "*.txt",
"directories": ["/path/to/search"]
})).await?;
println!("搜索結果: {:?}", search_result);
let edit_file_result = client.call_tool("edit_file", &json!({
"file_path": "/path/to/file.txt",
"content": "新的文件內容"
})).await?;
println!("編輯文件完成: {}", edit_file_result);
Ok(())
}
代碼示例
列出允許訪問的目錄
fn list_allowed_dirs() -> Vec<String> {
let config = read_config();
config.allowed_dirs.clone()
}
讀取文件內容
fn read_file(file_path: &str) -> Option<Vec<u8>> {
match fs::read(file_path) {
Ok(content) => Some(content),
Err(e) => {
eprintln!("無法讀取文件:{}", e);
None
}
}
}
搜索文件
fn search_files(pattern: &str, directories: Vec<&str>) -> Vec<String> {
let mut results = Vec::new();
for dir in directories {
if Path::exists(dir) && Path::is_dir(dir) {
for entry in fs::read_dir(dir).unwrap() {
let entry_path = entry.path().to_str().unwrap();
if entry_path.ends_with(pattern) {
results.push(entry_path.to_string());
}
}
}
}
results
}
編輯文件內容
fn edit_file(file_path: &str, content: String) -> bool {
match fs::write(file_path, content) {
Ok(_) => true,
Err(e) => {
eprintln!("無法寫入文件:{}", e);
false
}
}
}
📚 詳細文檔
項目結構
.
├── README.md
├── LICENSE
├── Cargo.toml
├── src/
│ ├── main.rs
│ └── lib.rs
└── scripts/
構建說明
Linux系統
git clone https://github.com/your-username/fs-mcp-server.git
cd fs-mcp-server
cargo build --release
macOS系統
git clone https://github.com/your-username/fs-mcp-server.git
cd fs-mcp-server
cargo build --release
Windows系統
# 設置 Rust 環境變量
# 克隆項目倉庫並進入目錄後運行
cargo build --release
📄 許可證
本項目使用MIT許可證,具體條款請查看LICENSE文件。
貢獻指南
歡迎社區貢獻!如果有任何問題或建議,請提交Issues到GitHub倉庫。