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/sseSSE provides:
- Real-time streaming responses
- Automatic reconnection handling
- Works through firewalls and proxies
MCP Client Configuration
Claude Desktop
-
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
- macOS:
-
Add the following configuration:
{
"mcpServers": {
"poobah-mcp": {
"command": "npx",
"args": [
"-y",
"supergateway",
"client",
"--sse",
"https://aos-mcp.poobah.ai/sse"
]
}
}
}- 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/sseOr 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 listYou 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
userIdparameter is available on ALL tools - When provided, the server keys your session state by
userIdinstead 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
userIdin every tool call to ensure consistent state access - The same
userIdshould 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.