Storacha MCP Storage Server
通过标准化的模型上下文协议接口,使人工智能应用能够与去中心化存储进行交互,从而实现文件上传、检索和身份管理。
README
Storacha MCP 存储服务器
一个用于 Storacha 存储的模型上下文协议 (MCP) 服务器实现,使 AI 应用程序能够通过标准化接口与去中心化存储进行交互。
特性
- 文件操作
- 将文件上传到 Storacha 的去中心化存储网络
- 通过 Storacha 的 HTTP 网关检索文件
- 身份管理
- 获取 Storacha 代理的 DID 密钥
- 双传输模式
- HTTP 与服务器发送事件 (SSE) 用于实时通信
- Stdio 传输用于本地集成
- 标准化接口
- 符合 MCP 的 API,用于工具发现和调用
- JSON-RPC 消息处理
- 安全性
- Bearer Token
- CORS 配置
- 输入验证
- 安全的错误处理
使用场景
- 文档存储与分析: 安全地上传和检索 Blob 文档。
- 长期结构化数据存储: 维护针对长期性和可访问性优化的结构化数据存储。
- 代理和系统之间的数据共享: 使用 CIDs (内容标识符) 轻松地跨多个代理和不同的系统共享数据,从而实现去中心化、可验证和高效的数据交换。
- 应用程序集成: 通过模型上下文协议将 Storacha 存储检索无缝集成到应用程序中。
- AI 模型开发: 通过提供对 Storacha 中存储的外部数据集的可靠访问来支持 AI 模型。
- LLM 集成: 通过直接连接 Storacha Storage 以实现无缝数据访问来增强大型语言模型 (LLM)。
- Web 应用程序备份: 可靠地存储 Web 应用程序的备份副本以进行灾难恢复。
- 机器学习数据集: 有效地管理和访问机器学习工作流程中使用的大型数据集。
安装
-
克隆存储库
git clone https://github.com/storacha/mcp-storage-server.git cd mcp-storage-server -
安装依赖项
pnpm install -
创建一个
.env文件cp .env.example .env -
使用以下环境变量配置服务器
# MCP 服务器配置 MCP_SERVER_PORT=3001 # 可选:服务器监听的端口(默认:3001) MCP_SERVER_HOST=0.0.0.0 # 可选:要绑定的主机地址(默认:0.0.0.0) MCP_CONNECTION_TIMEOUT=30000 # 可选:连接超时时间,以毫秒为单位(默认:30000) MCP_TRANSPORT_MODE=stdio # 可选:要使用的传输模式(stdio 或 sse)(默认:stdio) # 安全性 SHARED_ACCESS_TOKEN= # 可选:设置此项以要求上传进行身份验证 # 存储客户端配置 PRIVATE_KEY= # 必需:授权上传文件的 Storacha 代理私钥 DELEGATION= # 可选:base64 编码的授权,授权私钥的代理所有者上传文件。 如果未设置,则必须为每个上传请求提供。 GATEWAY_URL=https://storacha.link # 可选:用于文件检索的自定义网关 URL(默认:https://storacha.link) # 文件限制 MAX_FILE_SIZE=104857600 # 可选:最大文件大小,以字节为单位(默认:100MB)
启动服务器
选项 1 - 运行 Stdio 服务器(推荐用于本地服务器通信)
pnpm start:stdio
选项 2 - 运行 SSE 服务器(推荐用于远程服务器通信)
pnpm start:sse
MCP 客户端集成 (stdio 模式)
连接到 MCP 服务器
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
// 创建用于通信的传输
const transport = new StdioClientTransport({
command: 'node',
args: ['dist/index.js'],
env: {
...loadEnvVars(),
MCP_TRANSPORT_MODE: 'stdio',
},
});
// 实例化 MCP 客户端
client = new Client(
{
name: 'test-client',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
// 连接到服务器
await client.connect(transport);
列出工具
const response = await client.listTools();
console.log(response.tools.map(tool => tool.name));
// output: ['identity', 'retrieve', 'upload']
获取代理的 DID 密钥
// 获取代理的 DID 密钥
const response = await client.callTool({
name: 'identity',
arguments: {}, // 发送一个空对象
});
console.log('Agent DID:', JSON.parse(response.content[0].text));
// output: {"id":"did:key:z6MkjiNpY1QhuULQUkF5thrDbVz2fZwg49zYMg4a7zY1KDr9"}
上传文件
// 将文件上传到 MCP 服务器中委托集中定义的存储空间
const fileBuffer = new Uint8Array([1, 2, 3]);
const base64File = Buffer.from(fileBuffer).toString('base64');
const result = await client.invoke('upload', {
file: base64File,
name: 'example.txt',
type: 'text/plain',
});
// output: {"root":"bafk...123","rootURL":"https://storacha.link/ipfs/bafk...123","files":[{"name":"test.txt","type":"text/plain","url":"https://storacha.link/ipfs/bafk...123/test.txt"}]}
使用自定义委托上传文件
// 将文件上传到上传请求中委托集中定义的存储空间
const result = await client.invoke('upload', {
file: base64File,
name: 'example.txt',
type: 'text/plain',
delegation: base64Delegation,
});
阅读分步指南以了解如何使用 CLI 创建委托。
使用 MCP Inspector 进行测试
MCP Inspector 提供了一个可视化界面,用于测试和调试 MCP 服务器。 要测试 Storacha MCP 服务器:
- 启动 MCP Inspector
pnpm inspect:stdio
- 启动 Storacha MCP 服务器
pnpm start:stdio
- 连接到您的服务器
- 打开浏览器并访问 Inspector UI,网址为 http://localhost:5173/#tools
- 输入服务器 URL(例如,
http://localhost:3001) - Inspector 将自动发现可用的工具
- 您可以直接从界面测试上传和检索工具
调试技巧
- 检查服务器日志是否存在连接问题
- 验证环境变量是否设置正确
- 确保服务器以 SSE 或 Stdio 模式运行以实现 Inspector 兼容性
开发
项目结构
/
├── src/
│ ├── core/
│ │ ├── server/
│ │ │ ├── index.ts # 主服务器入口点
│ │ │ ├── config.ts # 服务器配置
│ │ │ ├── types.ts # TypeScript 类型定义
│ │ │ ├── tools/ # MCP 工具实现
│ │ │ │ ├── index.ts # 工具注册
│ │ │ │ ├── upload.ts # 上传工具
│ │ │ │ ├── retrieve.ts # 检索工具
│ │ │ │ └── identity.ts # 身份工具
│ │ │ └── transports/ # 传输实现
│ │ │ ├── sse.ts # SSE 传输
│ │ │ └── stdio.ts # Stdio 传输
│ │ └── storage/ # 存储客户端实现
│ │ ├── client.ts # 存储客户端
│ │ ├── config.ts # 存储配置
│ │ ├── types.ts # 存储类型
│ │ └── utils.ts # 存储实用程序
├── test/
│ ├── core/
│ │ ├── server/
│ │ │ ├── config.test.ts # 配置测试
│ │ │ ├── index.test.ts # 服务器测试
│ │ │ ├── tools/ # 工具测试
│ │ │ └── transports/ # 传输测试
│ │ └── storage/ # 存储测试
│ ├── integration/ # 集成测试
│ └── setup.ts # 测试设置
├── .env.example # 示例环境变量
├── .eslintrc.json # ESLint 配置
├── .prettierrc # Prettier 配置
├── .husky/ # Git 钩子
│ └── pre-commit # 预提交钩子
├── package.json # 项目依赖项和脚本
├── tsconfig.json # TypeScript 配置
└── README.md # 项目文档
构建
# 安装依赖项
pnpm install
# 构建项目
pnpm build
# 运行测试
pnpm test
贡献
- Fork 存储库
- 创建您的功能分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
许可证
MIT 或 Apache 2 License
支持
如需支持,请访问 Storacha Support 或在此存储库中打开一个 issue。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。