Poobah MCP
Connecting to the Server

Connecting to the Server

This guide explains how to connect your AI agent or MCP client to the Poobah MCP Server.

Server Endpoint

The server uses SSE (Server-Sent Events) transport:

https://aos-mcp.poobah.ai/sse

SSE provides:

  • Real-time streaming responses
  • Automatic reconnection handling
  • Works through firewalls and proxies

MCP Client Configuration

Claude Desktop

  1. Open your Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Or via Claude Desktop: Settings → Developer → Edit Config
  2. Add the following configuration:

{
  "mcpServers": {
    "poobah-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "supergateway",
        "client",
        "--sse",
        "https://aos-mcp.poobah.ai/sse"
      ]
    }
  }
}
  1. Restart Claude Desktop

Note: Requires Node.js installed (for npx).

Look for the tools icon in the chat input area to confirm the connection.

Claude Code

Add the remote MCP server using the CLI:

claude mcp add --transport sse poobah-mcp https://aos-mcp.poobah.ai/sse

Or add directly to your .claude.json or ~/.claude/settings.json:

{
  "mcpServers": {
    "poobah-mcp": {
      "type": "sse",
      "url": "https://aos-mcp.poobah.ai/sse"
    }
  }
}

Verify the connection:

claude mcp list

You should see poobah-mcp listed with a connected status.

Custom MCP Client

If you're building a custom client using the MCP SDK:

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'
 
const transport = new SSEClientTransport(
  new URL('https://aos-mcp.poobah.ai/sse')
)
 
const client = new Client({
  name: 'my-client',
  version: '1.0.0'
}, {
  capabilities: {}
})
 
await client.connect(transport)
 
// List available tools
const tools = await client.listTools()
 
// Call a tool
const result = await client.callTool({
  name: 'get_wallet_info',
  arguments: {}
})

Session Management

Each connection to the Poobah MCP Server establishes an isolated session with its own:

  • Wallet connection state
  • Chain/environment configuration
  • Transaction context

Sessions are independent - changes in one session don't affect others.

Session Persistence with userId

By default, SSE connections create a new session for each connection. This means state (chain, wallet) may be lost when the connection is re-established.

To maintain state across reconnections, include the userId parameter in your tool calls:

{
  "chainId": "galileo-4",
  "userId": "your-unique-session-id"
}

How it works:

  • The userId parameter is available on ALL tools
  • When provided, the server keys your session state by userId instead of the SSE connection ID
  • If your connection drops and reconnects, your chain and wallet configuration persist as long as you use the same userId

Best practices:

  • Use a stable, unique identifier per user or application session
  • Include userId in every tool call to ensure consistent state access
  • The same userId should be used throughout a conversation/session

Example: Persistent Session

const userId = "user-abc-123";
 
// First call - connects and establishes state
await client.callTool({
  name: 'connect_wallet',
  arguments: { chainId: "galileo-4", mode: "test", userId }
});
 
// Later calls - state persists even after reconnection
await client.callTool({
  name: 'get_wallet_balance',
  arguments: { userId }
});

Next Steps

Once connected, explore the Tool Reference to see all available operations.