Tiendanube MCP Server - Docker Setup
A complete Model Context Protocol (MCP) server for Tiendanube/Nuvemshop API with Docker support and SSE transport.
๐ Features
Resources
- Products: Full CRUD with advanced filtering (stock, price, categories, SKU)
- Orders: Complete order management with history tracking
- Customers: Customer management with addresses and billing
- Categories: Category hierarchy management
- Coupons: Discount coupon management
- Store: Store information and settings
Transport Modes
- โ SSE (Server-Sent Events) - For web-based clients
- โ Streamable HTTP - Modern HTTP transport
- โ STDIO - For CLI/terminal usage
๐ Prerequisites
- Docker and Docker Compose
- Tiendanube API credentials:
- Access Token
- Store ID
๐ง Setup
1. Clone or Create Project Structure
mkdir tiendanube-mcp
cd tiendanube-mcp
Create the following files:
tiendanube_server.py(main server code)Dockerfiledocker-compose.ymlrequirements.txt.env(from.env.example)
2. Configure Environment Variables
Create .env file:
TIENDANUBE_ACCESS_TOKEN=your_access_token_here
TIENDANUBE_STORE_ID=your_store_id_here
TIENDANUBE_BASE_URL=https://api.tiendanube.com/v1
# Server Configuration
MCP_TRANSPORT=sse
MCP_HOST=0.0.0.0
MCP_PORT=8080
LOG_LEVEL=INFO
3. Build and Run
# Build the Docker image
docker-compose build
# Start the server
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the server
docker-compose down
๐ Accessing the Server
SSE Transport (Default)
URL: http://localhost:8080/sse
Streamable HTTP Transport
Change .env:
MCP_TRANSPORT=streamable-http
URL: http://localhost:8080/mcp
๐ Health Check
curl http://localhost:8080/health
๐ API Endpoints
Products
list_products- List/search products with filtersget_product- Get product by IDget_product_by_sku- Get product by SKUcreate_product- Create new product with variantsupdate_product- Update product informationdelete_product- Delete productupdate_product_stock_price- Bulk update stock/prices
Orders
list_orders- List orders with filtersget_order- Get order detailsget_order_history_values- Get value change historyget_order_history_editions- Get edition changelogcreate_order- Create new orderupdate_order- Update orderclose_order- Close orderopen_order- Reopen ordercancel_order- Cancel order
Customers
list_customers- List/search customersget_customer- Get customer detailscreate_customer- Create new customerupdate_customer- Update customerdelete_customer- Delete customer
Categories
list_categories- List all categoriesget_category- Get category detailscreate_category- Create categoryupdate_category- Update categorydelete_category- Delete category
Coupons
list_coupons- List all couponsget_coupon- Get coupon detailscreate_coupon- Create discount coupon
Store
get_store- Get store information
๐ฏ Usage Examples
Connect from Python Client
import requests
import json
# SSE endpoint
url = "http://localhost:8080/sse"
# List products
payload = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_products",
"arguments": {
"query": "shirt",
"per_page": 10
}
},
"id": 1
}
response = requests.post(url, json=payload)
print(response.json())
Connect from cURL
# List products
curl -X POST http://localhost:8080/sse \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_products",
"arguments": {
"published": true,
"per_page": 20
}
},
"id": 1
}'
Advanced Examples
# Get low stock products
curl -X POST http://localhost:8080/sse \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_products",
"arguments": {
"max_stock": 10,
"published": true
}
},
"id": 1
}'
# Create order
curl -X POST http://localhost:8080/sse \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "create_order",
"arguments": {
"products": [{"variant_id": 123456, "quantity": 2}],
"customer": {
"name": "John Doe",
"email": "john@example.com"
},
"payment_status": "paid"
}
},
"id": 1
}'
๐ณ Docker Commands
# Build
docker-compose build
# Start
docker-compose up -d
# Logs
docker-compose logs -f tiendanube-mcp
# Restart
docker-compose restart
# Stop
docker-compose down
# Remove everything
Tools 5
list_productsList or search products with filters like stock, price, categories, and SKU.create_orderCreate a new order in the store.list_customersList or search customers.list_categoriesList all store categories.get_storeGet store information and settings.Environment Variables
TIENDANUBE_ACCESS_TOKENrequiredAPI access token for Tiendanube/NuvemshopTIENDANUBE_STORE_IDrequiredThe ID of the store to manageTIENDANUBE_BASE_URLBase URL for the API