SDK-based MCP bridge that lets AI agents use Shelby as a storage backend for real workflow artifacts.
AI agents already know how to:
- summarize
- transcribe
- analyze files
- generate reports
- create screenshots and other outputs
What they often lack is a clean storage layer for those artifacts.
shelby-agent-bridge makes Shelby usable from MCP-compatible agents such as Hermes and OpenClaw, so agents can store and retrieve:
- reports
- transcripts
- screenshots
- generated files
- user-uploaded documents
- other workflow artifacts
This project is intentionally not about farming. It is about making Shelby useful in real agent workflows.
Working MVP:
- SDK-backed TypeScript implementation
- local stdio MCP server
- real upload/download/metadata flow against Shelby
- first-run wallet bootstrap
- dev faucet helper
- SDK-backed, not CLI-backed
- local stdio MCP first
- no always-on hosted service required
- artifact workflow first, faucet only as a helper
- Hermes/OpenClaw friendly
shelby_get_default_accountshelby_upload_fileshelby_download_fileshelby_get_blob_metadatashelby_list_account_blobsshelby_get_balanceshelby_network_statusshelby_faucet_dev
See docs/tool-contracts.md for the full contracts.
On first launch, the bridge creates a default local Shelby wallet if none exists.
That means an agent can:
- start the bridge
- call
shelby_get_default_account - obtain the generated address
- send that address to the user for funding
This is useful on shelbynet today and for mainnet-style flows later.
Primary deployment mode:
- local MCP server over stdio
- launched by the agent runtime as a subprocess
- no public endpoint required
- no central hosted bridge required
This keeps adoption simple, private, and developer-friendly.
git clone https://github.com/web3blind/shelby-agent-bridge.git
cd shelby-agent-bridge
npm install
npm run buildOptional environment variables:
export SHELBY_NETWORK=shelbynet
export SHELBY_RPC_BASE_URL=https://api.shelbynet.shelby.xyz/shelby
export SHELBY_FULLNODE_URL=https://api.shelbynet.shelby.xyz/v1
export SHELBY_INDEXER_URL=https://api.shelbynet.shelby.xyz/v1/graphql
export SHELBY_FAUCET_BASE_URL=https://faucet.shelbynet.shelby.xyz
export SHELBY_ACCOUNTS_FILE=$PWD/.shelby-accounts.json
export SHELBY_DEFAULT_EXPIRATION_DAYS=30
export SHELBY_ARTIFACTS_PREFIX=artifacts/
export SHELBY_AUTO_FUND_ON_SHELBYNET=truenode dist/src/mcp_server.jsmcp_servers:
shelby:
command: "node"
args: ["/absolute/path/to/shelby-agent-bridge/dist/src/mcp_server.js"]
env:
SHELBY_NETWORK: "shelbynet"
SHELBY_RPC_BASE_URL: "https://api.shelbynet.shelby.xyz/shelby"
SHELBY_FULLNODE_URL: "https://api.shelbynet.shelby.xyz/v1"
SHELBY_INDEXER_URL: "https://api.shelbynet.shelby.xyz/v1/graphql"
SHELBY_FAUCET_BASE_URL: "https://faucet.shelbynet.shelby.xyz"
SHELBY_ACCOUNTS_FILE: "/absolute/path/to/.shelby-accounts.json"Full example: examples/hermes-config.yaml
{
"mcpServers": {
"shelby": {
"command": "node",
"args": ["/absolute/path/to/shelby-agent-bridge/dist/src/mcp_server.js"],
"env": {
"SHELBY_NETWORK": "shelbynet",
"SHELBY_RPC_BASE_URL": "https://api.shelbynet.shelby.xyz/shelby",
"SHELBY_FULLNODE_URL": "https://api.shelbynet.shelby.xyz/v1",
"SHELBY_INDEXER_URL": "https://api.shelbynet.shelby.xyz/v1/graphql",
"SHELBY_FAUCET_BASE_URL": "https://faucet.shelbynet.shelby.xyz"
}
}
}
}Full example: examples/openclaw-mcp.json
- Agent starts bridge
- Agent calls
shelby_get_default_account - Agent sends the address to the user
- User funds the address, or on
shelbynetthe bridge uses faucet helpers when available - Agent uploads an artifact with
shelby_upload_file - Agent retrieves it later with
shelby_download_file
npm test
npm run typecheck
npm run buildshelbynetis a prototype network and may be reset periodically- faucet access may be rate-limited by the network side
- funded accounts work reliably for the artifact workflow
MIT