Skip to main content
Glama
foxglovebrands

Geenie MCP Proxy Server

README.md
# Geenie MCP Proxy Server

The Geenie MCP proxy server sits between Claude Desktop and Amazon's MCP server, handling authentication, token management, and subscription-based tool filtering.

## Quick Start

### 1. Install Dependencies

```bash
npm install
```

### 2. Set Up Environment

Copy `.env.example` to `.env` and fill in your credentials:

```bash
cp .env.example .env
```

For local development, the mock Amazon MCP server endpoints are pre-configured.

### 3. Run the Servers

You'll need **two terminal windows**:

**Terminal 1 - Mock Amazon MCP Server:**
```bash
npm run dev:mock
```

**Terminal 2 - Geenie Proxy Server:**
```bash
npm run dev
```

The mock server runs on port 9000, and the proxy runs on port 3000.

### 4. Test the Health Check

```bash
curl http://localhost:3000/health
```

### 5. Test the MCP Proxy

```bash
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/list", "params": {}}'
```

You should see a list of tools returned from the mock Amazon server.

## Project Structure

```
geenie-proxy/
├── src/
│   ├── index.ts              # Server entry point
│   ├── config/
│   │   └── env.ts            # Environment configuration
│   ├── routes/
│   │   ├── health.ts         # Health check endpoints
│   │   └── mcp.ts            # MCP proxy route
│   └── utils/
│       └── logger.ts         # Pino logger setup
├── tests/
│   └── mocks/
│       └── amazon-server.ts  # Mock Amazon MCP server
└── package.json
```

## Development Phases

### ✅ Phase 1: Basic Proxy (Current)
- [x] Project setup with TypeScript
- [x] Fastify server with CORS
- [x] Health check endpoint
- [x] Basic MCP proxy route
- [x] Mock Amazon MCP server

### ⏳ Phase 2: Authentication (Next)
- [ ] API key validation middleware
- [ ] Subscription status checking
- [ ] Supabase integration
- [ ] Caching layer

### ⏳ Phase 3: Token Management
- [ ] Amazon token refresh logic
- [ ] Multi-account handling
- [ ] Token expiry checks

### ⏳ Phase 4: Tool Filtering
- [ ] Subscription tier restrictions
- [ ] Global tool blacklist
- [ ] Disabled tools injection

### ⏳ Phase 5: Production Ready
- [ ] Token encryption
- [ ] Rate limiting
- [ ] Error handling improvements
- [ ] Railway deployment

## Available Scripts

- `npm run dev` - Start proxy server with hot reload
- `npm run dev:mock` - Start mock Amazon MCP server
- `npm run build` - Compile TypeScript to JavaScript
- `npm start` - Run production build
- `npm test` - Run tests (coming soon)

## Environment Variables

See `.env.example` for all available configuration options.

## Testing

Currently using a mock Amazon MCP server that simulates:
- `tools/list` - Returns available MCP tools
- `tools/call` - Simulates tool execution with mock data

## Next Steps

1. Add API key validation (Phase 2)
2. Integrate with Supabase for user/subscription data
3. Implement Amazon token refresh logic
4. Add subscription-based tool filtering
5. Deploy to Railway

## License

MIT