虚拟文件系统服务

一个基于统一命名空间架构的虚拟文件系统服务,提供多存储范围、检查点和MCP集成功能。

  • by IBM
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 chrishayuk/chuk-mcp-vfs

使用说明

chuk mcp vfs

MCP服务器通过统一名称空间架构提供虚拟文件系统工作空间。

特性

✅ 统一架构 -基于chuk工件命名空间系统构建 ✅ 上下文感知 -从MCP上下文自动确定用户/会话范围 ✅ 存储范围 -会话(临时)、用户(持久)、SANDBOX(共享) ✅ Pydantic土著 -所有请求和响应都使用Pydantic模型 ✅ 异步本机 -全程完全异步/等待 ✅ 类型安全 -枚举和常量,而不是魔术字符串 ✅ 多个工作区 -创建和管理隔离的虚拟文件系统 ✅ 完整的VFS操作 -读、写、ls、树、mkdir、rm、mv、cp、cd、pwd、查找、grep ✅ 检查点 -随时保存和恢复文件系统状态 ✅ MCP集成 -将所有操作作为人工智能代理的MCP工具公开

建筑

chuk-mcp-vfs           → Workspace management + VFS tools
    ↓ uses
chuk-artifacts         → Unified namespace architecture
    ↓ manages
Namespaces (WORKSPACE) → Each workspace is a namespace
    ↓ provides
chuk-virtual-fs        → Async VFS with multiple storage providers
    ↓
Storage Provider       → memory, filesystem, sqlite, s3

关键概念:

  • 一切都是VFS:Blob和工作区都通过命名空间支持VFS
  • 范围:会话(每次对话)、用户(每次用户持久)、SANDBOX(共享)
  • 上下文感知:从MCP服务器上下文自动获取user_id和session_id
  • 网格体系结构:所有命名空间都存储在统一的网格结构中

安装

# Basic installation
pip install chuk-mcp-vfs

# With FUSE mounting support (Linux/macOS)
pip install chuk-mcp-vfs[mount]

# Development
pip install -e .[dev]

快速开始

运行MCP服务器

服务器支持两种传输模式:

1.STDIO传输(适用于克劳德桌面)

# Default - runs with stdio transport
chuk-mcp-vfs

# Explicitly specify stdio transport
chuk-mcp-vfs --transport stdio

# With debug logging
chuk-mcp-vfs --transport stdio --debug

2.SSE传输(用于HTTP/流媒体)

# Run with SSE transport (default: localhost:3000)
chuk-mcp-vfs --transport sse

# Custom host and port
chuk-mcp-vfs --transport sse --host 0.0.0.0 --port 8080

# With debug logging
chuk-mcp-vfs --transport sse --debug

CLI选项

usage: chuk-mcp-vfs [-h] [--transport {stdio,sse}] [--host HOST] [--port PORT] [--debug]

options:
  -h, --help            show this help message and exit
  --transport {stdio,sse}, -t {stdio,sse}
                        Transport type: 'stdio' for Claude Desktop or 'sse' for streaming HTTP (default: stdio)
  --host HOST           Host to bind to (only for SSE transport, default: 127.0.0.1)
  --port PORT, -p PORT  Port to bind to (only for SSE transport, default: 3000)
  --debug, -d           Enable debug logging

程序化服务器使用情况

from chuk_mcp_vfs import run_server

# Start with stdio transport (for Claude Desktop)
run_server(transport="stdio")

# Start with SSE transport (for HTTP/streaming)
run_server(transport="sse", host="0.0.0.0", port=8080)

程序化工作空间使用

import asyncio
from chuk_mcp_vfs import (
    WorkspaceManager,
    ProviderType,
    StorageScope,
    WriteRequest,
)
from chuk_mcp_vfs.vfs_tools import VFSTools

async def main():
    # Initialize manager (uses chuk-artifacts under the hood)
    workspace_manager = WorkspaceManager()
    tools = VFSTools(workspace_manager)

    # Create SESSION-scoped workspace (ephemeral, tied to session)
    await workspace_manager.create_workspace(
        name="my-workspace",
        provider_type=ProviderType.MEMORY,
        scope=StorageScope.SESSION,  # or USER for persistence
    )

    # Write file
    await tools.write(WriteRequest(
        path="/hello.txt",
        content="Hello from VFS!"
    ))

    # Read file
    result = await tools.read("/hello.txt")
    print(result.content)

asyncio.run(main())

MCP工具

工作空间管理

工具 说明
workspace_create 使用提供程序(内存、文件系统、sqlite、s3)创建新的工作区
workspace_destroy 删除工作区并清理资源
workspace_list 列出所有工作区
workspace_switch 切换活动工作区
workspace_info 获取工作区详细信息
workspace_mount 通过FUSE安装工作空间(计划中)
workspace_unmount 卸载工作区(计划)

文件操作

工具 说明
read 读取文件内容
write 写入包含内容的文件
ls 列出目录内容
tree 显示目录树结构
mkdir 创建目录
rm 删除文件/目录(带递归选项)
mv 移动/重命名文件/目录
cp 复制文件/目录(带递归选项)

导航

工具 说明
cd 更改当前工作目录
pwd 打印工作目录
find 按glob模式查找文件
grep 搜索文件内容

检查点

工具 说明
checkpoint_create 创建当前状态的检查点
checkpoint_restore 从检查点还原
checkpoint_list 列出所有检查点
checkpoint_delete 删除检查点

使用Claude Desktop

增添 claude_desktop_config.json:

{
  "mcpServers": {
    "vfs": {
      "command": "chuk-mcp-vfs",
      "args": []
    }
  }
}

或者使用uvx安装(无需全局安装):

{
  "mcpServers": {
    "vfs": {
      "command": "uvx",
      "args": ["chuk-mcp-vfs"]
    }
  }
}

然后,您可以使用自然语言与文件系统交互:

You: Create a workspace called "myproject" and set up a Python project structure

Claude: [Uses workspace_create and mkdir tools]

You: Write a simple Flask app to main.py

Claude: [Uses write tool with Python code]

You: Create a checkpoint called "initial-setup"

Claude: [Uses checkpoint_create]

You: Make changes... actually restore to the checkpoint

Claude: [Uses checkpoint_restore]

例子

看 examples/basic_usage.py 一个完整的工作示例。

存储范围

统一架构提供了三个存储范围:

会议范围(临时)

from chuk_mcp_vfs.models import StorageScope

# Create session-scoped workspace (default)
await workspace_manager.create_workspace(
    name="temp-work",
    scope=StorageScope.SESSION,  # Tied to current session
)
  • 一生:会话结束时过期
  • 非常适合:临时工作区、缓存、当前工作
  • 网格路径: grid/{sandbox}/sess-{session_id}/{namespace_id}
  • 访问:只能从同一会话访问

用户范围(持久)

# Create user-scoped workspace
await workspace_manager.create_workspace(
    name="my-project",
    scope=StorageScope.USER,  # Persists across sessions
)
  • 一生:跨会话持续
  • 非常适合:用户项目、个人数据
  • 网格路径: grid/{sandbox}/user-{user_id}/{namespace_id}
  • 访问:同一用户可以从任何会话访问

SANDBOX范围(共享)

# Create sandbox-scoped workspace
await workspace_manager.create_workspace(
    name="shared-templates",
    scope=StorageScope.SANDBOX,  # Shared across all users
)
  • 一生:无限期持续
  • 非常适合:模板、共享文档、库
  • 网格路径: grid/{sandbox}/shared/{namespace_id}
  • 访问:所有用户都可以访问

提供商类型

from chuk_mcp_vfs.models import ProviderType

# In-memory (fast, temporary)
ProviderType.MEMORY

# Filesystem (persistent)
ProviderType.FILESYSTEM

# SQLite (portable database)
ProviderType.SQLITE

# S3 (cloud storage)
ProviderType.S3

模型(Pydantic)

所有请求和响应都是Pydantic模型:

from chuk_mcp_vfs.models import (
    # Workspace models
    WorkspaceCreateRequest,
    WorkspaceCreateResponse,
    WorkspaceInfo,

    # File operation models
    WriteRequest,
    WriteResponse,
    ReadResponse,
    ListDirectoryResponse,

    # Navigation models
    FindRequest,
    FindResponse,
    GrepRequest,
    GrepResponse,

    # Checkpoint models
    CheckpointCreateRequest,
    CheckpointCreateResponse,
    CheckpointInfo,
)

发展

设置

# Install with dev dependencies (using uv)
uv pip install -e ".[dev]"

# Or with pip
pip install -e ".[dev]"

质量检查

该项目使用 uv 作为包装经理,包括全面的质量检查:

# Run all checks (lint, typecheck, tests with coverage)
make check

# Individual checks
make lint          # Lint with ruff
make format        # Format code with ruff
make typecheck     # Type check with mypy (zero errors!)
make test          # Run tests
make test-cov      # Run tests with coverage report

# Build
make build         # Build distribution packages
make clean         # Clean build artifacts

测试覆盖率

该项目保持高测试覆盖率:

Name                                     Coverage
------------------------------------------------------------
src/chuk_mcp_vfs/__init__.py                 100%
src/chuk_mcp_vfs/checkpoint_manager.py        98%
src/chuk_mcp_vfs/checkpoint_tools.py         100%
src/chuk_mcp_vfs/models.py                   100%
src/chuk_mcp_vfs/server.py                    66%
src/chuk_mcp_vfs/vfs_tools.py                 90%
src/chuk_mcp_vfs/workspace_manager.py         92%
src/chuk_mcp_vfs/workspace_tools.py          100%
------------------------------------------------------------
TOTAL                                         91%

77个测试用例 涵盖:

  • 工作空间管理(18项测试)
  • VFS操作(26次测试)
  • 工作空间工具(11项测试)
  • 检查点管理(7项测试)
  • 检查点工具(4个测试)
  • 服务器集成(10次测试)

类型安全

代码库是 完全类型检查 与mypy:

  • ✅ 零mypy错误
  • ✅ 所有依赖项都有 py.typed 标记物
  • ✅ 已启用严格类型检查
  • ✅ 不 Any 公共API中的类型

建筑细部

工作区管理器

  • 围绕着楚克文物的薄包装ArtifactStore
  • 每个工作区都是一个workspace类型的命名空间
  • 跟踪每个工作区的当前工作目录
  • 上下文感知:自动使用MCP上下文中的user_id/session_id
  • 线程安全工作区操作

命名空间集成

  • 所有工作区都存储在统一的网格架构中
  • 基于范围的自动隔离(会话/用户/沙盒)
  • 命名空间通过以下方式提供VFS实例 get_namespace_vfs()
  • 网格路径使所有权和范围明确

检查点管理器

  • 包裹 chuk-virtual-fs 异步快照管理器
  • 提供工作区范围的检查点
  • 每个检查点的元数据跟踪

VFS工具

  • 使用Pydantic模型封装异步VFS操作
  • 相对于当前工作目录的路径解析
  • 错误处理和验证

MCP集成

  • 将所有工具注册到 chuk-mcp-server
  • 从Pydantic模型自动生成JSON模式
  • 用户/会话跟踪的上下文变量
  • Claude Desktop的标准传输

路线图

完成✅

  • [x] 核心VFS操作(读、写、ls、树、mkdir、rm、mv、cp、cd、pwd)
  • [x] 具有命名空间集成的工作区管理
  • [x] 支持快照的检查点系统
  • [x] Pydantic原生模型(没有字典!)
  • [x] 异步本机实现
  • [x] 类型安全(零mypy错误)
  • [x] 全面的测试套件(覆盖率91%,77次测试)
  • [x] GitHub操作CI/CD工作流
  • [x] 搜索操作(查找、grep)
  • [x] 多个存储提供程序(内存、文件系统、sqlite、s3)
  • [x] 存储范围(会话、用户、沙盒)
  • [x] 上下文感知操作(自动user_id/session_id)
  • [x] MCP服务器集成
  • [x] 完整文档

进行中🚧

  • []FUSE安装实现(占位符存在)
  • []模板系统集成(存在基本支持)

计划的📋

  • []工作区导入/导出
  • []文件监视和事件通知
  • []权限系统
  • []大型文件系统的性能优化
  • []WebDAV服务器支持
  • []压缩和重复数据删除
  • []工作空间共享和协作功能

许可证

Apache许可证2.0-请参阅许可证文件

贡献

欢迎投稿!请确保:

  • 所有代码都使用Pydantic模型(没有dict返回)
  • 所有代码都是异步原生的
  • 使用枚举/常量而不是魔术字符串
  • 为新功能添加测试
  • 更新文档

学分

构建于:

  • chuk工件-统一名称空间架构
  • chuk virtual fs-虚拟文件系统引擎
  • chuk mcp服务器-带上下文管理的mcp框架