使用说明
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框架