UNPKG

@atlas-kitchen/atlas-mcp

Version:

Model Context Protocol server for Atlas restaurant management system - enables Claude to interact with restaurant orders, menus, and reports

164 lines (121 loc) 4.69 kB
# Atlas MCP Server An MCP (Model Context Protocol) server for integrating with the Atlas restaurant management system. ## Requirements - Node.js 18.0.0 or higher (required for native fetch and Headers APIs) ## Quick start with npx ```bash npx @atlas-kitchen/atlas-mcp ``` ### Using with Claude Desktop Add this to your Claude Desktop MCP configuration: ```json { "mcpServers": { "atlas-mcp": { "command": "npx", "args": ["-y", "@atlas-kitchen/atlas-mcp"], "env": { "ATLAS_API_KEY": "your-api-key-here" } } } } ``` ### Environment variables | Variable | Required | Description | |---|---|---| | `ATLAS_API_KEY` | Yes | API key for automatic authentication | | `ATLAS_GRAPHQL_ENDPOINT` | No | GraphQL API base URL (default: `https://api.atlas.kitchen`) | | `ATLAS_CLIENT_NAME` | No | Client identifier for API requests (default: `atlas-mcp-1.0.0`) | | `ATLAS_MERCHANT_ID` | No | Default merchant ID on first run | | `ATLAS_OUTLET_ID` | No | Default outlet ID on first run (defaults to `all`) | ## Authentication The server authenticates automatically on startup using `ATLAS_API_KEY`. No manual login is needed. - **Tokens are cached** to `~/.atlas-mcp/cache.json` and reused across restarts - **Merchant/outlet context persists** across sessions until explicitly switched - On auth failure, the server automatically refreshes tokens or re-authenticates ## Local development ```bash npm install cp .env.example .env # Configure with your API key npm run dev # Run with tsx (development) npm run build # Compile TypeScript npm start # Run compiled JavaScript ``` ### Local development config ```json { "mcpServers": { "atlas-mcp": { "command": "npx", "args": ["tsx", "/path/to/atlas-mcp/src/index.ts"], "env": { "ATLAS_API_KEY": "your-api-key-here", "ATLAS_MERCHANT_ID": "1" } } } } ``` ### Pointing to a local backend When iterating on Atlas APIs or developing new MCP tools, point the server to your local backend: ```json { "mcpServers": { "atlas-mcp": { "command": "npx", "args": ["tsx", "/path/to/atlas-mcp/src/index.ts"], "env": { "ATLAS_API_KEY": "your-api-key-here", "ATLAS_GRAPHQL_ENDPOINT": "http://localhost:3000", "ATLAS_MERCHANT_ID": "1" } } } } ``` The server appends `/graphql` automatically, so `http://localhost:3000` becomes `http://localhost:3000/graphql`. **Tip:** After changing MCP config, restart Claude Desktop (or run `/exit` in Claude Code) to pick up the changes. ## Available tools ### Authentication - `atlas_auth_status` - Show current authentication and merchant context - `atlas_list_merchants` - List all merchants the user can access - `atlas_list_outlets` - List outlets for the current merchant - `atlas_switch_merchant` - Switch merchant context (fuzzy matches by name, identifier, or ID) ### Orders - `atlas_get_orders` - List orders with filters (paginated, max 100 per page) - `atlas_get_order` - Get detailed order information - `atlas_get_cart` - Get cart details by ID - `atlas_get_pos_carts` - List open POS carts (requires specific outlet) ### Menu - `atlas_get_items` - Search and list item catalog (paginated, max 100 per page) ### Reports - `atlas_get_sales_report` - Get sales analytics (max 90 day range) ## Publishing to npm Releases are published automatically via GitHub Actions when you create a GitHub release. ### One-time setup 1. Go to [npmjs.com token settings](https://www.npmjs.com/settings/atlas-kitchen/tokens) 2. Create a **Granular Access Token** with **Read and write** permission on packages, scoped to `@atlas-kitchen` 3. In the GitHub repo, go to **Settings > Secrets and variables > Actions** 4. Add a secret named `NPM_TOKEN` with the token value ### Publishing a new version ```bash npm run release # patch: 1.1.0 → 1.1.1 npm run release:minor # minor: 1.1.0 → 1.2.0 npm run release:major # major: 1.1.0 → 2.0.0 ``` This bumps the version, pushes the tag, and creates a GitHub release in one command. The GitHub Action then builds and publishes to npm automatically. ### CI Pull requests and pushes to `main` run a build check across Node.js 18, 20, and 22. ### Usage example ``` # No login needed - authentication is automatic! # Check current status atlas_auth_status() # Switch merchant by name (fuzzy matched) atlas_switch_merchant({ merchant: "My Restaurant" }) # Switch merchant with specific outlet for POS atlas_switch_merchant({ merchant: "My Restaurant", outletId: "5" }) # Query orders atlas_get_orders({ startDate: "2026-01-01", endDate: "2026-01-31" }) ```