AURON MCP
A read-only MCP gateway that enables AI agents to retrieve business data (sales, appointments, clients, inventory, etc.) from the AURON Suite backend with role-based access control, audit logging, and rate limiting.
README
AURON MCP — v1 (read-only, multi-tenant, production-lean)
MCP gateway between AI hosts/agents and the AURON Suite backend
(api_peluqueria). Identity, tenancy, and RBAC are resolved from the real
AURON REST API — the model can never steer them.
What this is
- Read-only: every tool is a GET against a verified AURON endpoint. No create/update/delete is exposed.
- Real identity: resolves the authenticated AURON principal via
GET /api/auth/verify/+GET /api/tenants/current/(Bearer token or the httpOnly auth cookies that/api/auth/login/issues). - Fail-closed RBAC: role → permission mirror (
policy/roles.py) derived from AURON's canonical roles. Unknown roles get zero permissions; AURON's own authorization (403) still overrides the table. - Tenancy delegated to AURON: the adapter NEVER sends
tenant_idor anX-Auron-Tenantheader. The upstream derives the tenant from the session via itsTenantMiddleware, exactly like AURON's own clients. - Error boundary: nothing internal (messages, tokens, upstream bodies,
stack traces) reaches the model — see
errors/normalize_error. - Per-call audit: every tool call (success or denied) is written to an append-only JSONL audit log and stdout.
- Rate limiting: per-(user, tool) sliding-window limiter checked before policy on every call.
Tools
| Tool | Endpoint |
|---|---|
auron_sales_summary |
GET /api/pos/summary/daily/ |
auron_appointments_today |
GET /api/appointments/appointments/today/ |
auron_clients_search(query, limit) |
GET /api/clients/clients/?search=&limit= (max 100) |
auron_inventory_alerts |
GET /api/inventory/alerts/low-stock/ |
auron_employee_performance(employee_id) |
GET /api/reports/employees/ |
auron_services_list |
GET /api/services/services/ |
auron_employees_list |
GET /api/employees/employees/ |
auron_branches_list |
GET /api/settings/branches/ |
auron_products_list |
GET /api/inventory/products/ |
auron_dashboard_stats |
GET /api/pos/dashboard/stats/ |
auron_daily_review |
Compound: sales + appointments + inventory + employee performance |
auron_inventory_review |
Compound: products + low-stock alerts |
auron_revenue_analysis |
Compound: dashboard stats + today's sales |
auron_employee_performance_review |
Compound: performance + employee roster |
auron_system_health |
GET /api/healthz/ |
Plus a auron://context/current resource and a daily_business_review prompt.
Quick start
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Copy .env.example to .env and set the real values:
AURON_ADAPTER=http
AURON_API_BASE_URL=http://localhost:8000
Authenticate once (this stores AURON's httpOnly auth cookies for the gateway):
auron-manage login --email caja@salon.test --subdomain salon-uno
auron-manage status # verify the resolved identity/role
Run the server:
auron-mcp # stdio (default; what local MCP hosts expect)
Run over Streamable HTTP (spec 2026-07-28) instead:
AURON_MCP_TRANSPORT=streamable-http \
AURON_MCP_HTTP_HOST=127.0.0.1 \
AURON_MCP_HTTP_PORT=8765 \
auron-mcp # serves the MCP endpoint at http://127.0.0.1:8765/mcp
The HTTP deployment validates the MCP-Protocol-Version / Mcp-Method /
Mcp-Name request headers against the JSON-RPC body (400 + -32020
HeaderMismatch), rejects non-POST with 405, and enables DNS-rebinding
protection. See docs/CONNECTING.md for the full endpoint contract and
src/auron_mcp/http_app.py for the spec layer on top of the SDK transport.
With AURON_ADAPTER=mock (default) the server works offline with a fixed
dev identity (u-mock-1 / t-mock-1 / CLIENT_ADMIN) for development and
testing only.
Tests
pytest -q # 78 tests: policy, rbac, audit, ratelimit, adapters,
# identity provider, tools, MCP stdio handshake, and the
# 2026-07-28 Streamable HTTP header rules
ruff check src tests
Layout
src/auron_mcp/
auth/ identity.py (AuronIdentity) + provider.py (resolve via AURON)
policy/ roles.py (RBAC mirror) + engine.py (PolicyEngine, fail-closed)
audit/ AuditLogger (JSONL + stdout)
adapters/ base.py (interface) / http.py (httpx2 + cookies) / mock.py
tools/ AuronTools (policy + rate-limit + audit around every read)
errors/ normalize_error (model-safe error boundary)
server.py MCPServer wiring (stdio / streamable-http / sse)
http_app.py Streamable HTTP deployment: 2026-07-28 header validation,
DNS-rebinding settings, optional bearer token
manage.py operator CLI: login / status / clean
Security principles
- Never trust a tenant ID supplied by an LLM as an authorization boundary.
- Resolve tenant/scope from authenticated identity and server-side policy.
- Tools are read-only; side effects are intentionally out of scope for v1.
- Every sensitive action is auditable — including denied attempts.
- MCP calls stable AURON application APIs, never raw SQL.
- Never expose secrets, JWTs, upstream response bodies, or stack traces to the model.
- A tool call has a cost — rate-limit it.
See docs/mcp-integration-audit.md (audit of the real AURON backend),
docs/ARCHITECTURE.md, docs/CONNECTING.md, and docs/ROADMAP.md.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.