MoySklad MCP Server
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., "@MoySklad MCP ServerShow me stock levels for all warehouses"
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.
@theyahia/moysklad-mcp
MCP server for MoySklad (МойСклад) warehouse / ERP / CRM API. 60 tools covering the full trade and warehouse lifecycle: products & catalog, stock, counterparties, customer & purchase orders, shipments, supplies, stock moves, inventory, write-offs/enters, returns, invoices, payments & cash, reports, audit log, and webhooks.
Part of WWmcp — a set of MCP servers for emerging markets — and the russian-mcp series.
Quick Start
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"moysklad": {
"command": "npx",
"args": ["-y", "@theyahia/moysklad-mcp"],
"env": {
"MOYSKLAD_TOKEN": "your-bearer-token"
}
}
}
}To use login/password instead of a token, replace the env block with:
"env": { "MOYSKLAD_LOGIN": "you@example.com", "MOYSKLAD_PASSWORD": "your-password" }Claude Code
claude mcp add moysklad --env MOYSKLAD_TOKEN=your-bearer-token -- npx -y @theyahia/moysklad-mcpCursor / Windsurf
Add to MCP settings:
{
"moysklad": {
"command": "npx",
"args": ["-y", "@theyahia/moysklad-mcp"],
"env": { "MOYSKLAD_TOKEN": "your-bearer-token" }
}
}Related MCP server: Upgates MCP Server
Auth
Variable | Description |
| Bearer token (preferred) |
| HTTP Basic auth |
Get a token in MoySklad: Settings → Users → Access tokens (POST /security/token also works with Basic auth). Generating a new token revokes the previous one.
Required permissions: the user/token needs access to the entities you intend to use. Read tools need view rights; create/update tools need edit rights for that document type. Webhooks and some reports require a paid MoySklad plan.
Prices
The MoySklad API stores money in kopecks (1 ruble = 100 kopecks). This server converts automatically:
Input: pass prices/amounts in rubles (e.g.
1500.50)Output: prices/amounts are returned in rubles
(The
get_dashboardreport is passed through verbatim, so its money values are still in kopecks.)
When a product carries a sale price, MoySklad requires a price type. The server attaches your account's default price type automatically (from list_price_types); pass price_type_href to choose a specific one.
Tools (60)
Products & catalog
Tool | Description |
| Search products by name or article |
| Get a product by UUID ( |
| Create a product (price type attached automatically) |
| Update sale/buy/min prices |
| Unified search across products, variants, services, bundles |
| List price types (first is the default) |
| Search modifications / kits / services |
| Create a service |
Stock
Tool | Description |
| Current stock (quantity, reserve, in-transit) |
| Stock broken down by warehouse |
| Fast current-stock snapshot |
Counterparties
Tool | Description |
| Search by name, INN, or phone |
| Get full details ( |
| Create customer/supplier |
Orders & shipments
Tool | Description |
| Customer order lifecycle |
| Purchase orders to suppliers |
| Shipment (demand) linked to an order and warehouse |
| Incoming supply (purchase receipt) |
| Returns from customers / to suppliers |
Warehouse documents
Tool | Description |
| Stock transfer between warehouses |
| Stock enter (оприходование) |
| Write-off (списание) |
| Inventory count (инвентаризация) |
Finance
Tool | Description |
| Incoming / outgoing bank payments |
| Cash receipt / expense orders |
| Sales / supplier invoices |
Reports
Tool | Description |
| Profit by product (revenue, cost, margin) |
| Sales by product (quantity, revenue) |
| Day/week/month dashboard metrics |
| Product turnover over a period |
| Current money balances by account/cash |
Reference & audit
Tool | Description |
| Warehouses / legal entities |
| Reference data |
| Entity metadata (states, attributes) — find order-state hrefs here |
| Account event log / single-entity history |
Webhooks & generic
Tool | Description |
| Manage webhooks (CREATE/UPDATE/DELETE/PROCESSED) |
| Generic list/get for any entity type not covered above |
HTTP Transport
HTTP_PORT=3000 npx @theyahia/moysklad-mcp
# or
npx @theyahia/moysklad-mcp --http 3000Endpoints: POST /mcp (JSON-RPC), GET /health (status). CORS is off by default — the HTTP endpoint acts on your MoySklad token, so set MOYSKLAD_HTTP_CORS_ORIGIN only if a trusted browser origin needs it.
Configuration (env)
Variable | Default | Description |
| — | Bearer token |
| — | Basic auth |
|
| Requests allowed per 3-second window |
|
| Max parallel requests (MoySklad allows 5/user) |
| — | Allowed CORS origin for the HTTP transport |
| — | Start the Streamable HTTP transport on this port |
Rate Limiting
MoySklad uses a weight-per-3-seconds model (≈45 units for a solution token, fewer for login/password, and the get_stock/get_stock_by_store reports cost 5 units each). The built-in limiter is a token bucket charged by request weight, kept conservative by default (MOYSKLAD_RATE_BUCKET=20) because the API can temporarily disable access after repeated 429s. It retries 429/5xx with backoff, honoring MoySklad's X-Lognex-Retry-After header. Solution-token users can raise the bucket toward 45.
Troubleshooting
Symptom | Cause / fix |
| Set |
| Token invalid/expired or the user lacks rights for that entity. A new token revokes old ones. |
| A required field is missing (e.g. an outgoing payment may need an expense item — pass |
Many | Lower request volume or rely on the built-in limiter; raise |
| The runtime isn't sending gzip — use Node ≥18 (its |
Webhooks / some reports fail | Require a paid MoySklad plan. |
E-commerce Stack
Service | MCP Server | What it does |
MoySklad |
| Warehouse, products, orders |
CDEK |
| Delivery, tracking |
DaData |
| Address validation |
YooKassa |
| Payments |
Demo Prompts
"Show me all products with low stock (less than 10 units) and their current prices"
"Create a customer order for counterparty 'OOO Roga i Kopyta' with 50 units of 'Widget Pro' at 1500 rubles each, then create a shipment from the main warehouse"
"Move 20 units of SKU LP15 from the main warehouse to the store, then pull the profit report for this month"
Development
npm install # installs deps + git hooks (husky)
npm run build # tsc -> dist/
npm run lint # eslint
npm run typecheck # tsc --noEmit
npm test # vitest (requires Node >=20)
npm run coverage # vitest with coverageThe published runtime supports Node ≥18; the test tooling requires Node ≥20.
API Reference
Based on MoySklad JSON API 1.2.
License
MIT
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
- AlicenseBqualityCmaintenanceWildberries Seller API MCP server providing 15 tools for managing products, prices, stocks, orders, sales, warehouses, supplies, statistics, feedbacks, and ABC analysis with built-in rate limiting and 409 penalty protection.305710MIT
- Alicense-qualityBmaintenanceMCP server for automating Upgates e-commerce shops via the Upgates API v2. Provides 34 tools for managing orders, products, customers, invoices, carts, coupons, webhooks, and configuration, with built-in GDPR anonymization and readonly mode.MIT
- AlicenseCqualityCmaintenanceMCP server for WEEEK Public API v1 enabling management of tasks, projects, boards, tags, custom fields, time tracking, and CRM entities.10027MIT
- FlicenseAqualityAmaintenanceProvides AI assistants with direct access to the Moysklad (МойСклад) JSON API for reading inventory, products, orders, and reports, and creating/posted documents with safety controls.321
Related MCP Connectors
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Shopify MCP Pack — wraps the Shopify Admin REST API (2024-01)
PandaDoc MCP server for creating, sending, signing, and tracking PandaDoc documents.
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/theYahia/moysklad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server