shelby-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@shelby-mcpupload the meeting notes to Shelby as notes.txt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
shelby-mcp
MCP server for Shelby Protocol — connect AI agents to decentralized storage.
Works with Claude Desktop, Cursor, Claude Code, Codex, and any MCP-compatible client.
What it does
AI agents can read, write, and manage files on Shelby's decentralized storage network (Aptos) through 5 tools:
Tool | Description |
| Upload text content to Shelby storage |
| Download a blob and return its content |
| List blobs under current account |
| Delete a blob |
| Show account info, balance, network |
Related MCP server: filesystem-mcp
Prerequisites
Node.js v18+
Shelby CLI installed and configured (
npm install -g @shelby-protocol/cli)A funded Shelby account (
shelby faucet)
Install
git clone https://github.com/Jasekeee/shelby-mcp.git
cd shelby-mcp
npm install
npm run buildUse with Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"shelby": {
"command": "node",
"args": ["/absolute/path/to/shelby-mcp/build/index.js"]
}
}
}Restart Claude Desktop. You can now say:
"Upload this report to Shelby as reports/q1-2026.txt"
"Download my config from Shelby"
"What's my Shelby account balance?"
Use with Cursor
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"shelby": {
"command": "node",
"args": ["/absolute/path/to/shelby-mcp/build/index.js"]
}
}
}Use with Claude Code
claude mcp add shelby node /absolute/path/to/shelby-mcp/build/index.jsArchitecture
AI Agent (Claude/Cursor/Codex)
↕ MCP Protocol (stdio)
shelby-mcp server
↕ CLI wrapper
shelby CLI → Aptos blockchain → Shelby storage networkThe server wraps the shelby CLI rather than using the SDK directly. This ensures compatibility across CLI versions and avoids SDK breaking changes.
Configuration
shelby-mcp reads from your existing ~/.shelby/config.yaml. No additional configuration needed — if shelby upload works in your terminal, it works through MCP.
Contributing
PRs welcome. Please open an issue first for major changes.
License
MIT
Links
Available Tools
5 toolsshelby_accountShelby account infoA
Show current Shelby account info: name, address, balance, and active network context.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must communicate behavioral traits. While 'show' suggests a read-only, non-destructive operation, it does not explicitly state safety, authentication requirements, or potential side effects. The description is adequate but lacks explicit behavioral disclosure beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence of 14 words efficiently conveys the tool's purpose. Every word contributes meaning without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (zero parameters, no output schema), the description is largely complete. It lists the key fields returned, which is helpful. However, it could note that the output is a single object or clarify the nature of 'network context' for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter meaning. According to guidelines, a baseline of 4 is appropriate when no parameters exist, as the description correctly omits any parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('show') and the resource ('current Shelby account info'), listing specific fields (name, address, balance, network context). It distinguishes from sibling tools like 'shelby_delete' or 'shelby_upload' which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for viewing account details but doesn't provide explicit guidance on when to use it over alternatives like 'shelby_list'. No when-not-to-use or context for selection among siblings is given, leaving the agent to infer based on tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shelby_deleteDelete from ShelbyA
Delete a blob from Shelby storage.
| Name | Required | Description | Default |
|---|---|---|---|
| blob_name | Yes | Blob name to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavior. 'Delete a blob from Shelby storage' correctly implies destructive action, but lacks detail on permanence, confirmation, or error handling (e.g., if blob doesn't exist). It is adequate for a simple deletion but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with no extraneous information, making it highly efficient for an AI agent to process.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no nested objects), the description is minimally complete. However, it omits details like deletion behavior (e.g., is it permanent?), error conditions, or return value, which would enhance completeness for an agent without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for 'blob_name'. The tool description adds no additional meaning beyond the schema's 'Blob name to delete'. For a single required parameter with full schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (Delete) and the resource (a blob from Shelby storage), directly corresponding to the tool's name and title. It distinctively defines the tool's function, setting it apart from sibling tools like shelby_upload or shelby_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when to delete versus list or account-related actions. No explicit context, prerequisites, or exclusion criteria are mentioned, leaving the agent to infer usage solely from the tool's name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shelby_downloadDownload from ShelbyB
Download a blob from Shelby storage and return its content as text.
| Name | Required | Description | Default |
|---|---|---|---|
| blob_name | Yes | Blob name to download |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It mentions returning content as text but omits key behaviors: whether binary blobs are supported, size limits, authentication needs, or error handling. The description is insufficient for safe invocations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure (e.g., no sections, no front-loading of critical info). While not verbose, it could benefit from more detail within the same length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 param, no output schema, no annotations), the minimum viable description should explain return format, potential errors, and prerequisites. The current description only covers the basic purpose, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single parameter with description 'Blob name to download'). The description adds no additional semantic value beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (download), resource (blob from Shelby storage), and output (return content as text). It distinguishes from siblings like shelby_upload and shelby_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for downloading blobs but lacks context like prerequisites (e.g., existing blob names) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shelby_listList Shelby blobsB
List all blobs stored in Shelby under the current account, optionally filtered by prefix.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Optional prefix to filter blobs, e.g. "reports/" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits (e.g., read-only, pagination, permissions, rate limits). Only states the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Clearly front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a basic list tool with one optional parameter. Lacks mention of return format or pagination, but no output schema exists. Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (prefix parameter described). The description adds no additional meaning beyond the schema, so baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (list), resource (blobs stored in Shelby), scope (under the current account), and optional filtering by prefix. Distinguishes from siblings like delete, download, upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., when to filter vs list all). The description lacks context for decision-making beyond obvious naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shelby_uploadUpload to ShelbyB
Upload a file to Shelby decentralized storage. Provide file content as text, a destination blob name, and expiration.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | File content to upload (text) | |
| blob_name | Yes | Destination blob name, e.g. "reports/q1.txt" | |
| expiration | No | Expiration in natural language, e.g. "in 7 days", "tomorrow", "2025-12-31" | in 30 days |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits like size limits, overwrite behavior, cost, or idempotency, which are important for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words with no redundancy. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context about return values, errors, or post-upload behavior. It is insufficient for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline is 3. The description restates the parameters but adds minimal new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'upload', the resource 'Shelby decentralized storage', and the required inputs (content, blob name, expiration). It distinguishes from sibling tools like shelby_delete or shelby_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives or when not to use it. While it implies usage for uploading, there is no mention of conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
shelby_account - First observed
shelby_delete - First observed
shelby_download - First observed
shelby_list - First observed
shelby_upload
TDQS
Scored across 5 tools
Each tool has a distinct purpose: account info, delete, download, list, and upload. No two tools overlap in functionality, making selection unambiguous.
All tools use the 'shelby_' prefix followed by a verb, except 'shelby_account' which uses a noun but is still clear. The pattern is mostly consistent except for this minor deviation.
With five tools covering the core operations of a decentralized storage service (account, list, upload, download, delete), the count is well-scoped and manageable.
The tool set covers the main CRUD operations but lacks a metadata retrieval tool (e.g., blob size or creation time). This is a minor gap that agents can work around.
Maintenance
Related MCP Connectors
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server to read and manage your Atako AI agents, messages, files, and integrations.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to autonomously manage files on the Filecoin decentralized network through folder management, file uploads, and AI-powered semantic search. Provides seamless integration with Filecoin storage through simple MCP tool calls.2MIT
- AlicenseAqualityAmaintenanceMCP Server that enables LLMs to interact with the local filesystem.131,923 npm20MIT
- AlicenseAqualityCmaintenanceMCP server for AgentFolio — the identity and reputation layer for AI agents. Query agent profiles, trust scores, verification status, and marketplace listings through 8 MCP tools.988 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that allows AI agents to read, search, summarize, and answer questions about local PDF, DOCX, XLSX, and TXT files through five tools.MIT