product-crud-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@product-crud-mcpAdd a new product called 'Mouse' with price 19.99 and quantity 10"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Product CRUD — FastAPI + Strawberry GraphQL + MCP
A small learning/demo project with one CRUD entity (Product) and one shared
business-logic layer (app/crud.py). The same business logic is exposed through
both:
/graphql— a Strawberry GraphQL API/mcp— MCP tools and a resource for AI hosts
This repo uses SQLite by default so it runs with zero external services. It is
also designed so the database backend can be swapped later, for example to
Oracle via python-oracledb.
Why this project exists
The main goal is to show how to keep core business logic separate from transport and API adapters:
app/crud.pycontains plain CRUD functions and SQLAlchemy accessapp/graphql_schema.pywraps that logic in a GraphQL schemaapp/mcp_server.pywraps the same logic in MCP tools and resourcesapp/main.pymounts both the GraphQL router and a Streamable HTTP MCP app
That makes it easy for the same operations to support different clients and deployment modes without duplicating business rules.
Related MCP server: Shopify Universal MCP Server
Project layout
app/
database.py SQLAlchemy engine/session setup
models.py Product ORM model
crud.py Plain CRUD functions, used by both interfaces
graphql_schema.py Strawberry GraphQL query/mutation schema
mcp_server.py MCP tools and resource adapter
main.py FastAPI app mounting GraphQL and MCP
Dockerfile
docker-compose.yml
k8s/deployment.yaml
k8s/service.yaml
README.md
requirements.txt
.gitignoreKey files for contributors and tools
app/crud.py— core business logic for productsapp/models.py— SQLAlchemyProductmodelapp/database.py— database engine and session setupapp/graphql_schema.py— GraphQL query/mutation definitionsapp/mcp_server.py— MCP tool/resource definitionsapp/main.py— FastAPI app and route mountingDockerfile/docker-compose.yml— containerized deployment
Prerequisites
macOS with Python 3.11+ installed
Docker and Docker Compose installed if you want to run in Docker
Optional:
uvorclaudeif using the MCP CLI/Inspector workflows
Run locally on macOS
From the repository root:
cd "/Users/sauvi/Developer/2026 Job Switch/Coding Main Folder/mcp-crud-demo"
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txtStart the app on a specific host and port:
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000If you want a different port, replace 8000 with any available port.
Verify it is running
Open in your browser:
http://127.0.0.1:8000/healthhttp://127.0.0.1:8000/graphql
Example GraphQL mutation:
mutation {
createProduct(name: "Keyboard", description: "Mechanical", price: 49.99, quantity: 10) {
id
}
}Then query:
query {
products {
id
name
price
quantity
}
}Run in Docker
Build and start the service with Docker Compose:
docker compose up --buildThen open:
http://127.0.0.1:8000/healthhttp://127.0.0.1:8000/graphqlhttp://127.0.0.1:8000/mcp
Optional persistence
By default the SQLite file lives inside the container and resets when the
container is rebuilt. To keep data across restarts, uncomment or add a volume
mapping in docker-compose.yml:
services:
product-crud-mcp:
build: .
ports:
- "8000:8000"
volumes:
- product-data:/app
volumes:
product-data:Run with MCP tools
Option A — MCP Inspector
uv run mcp dev app/mcp_server.pyThis opens a browser UI where you can call create_product, list_products,
update_product, and delete_product.
Option B — Claude Desktop / Claude Code
uv run mcp install app/mcp_server.pyor for Claude Code:
claude mcp add product-crud -- uv run --with "mcp[cli]" mcp run /absolute/path/to/app/mcp_server.pyOption C — Mounted Streamable HTTP
With uvicorn app.main:app running, the same MCP tools are available at
http://127.0.0.1:8000/mcp.
Kubernetes
To build the image and deploy to Kubernetes:
docker build -t product-crud-mcp:latest .
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl port-forward svc/product-crud-mcp 8000:80The K8s YAML includes /health readiness and liveness probes.
Swap in Oracle
To use Oracle instead of SQLite, update app/database.py:
from sqlalchemy import create_engine
DATABASE_URL = "oracle+oracledb://user:password@host:1521/?service_name=FREEPDB1"
engine = create_engine(DATABASE_URL)Add oracledb to requirements.txt. No other application code needs to change.
Notes for new contributors or AI tools
The repository is intentionally small and designed for exploration.
app/crud.pyis the single source of truth for product operations.GraphQL and MCP are adapters on top of that single core.
If you want to add a new interface, follow the same pattern: keep logic in
crud.pyand add a thin adapter layer.Start by reading
app/main.py,app/crud.py, andapp/mcp_server.py.
Support files
.gitignoreexcludes virtual environments, editor settings, caches, and local SQLite files.requirements.txtlists runtime dependencies.Dockerfileanddocker-compose.ymldefine container behavior.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA small MCP server that manages a product inventory using SQLite, providing CRUD operations through exposed MCP tools.Last updated
- Alicense-qualityDmaintenanceProvides a standardized MCP interface for interacting with Shopify tools and services, enabling unified API access and compatibility with MCP-compliant clients.Last updated1MIT
- Flicense-qualityCmaintenanceMCP server exposing Shopify commerce backend with ~22 typed tools for orders, inventory, logistics, and fulfillment, including read/write separation and structured errors.Last updated
- AlicenseCqualityCmaintenanceEnables e-commerce product management with CRUD operations, AI-powered descriptions, and MySQL database integration via MCP.Last updated418MIT
Related MCP Connectors
Manage products, EU Digital Product Passports, operator parties, and GS1 EPCIS supply-chain events.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Federated commerce search across independent WooCommerce merchants. Keyless, read-only MCP server.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/saurabhx04/mcp-crud-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server