Crate mcp_execution_files

Crate mcp_execution_files 

Source
Expand description

Virtual filesystem for MCP tools.

Provides an in-memory, read-only virtual filesystem for storing and accessing generated MCP tool definitions. Files are organized in a hierarchical structure like /mcp-tools/servers/<server-id>/....

§Features

  • In-memory storage: All files stored in memory for fast access
  • Strong types: Type-safe paths and error handling
  • Builder pattern: Fluent API for VFS construction
  • Integration: Works seamlessly with mcp-codegen output
  • Thread-safe: All types are Send + Sync

§Examples

§Basic usage

use mcp_execution_files::{FileSystem, FilesBuilder};

// Create FileSystem using builder
let fs = FilesBuilder::new()
    .add_file("/mcp-tools/manifest.json", "{}")
    .add_file("/mcp-tools/types.ts", "export type Params = {};")
    .build()
    .unwrap();

// Read files
let content = fs.read_file("/mcp-tools/manifest.json").unwrap();
assert_eq!(content, "{}");

// Check existence
assert!(fs.exists("/mcp-tools/types.ts"));
assert!(!fs.exists("/missing.ts"));

§Integration with code generation

use mcp_execution_files::FilesBuilder;
use mcp_execution_codegen::{GeneratedCode, GeneratedFile};

let mut code = GeneratedCode::new();
code.add_file(GeneratedFile {
    path: "manifest.json".to_string(),
    content: r#"{"version": "1.0"}"#.to_string(),
});
code.add_file(GeneratedFile {
    path: "tools/sendMessage.ts".to_string(),
    content: "export function sendMessage() {}".to_string(),
});

let vfs = FilesBuilder::from_generated_code(code, "/mcp-tools/servers/github")
    .build()
    .unwrap();

assert!(vfs.exists("/mcp-tools/servers/github/manifest.json"));
assert!(vfs.exists("/mcp-tools/servers/github/tools/sendMessage.ts"));

§Directory operations

use mcp_execution_files::FilesBuilder;

let vfs = FilesBuilder::new()
    .add_file("/mcp-tools/servers/test/file1.ts", "")
    .add_file("/mcp-tools/servers/test/file2.ts", "")
    .build()
    .unwrap();

let files = vfs.list_dir("/mcp-tools/servers/test").unwrap();
assert_eq!(files.len(), 2);

Re-exports§

pub use builder::FilesBuilder;
pub use filesystem::ExportOptions;
pub use filesystem::FileSystem;
pub use types::FileEntry;
pub use types::FilePath;
pub use types::FilesError;
pub use types::Result;

Modules§

builder
Builder pattern for constructing virtual filesystems.
filesystem
In-memory filesystem and export functionality.
types
Core types for the virtual filesystem.