Skip to main content
Glama
Danmwihoti

ows-mcp-wallet

by Danmwihoti
README.md
# šŸ” OWS MCP Wallet - Agent Treasury with Spending Limits

MCP server that exposes OpenWallet Standard to Claude with built-in policy engine and spending limits.

**Hackathon Tracks:** #05 (Agent Treasury) + #06 (MCP Wallet Server)

---

## šŸŽÆ What It Does

Allows AI agents (like Claude) to:
- āœ… Check wallet balances across multiple chains
- āœ… Send transactions with policy enforcement
- āœ… Automatic spending limit protection
- āœ… Multi-chain support (Ethereum, Solana, Base)
- āœ… Session-scoped security

**Demo:** Agent can't overspend even if instructed to!

---

## šŸš€ Quick Start (15 Minutes!)

**New:** Auto-generate test wallets! No need for MetaMask/Phantom.

```bash
# 1. Install dependencies
cd ~/ows-mcp-wallet
npm install

# 2. Generate test wallet (creates addresses + private keys)
npm run generate

# 3. Copy output to .env file
# (Script tells you exactly what to copy)

# 4. Get testnet tokens
# Visit faucets (links in output)

# 5. Test it works
npm test
npm run cli balance

# 6. Send real testnet transaction!
npm run cli send ethereum-sepolia 0x000... 0.01
```

**šŸ“– Full walkthrough:** See `QUICKSTART.md` for detailed 15-min guide

---

## šŸ“š Documentation

- **QUICKSTART.md** ⭐ - 15-minute setup guide (start here!)
- **SETUP-GUIDE.md** - Detailed step-by-step setup
- **ENV-VARIABLES.md** - Complete environment variable reference
- **MOBILE-PLAN.md** - Mobile-friendly hackathon guide
- **GETTING-STARTED.md** - Friday build schedule

---

## šŸ”§ New Commands

```bash
npm run generate    # Generate test wallet
npm run test        # Verify configuration
npm run cli balance # Check balances
npm run cli policy  # View spending limits
npm run cli send    # Send test transaction
npm run build       # Build for production
npm run dev         # Run in watch mode
```

---

## šŸ”§ Configure Claude Desktop

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on Mac):

```json
{
  "mcpServers": {
    "ows-wallet": {
      "command": "node",
      "args": ["/path/to/ows-mcp-wallet/dist/mcp-server.js"],
      "env": {
        "ETH_ADDRESS": "0xYourAddress",
        "SOL_ADDRESS": "YourSolanaAddress"
      }
    }
  }
}
```

Restart Claude Desktop.

---

## šŸŽ¬ Demo Script

### Test 1: Check Balance
```
You: "What's my wallet balance?"
Claude: *calls get_balance tool*
Response: Shows balances across all chains
```

### Test 2: Send Transaction (Allowed)
```
You: "Send 0.01 ETH to 0x123... on Sepolia"
Claude: *calls send_transaction*
Response: āœ… Transaction approved and prepared
```

### Test 3: Overspending (Blocked)
```
You: "Send 100 ETH to 0x456..."
Claude: *calls send_transaction*
Response: āŒ DENIED - Exceeds $50 per-transaction limit
```

### Test 4: Check Policy
```
You: "What are my spending limits?"
Claude: *calls check_policy*
Response: Shows daily limit, spent amount, remaining allowance
```

---

## šŸ“Š Policy Engine

Default limits (configurable):
- **Daily limit:** $100 USD
- **Per-transaction limit:** $50 USD
- **Allowed chains:** Sepolia, Devnet, Base Sepolia
- **Optional:** Address whitelist

---

## šŸ—ļø Architecture

```
Claude (AI Agent)
    ↓
MCP Protocol
    ↓
OWS MCP Server
    ↓
Policy Engine (checks limits)
    ↓
Wallet Manager (prepares transaction)
    ↓
OWS (signs & broadcasts)
    ↓
Blockchain
```

---

## šŸ“ Project Structure

```
ows-mcp-wallet/
ā”œā”€ā”€ mcp-server.ts          # MCP server implementation
ā”œā”€ā”€ wallet-manager.ts      # Multi-chain wallet interface
ā”œā”€ā”€ policy-engine.ts       # Spending limits & policy
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ .env.example
ā”œā”€ā”€ testnet-setup.md       # Testnet token guide
└── README.md
```

---

## šŸ”Ø Development Checklist

### Morning (Setup - 1-2 hours)
- [x] Project structure created
- [x] Dependencies installed
- [ ] Get testnet tokens (ETH, SOL, Base)
- [ ] Create OWS wallet
- [ ] Update .env with addresses
- [ ] Build project

### Afternoon (Core Features - 3-4 hours)
- [x] Wallet Manager implemented
- [x] Policy Engine implemented
- [x] MCP Server implemented
- [ ] Test with real testnet addresses
- [ ] Verify policy enforcement works
- [ ] Test all 3 tools with Claude

### Evening (Demo & Polish - 2-3 hours)
- [ ] Record 2-min demo video
- [ ] Create submission materials
- [ ] Deploy to GitHub
- [ ] Write clear documentation
- [ ] Submit to hackathon

---

## šŸŽ„ Demo Video Outline

**2-Minute Demo:**

0:00 - Introduction
- "AI agents need wallets. But they also need guardrails."

0:20 - Show the problem
- "Without limits, an agent could drain your wallet"

0:40 - Show the solution
- Live demo of Claude checking balance
- Claude sending small transaction (approved)
- Claude trying to overspend (blocked)

1:30 - Show the tech
- Quick code walkthrough
- Policy engine enforcement
- Multi-chain support

1:50 - Call to action
- "Built on OWS. Local-first. Self-custody."
- GitHub link

---

## šŸš€ Production Roadmap

If this wins/scales:

**Phase 1:** Polish MVP
- Add actual OWS integration
- Broadcast to real testnets
- Transaction history tracking

**Phase 2:** Enhanced Features
- Custom policy templates
- Multi-user support
- Audit logging dashboard

**Phase 3:** Monetization
- Free tier: Personal use
- Pro ($49/mo): Team policies
- Enterprise: White-label solution

---

## šŸ¤ Contributing

Built for the OpenWallet Standard Hackathon - April 3, 2026

---

## šŸ“„ License

MIT

---

## šŸ”— Links

- OpenWallet Standard: https://openwallet.sh/
- Hackathon: https://hackathon.openwallet.sh/
- MCP Docs: https://modelcontextprotocol.io/

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: fetching balances, sending transactions, and checking policies. No overlap or ambiguity exists between them.

Naming Consistency5/5

All tools follow the same verb_noun snake_case pattern (get_balance, send_transaction, check_policy), making the naming fully consistent and predictable.

Tool Count5/5

With only 3 tools, the server is tightly scoped to basic wallet operations. Each tool handles a core function without redundancy.

Completeness4/5

The set covers balance queries, transactions, and policy checks, but lacks features like transaction history or address generation. These are minor gaps for a policy-limited wallet.

Maintenance

ActivityInactive
ResponsivenessNo issues