Symbia Labs MCP钱包
一个安全的桌面应用程序,用于管理API集成并通过模型上下文协议(MCP)公开它们。将任何OpenAPI规范转换为具有加密凭证存储的MCP工具。
特性
- 桌面应用程序:原生Tauri应用程序,带有React UI,用于管理集成和凭据
- OpenAPI到MCP的转换:解析任何OpenAPI 3.x规范并自动生成MCP工具
- 安全凭证存储:AES-256-GCM加密,带Argon2d密钥推导,可选操作系统密钥链支持
- 基于会话的身份验证:配置文件中没有密码-CLI使用安全会话令牌
- 双MCP传输:stdio(克劳德桌面)和HTTP/SSE(网络访问)
- 自定义集成:添加具有OpenAPI规范的任何API,而不仅仅是预定义的提供程序
- 开放遥测支持:可选的可观察性,可配置OTLP导出
建筑
┌─────────────────────────────────────────────────────────────┐
│ Tauri Desktop App │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ React UI (Vite + Tailwind) │ │
│ │ - Unlock screen - Integration management │ │
│ │ - Credential vault - Server status/control │ │
│ │ - Settings - OpenTelemetry config │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ IPC │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Rust Core │ │
│ │ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │ │
│ │ │ wallet-core │ │openapi-parser│ │ mcp-server │ │ │
│ │ │ - Crypto │ │ - Parse 3.x │ │ - stdio │ │ │
│ │ │ - Storage │ │ - Extract ops│ │ - HTTP/SSE │ │ │
│ │ │ - Sessions │ │ - Namespace │ │ - Execute │ │ │
│ │ └─────────────┘ └──────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │
v v
┌─────────────────┐ ┌─────────────────┐
│ OS Keychain │ │ External APIs │
│ (macOS/Win/Lin) │ │ (Stripe, etc.) │
└─────────────────┘ └─────────────────┘快速开始
先决条件
- 锈蚀1.75+
- Node.js 18+(用于UI开发)
- Tauri CLI:
cargo install tauri-cli
构建
# Build the MCP server CLI
cargo build --release --package mcp-server
# Build the desktop app
cd crates/tauri-app && cargo tauri build用法
- 启动桌面应用程序
- 打开 MCP Wallet.app (macOS)或同等产品 - 使用安全密码创建钱包(首次运行)或使用密码解锁
- 添加集成
- 浏览目录或单击“添加自定义”以添加任何与OpenAPI兼容的API - 输入OpenAPI规范URL和可选的API密钥
- 配置Claude桌面
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"symbia-mcp-wallet": {
"command": "/path/to/mcp-wallet-server",
"args": ["--stdio"]
}
}
}无需密码! CLI会自动使用您在桌面应用程序中解锁钱包时创建的安全会话令牌。会议持续24小时。
- 在Claude中使用MCP工具
- 您的集成显示为工具(例如。, stripe_customers_create) - Claude可以调用这些工具,钱包处理身份验证
基于会话的身份验证
MCP钱包使用临时会话令牌,而不是共享您的主密码:
- 当您在桌面应用程序中解锁钱包时,会创建一个24小时会话
- 会话令牌存储在
~/.mcp-wallet/session.json - MCP服务器CLI使用此令牌解密凭据,而不需要密码
- 锁定钱包后,会话被清除,CLI访问被撤销
这意味着:
- 配置文件或环境变量中没有密码
- 当您锁定钱包时,MCP访问权限会自动撤销
- 您可以在保持MCP工具工作的同时关闭桌面应用程序(会话持续)
存储位置
| 平台 | 数据目录 |
|---|---|
| macOS | ~/Library/Application Support/com.symbia-labs.mcp-wallet/ |
| Linux | ~/.local/share/mcp-wallet/ |
| 窗户 | %APPDATA%\symbia-labs\mcp-wallet\ |
内容:
wallet.json-加密集成和凭据salt-关键衍生盐verify-密码验证数据session.json-当前会话令牌(如果已解锁)settings.json-非敏感配置(OTEL、自动锁定等)
板条箱
| 板条箱 | 描述 |
|---|---|
wallet-core | 加密、存储、会话、设置、集成注册表、凭据管理 |
openapi-parser | OpenAPI 3.x解析和操作提取 |
mcp-server | MCP协议实现(stdio+HTTP/SSE传输) |
tauri-app | 带有React UI的桌面应用程序 |
安全模型
主密钥推导
Password → Argon2id(password, salt, t=3, m=64MB, p=4) → 256-bit key会话令牌安全
Session Token (random 32 bytes) → hex-encoded (64 chars)
Master Key → AES-256-GCM(token_as_key) → Encrypted in session.json凭证加密
Plaintext API Key → AES-256-GCM(master_key, random_iv) → iv:tag:ciphertext内存安全
- 所有的秘密都包裹在
Zeroize类型 - 删除时从内存中清除
- 日志中没有敏感数据
- 钱包锁上的会话已清除
MCP工具命名约定
工具已命名 {integration}_{normalized_operation_id}:
stripe_customers_create→ POST/v1/客户openai_chat_completions_create→ POST/v1/聊天/补全github_repos_list→ 获取/转发
配置
开放遥测
在设置中配置可观察性→ 可观察性:
- OTLP端点:gRPC或HTTP端点(例如。,
http://localhost:4317) - 服务名称:默认为
symbia-mcp-wallet - 认证头:适用于云提供商(Honeycomb、Grafana cloud等)
- 导出选项:切换跟踪和/或指标
自动锁定
在设置中配置钱包自动锁定超时→ 安全。
发展
运行测试
cargo test在开发中构建UI
cd crates/tauri-app/ui
npm install
npm run dev在开发中运行桌面应用程序
cd crates/tauri-app
cargo tauri dev许可证
麻省理工学院
贡献
欢迎投稿!请打开问题或PR。
______________________________________________________________________
建造于 Symbia实验室
