Skip to content

dizzydes/0pi-mcp-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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

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

Releases

No releases published

Packages

 
 
 

Contributors