2a9337b8a3
Exposes the render pipeline, product library, material system, and database as MCP tools. 12 tools + 2 resources: Tools: query_database, list_orders, get_order_detail, search_products, check_materials, list_materials, dispatch_renders, set_material_override, list_output_types, get_worker_activity, get_render_stats, get_queue_status Resources: schaeffler://schema, schaeffler://output-types - Uses FastMCP (Python SDK) with stdio transport - .mcp.json for automatic team-wide registration - uv-managed dependencies (no global install needed) - Documentation in docs/mcp-server.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
Schaeffler Automat MCP Server
An MCP (Model Context Protocol) server that gives Claude Code direct access to the Schaeffler Automat render pipeline, product library, and database.
Quick Start
Prerequisites
- uv installed (
curl -LsSf https://astral.sh/uv/install.sh | sh) - Docker services running (
docker compose up -d) - Claude Code installed
Setup (automatic)
The project includes .mcp.json which automatically registers the MCP server when you open the project in Claude Code. No manual setup needed — just restart Claude Code.
Setup (manual)
claude mcp add schaeffler -- uv run \
--with "mcp[cli]" --with psycopg2-binary --with httpx \
python schaeffler_mcp_server.py
Verify
Inside Claude Code, run:
/mcp
You should see schaeffler listed with status "connected".
Available Tools
| Tool | Description |
|---|---|
query_database |
Run read-only SQL against PostgreSQL (SELECT only) |
list_orders |
List recent orders with render progress |
get_order_detail |
Get full order detail with all lines |
search_products |
Search products by name, PIM-ID, category |
check_materials |
Find unmapped materials in an order |
list_materials |
List all library materials (with optional aliases) |
dispatch_renders |
Dispatch/retry renders for an order |
set_material_override |
Set material override on all order lines |
list_output_types |
List all output types with settings |
get_worker_activity |
Recent STEP processing and render tasks |
get_render_stats |
Dashboard stats: throughput, coverage, counts |
get_queue_status |
Live render queue depth and worker status |
Available Resources
| Resource URI | Description |
|---|---|
schaeffler://schema |
Full database schema (tables + columns) |
schaeffler://output-types |
All configured output types |
Usage Examples
Once connected, you can ask Claude naturally:
Show me all failed renders from today
How many products don't have STEP files?
Check if order SA-2026-00158 has unmapped materials
Dispatch renders for order 6493140c-...
What's the average render time this week?
Run: SELECT name, material_override FROM output_types WHERE material_override IS NOT NULL
Configuration
The server connects to your local Docker services by default. Override via environment variables:
| Variable | Default | Description |
|---|---|---|
DATABASE_URL |
postgresql://schaeffler:schaeffler@localhost:5432/schaeffler |
PostgreSQL connection string |
API_URL |
http://localhost:8888 |
Backend API base URL |
API_EMAIL |
admin@schaeffler.com |
API login email |
API_PASSWORD |
Admin1234! |
API login password |
Custom configuration
Edit .mcp.json in the project root to change defaults, or use claude mcp add with --env flags:
claude mcp add schaeffler \
--env DATABASE_URL=postgresql://user:pass@host/db \
--env API_URL=https://staging.example.com \
-- uv run --with "mcp[cli]" --with psycopg2-binary --with httpx \
python schaeffler_mcp_server.py
Security Notes
- Read-only SQL: The
query_databasetool blocks INSERT/UPDATE/DELETE/DROP statements - API auth: Uses the configured admin credentials to authenticate against the backend API
- Local only: The MCP server runs locally via stdio transport — no network exposure
- Tool approval: Claude Code prompts for user approval before executing each tool call
Troubleshooting
Server not connecting
- Check Docker services are running:
docker compose ps - Check PostgreSQL is accessible:
psql postgresql://schaeffler:schaeffler@localhost:5432/schaeffler -c "SELECT 1" - Check backend API is up:
curl http://localhost:8888/api/auth/login
Dependencies missing
uv pip install "mcp[cli]" psycopg2-binary httpx
Check server logs
# Run manually to see errors
uv run --with "mcp[cli]" --with psycopg2-binary --with httpx \
python schaeffler_mcp_server.py
Reset MCP connection
claude mcp remove schaeffler
claude mcp add schaeffler -- uv run \
--with "mcp[cli]" --with psycopg2-binary --with httpx \
python schaeffler_mcp_server.py