Skip to main content
Glama
dizzydes

0pi-mcp-server

by dizzydes

0pi MCP Server

Dropbox for AI Agents - Ephemeral shared workspace for caching contexts and bridging multi-agent workflows

A Model Context Protocol (MCP) server that enables AI agents to cache contexts, bridge workflows, and share ephemeral data via the 0pi free and open API. Think of it like a pastebin or Dropbox for Agents.

Use Cases

🧠 Context Caching - Offload large contexts when approaching token limits
🀝 Multi-Agent Bridge - Share data between different AI agents seamlessly
πŸ“¦ Temporary Storage - 2-hour auto-expiring storage for agent content
πŸ”„ Workflow Continuity - Pass intermediate results between sessions
🌐 Web Automation - Store DOM snapshots for multi-step workflows
πŸ’Ύ Code Sharing - Temporary storage for generated code

Related MCP server: blob-storage

Features

  • Create Shared Workspaces: Save large JSON structures, reasoning states, or DOM elements to the cloud

  • Retrieve Workspaces: Access previously saved data via workspace ID

  • JSONL Logging: All MCP interactions are logged locally in JSON Lines format for debugging and analytics

  • Ephemeral Storage: All data expires after 2 hours (configurable)

Installation

As a Local MCP Server

  1. Install dependencies:

cd mcp-server
npm install
  1. Configure environment (optional):

cp .env.example .env
# Edit .env to set 0PI_API_URL if needed
  1. Run the server:

npm start

Install via NPM

npm install -g @0pi/mcp-server
# or use npx
npx @0pi/mcp-server

Configuration with AI Tools

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "0pi": {
      "command": "npx",
      "args": ["@0pi/mcp-server"],
      "env": {
        "0PI_API_URL": "https://0pi.dev"
      }
    }
  }
}

Cline (VS Code)

Add to your Cline MCP settings:

{
  "mcpServers": {
    "0pi": {
      "command": "npx",
      "args": ["@0pi/mcp-server"],
      "env": {
        "0PI_API_URL": "https://0pi.dev"
      }
    }
  }
}

Available Tools

1. create_shared_workspace

Save data to an ephemeral cloud workspace.

Parameters:

  • agent_id (required): Your agent identifier (e.g., "claude-coder")

  • data (required): The payload to save (object, array, or string)

  • intent (optional): Brief description of why you're saving this

  • ttl_seconds (optional): Time-to-live in seconds (max 7200, default 7200)

Example:

{
  "agent_id": "claude-researcher",
  "data": {
    "research_findings": [...],
    "next_steps": [...]
  },
  "intent": "Saving research results for coding agent",
  "ttl_seconds": 3600
}

Returns:

{
  "workspace_id": "a8f92k3d",
  "url": "https://0pi.dev/w/a8f92k3d",
  "expires_in": 3600
}

2. get_shared_workspace

Retrieve data from a workspace.

Parameters:

  • workspace_id (required): The 8-character workspace ID

Example:

{
  "workspace_id": "a8f92k3d"
}

Returns:

{
  "agent_id": "claude-researcher",
  "payload_type": "json",
  "data": { ... },
  "intent": "Saving research results for coding agent",
  "created_at": "2026-05-03T13:57:56Z"
}

JSONL Logging

All MCP interactions are logged to logs/mcp-conversations.jsonl in JSON Lines format (one JSON object per line).

Log Entry Format:

{
  "timestamp": "2026-05-03T13:57:56.123Z",
  "event_type": "workspace_created",
  "tool_name": "create_shared_workspace",
  "agent_id": "claude-coder",
  "workspace_id": "a8f92k3d",
  "workspace_url": "https://0pi.dev/w/a8f92k3d",
  "payload_size": 15420,
  "intent": "saving DOM structure for handoff",
  "error": null,
  "metadata": null
}

Event Types:

  • server_started: MCP server initialized

  • tools_listed: Agent queried available tools

  • tool_called: Agent invoked a tool

  • workspace_created: Workspace successfully created

  • workspace_creation_failed: Error creating workspace

  • workspace_retrieved: Workspace data retrieved

  • workspace_retrieval_failed: Error retrieving workspace

  • tool_execution_failed: General tool execution error

Analyzing Logs:

# View recent events (last 10 lines)
tail -10 mcp-server/logs/mcp-conversations.jsonl

# View all workspace creations
cat mcp-server/logs/mcp-conversations.jsonl | grep "workspace_created"

# Count events by type using jq
cat mcp-server/logs/mcp-conversations.jsonl | jq -s 'group_by(.event_type) | map({event: .[0].event_type, count: length})'

# View errors only
cat mcp-server/logs/mcp-conversations.jsonl | jq 'select(.error != null)'

# Count workspaces by agent
cat mcp-server/logs/mcp-conversations.jsonl | jq -s 'map(select(.event_type == "workspace_created")) | group_by(.agent_id) | map({agent: .[0].agent_id, count: length})'

Environment Variables

<<<<<<< HEAD

  • 0PI_API_URL: API endpoint URL (default: https://0pi.dev)

    • Legacy: AGENTBOX_API_URL still supported

  • 0PI_LOG_DIR: Directory for log files (default: ./logs)

    • Legacy: AGENTBOX_LOG_DIR still supported

Development

# Run in development
npm start

# Test the server manually
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node index.js

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   AI Agent      β”‚
β”‚  (Claude/GPT)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ MCP Protocol
         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MCP Server     β”‚
β”‚  (this package) β”‚
β”‚                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   JSONL   β”‚  β”‚ (Local logging)
β”‚  β”‚   Logs    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ HTTPS
         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  0pi API        β”‚
β”‚  (0pi.dev)      β”‚
β”‚                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   Redis   β”‚  β”‚ (Ephemeral storage)
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

License

MIT

Available Tools

2 tools
create_objectA

Save objects to ephemeral cloud storage - Store your reasoning state, large JSON structures, or any data to get a shareable URL. Perfect for: caching contexts before token limits, bridging multi-agent workflows, storing intermediate results, sharing data between sessions, or temporary data storage. Returns a shareable URL valid for 2 hours with auto-expiring data.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesYour agent identifier (e.g., "claude-coder", "gpt-researcher")
dataYesThe data to save - can be an object, array, or string
intentNoBrief description of why you are saving this data (helps with debugging and analytics)
ttl_secondsNoTime-to-live in seconds (max 7200 = 2 hours)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it's a write operation ('Save'), returns a shareable URL, has a time-to-live constraint ('valid for 2 hours', 'auto-expiring data'), and mentions use cases that imply it's for temporary storage. It doesn't cover rate limits or authentication needs, but provides substantial context beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core function, followed by specific use cases and behavioral details. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a write operation with 4 parameters), no annotations, and no output schema, the description is largely complete: it covers purpose, usage, key behaviors (ephemeral storage, URL return), and complements the well-documented schema. However, it doesn't explicitly describe the return value format beyond 'shareable URL', which could be more detailed given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the purpose of saving data ('Store your reasoning state, large JSON structures, or any data') and the outcome ('get a shareable URL'), which complements the schema's parameter descriptions. However, it doesn't provide additional details on parameter usage beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Save objects to ephemeral cloud storage') and resource ('objects'), distinguishing it from the sibling tool 'get_object' which presumably retrieves rather than stores. It provides concrete examples of what can be stored ('reasoning state, large JSON structures, or any data') and the outcome ('get a shareable URL').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists multiple scenarios for when to use this tool ('Perfect for: caching contexts before token limits, bridging multi-agent workflows, storing intermediate results, sharing data between sessions, or temporary data storage'), providing clear context. It also implies when not to use it by specifying the ephemeral nature ('auto-expiring data', 'valid for 2 hours'), suggesting alternatives for permanent storage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_objectA

Retrieve data from cloud storage using its ID. Use this to read data that another agent (or yourself) saved previously.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_idYesThe object ID (8-character identifier from the URL)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool is for reading/retrieving data, which implies it's non-destructive, but doesn't specify permissions, rate limits, error conditions, or what happens if the object ID is invalid. For a cloud storage tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero wasteβ€”each sentence adds essential information (what the tool does and when to use it). It's front-loaded with the core purpose and efficiently structured without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and usage but lacks details on behavioral aspects like error handling or return values, which are important for a cloud storage retrieval tool. Without annotations or output schema, more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'object_id' documented as 'The object ID (8-character identifier from the URL)'. The description adds minimal value beyond this by mentioning 'using its ID' but doesn't provide additional context like format examples or constraints. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Retrieve data', 'read data') and identifies the resource ('cloud storage', 'using its ID'). It distinguishes from the sibling 'create_object' by focusing on retrieval rather than creation, though it doesn't explicitly name the sibling. The description avoids tautology by explaining functionality beyond the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to read data that another agent (or yourself) saved previously'), which implicitly distinguishes it from the sibling 'create_object' for saving data. However, it doesn't explicitly state when not to use it or name alternatives, keeping it from a perfect score.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.1
    • First observedcreate_object
    • First observedget_object

TDQS

A3.8/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: create_object saves data to cloud storage and returns a URL, while get_object retrieves data from storage using an ID. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (create_object and get_object), using the same naming convention throughout. This makes them predictable and easy to understand.

Tool Count2/5

With only two tools, the server feels thin for its purpose of ephemeral cloud storage. While create and get cover basic operations, the lack of update, delete, or list tools limits functionality and may cause agent workarounds.

Completeness2/5

The tool surface is significantly incomplete for cloud storage. It supports create and get operations but lacks update, delete, list, or management tools, which are essential for a full storage lifecycle and will likely lead to agent failures in complex workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A lightweight MCP data broker that stores large binary payloads under a UUID, enabling MCP clients and agents to exchange massive results without flooding the LLM context window.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    File uploads for AI agents. Upload, list, and manage files from AI coding assistants like Claude, Cursor, Windsurf, and VS Code Copilot with no signup required.
    1
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables sharing and reading encrypted files (text, images, logs) for AI workflows, with automatic 24-hour expiration and host-blind security.
    35
    156
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dizzydes/0pi-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server