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
npm install
2. Set Up Environment
Copy .env.example to .env and fill in your credentials:
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:
npm run dev:mock
Terminal 2 - Geenie Proxy Server:
npm run dev
The mock server runs on port 9000, and the proxy runs on port 3000.
4. Test the Health Check
curl http://localhost:3000/health
5. Test the MCP Proxy
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)
- Project setup with TypeScript
- Fastify server with CORS
- Health check endpoint
- Basic MCP proxy route
- 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 reloadnpm run dev:mock- Start mock Amazon MCP servernpm run build- Compile TypeScript to JavaScriptnpm start- Run production buildnpm 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 toolstools/call- Simulates tool execution with mock data
Next Steps
- Add API key validation (Phase 2)
- Integrate with Supabase for user/subscription data
- Implement Amazon token refresh logic
- Add subscription-based tool filtering
- Deploy to Railway
License
MIT