npm @theyahia/cdek-mcpstdioMITupdated 2mo ago
MCP server for the CDEK delivery API (v2). 16 tools covering the full delivery lifecycle: tariff calculation, order management, shipment tracking, location search, courier pickup, barcode/receipt generation, and webhooks.
What can you do with cdek mcp?
cdek-mcp
MCP server for the CDEK delivery API (v2). 16 tools covering the full delivery lifecycle: tariff calculation, order management, shipment tracking, location search, courier pickup, barcode/receipt generation, and webhooks.
Tools (16)
Tariffs
| Tool | Description |
|---|---|
calculate_tariff |
Calculate delivery cost and time for a specific tariff |
calculate_tariff_list |
Get all available tariffs with prices for a route |
Orders
| Tool | Description |
|---|---|
create_order |
Create a delivery order with sender, recipient, packages |
get_order |
Get order details and status by UUID |
delete_order |
Cancel/delete an order by UUID |
list_orders |
Search/filter orders by date range, IM number, or CDEK waybill |
Tracking
| Tool | Description |
|---|---|
track_shipment |
Track shipment by CDEK waybill number |
Locations
| Tool | Description |
|---|---|
get_cities |
Search city directory by name, postal code, or country |
get_regions |
Search region directory by country or name |
list_delivery_points |
Find pickup points and parcel lockers by city or GPS coordinates |
Barcode & Print
| Tool | Description |
|---|---|
generate_barcode |
Generate barcode/label for an order |
print_receipt |
Generate receipt/waybill PDF for an order |
Courier Pickup
| Tool | Description |
|---|---|
create_courier_pickup |
Schedule a courier pickup for an order |
get_courier_pickup |
Check courier pickup request status |
Webhooks
| Tool | Description |
|---|---|
create_webhook |
Register webhook for order status updates or delivery photos |
delete_webhook |
Remove a webhook subscription by UUID |
Quick Start
Claude Desktop
~/.config/claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"cdek": {
"command": "npx",
"args": ["-y", "@theyahia/cdek-mcp"],
"env": {
"CDEK_CLIENT_ID": "<YOUR_CLIENT_ID>",
"CDEK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
"CDEK_SANDBOX": "true"
}
}
}
}
Cursor / Windsurf
.cursor/mcp.json or .windsurf/mcp.json:
{
"mcpServers": {
"cdek": {
"command": "npx",
"args": ["-y", "@theyahia/cdek-mcp"],
"env": {
"CDEK_CLIENT_ID": "<YOUR_CLIENT_ID>",
"CDEK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
"CDEK_SANDBOX": "true"
}
}
}
}
VS Code (Copilot)
.vscode/mcp.json:
{
"servers": {
"cdek": {
"command": "npx",
"args": ["-y", "@theyahia/cdek-mcp"],
"env": {
"CDEK_CLIENT_ID": "<YOUR_CLIENT_ID>",
"CDEK_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
"CDEK_SANDBOX": "true"
}
}
}
}
Streamable HTTP Transport
For web deployments, use the --http flag or HTTP_PORT env var:
HTTP_PORT=3000 npx @theyahia/cdek-mcp --http
Endpoints:
POST /mcp— MCP JSON-RPCGET /mcp— SSE streamDELETE /mcp— session terminationGET /health— health check
Environment Variables
| Variable | Required | Description |
|---|---|---|
CDEK_CLIENT_ID |
Yes | Client ID from CDEK dashboard |
CDEK_CLIENT_SECRET |
Yes | Client Secret from CDEK dashboard |
CDEK_SANDBOX |
No | true to use sandbox (api.edu.cdek.ru) |
HTTP_PORT |
No | Port for HTTP transport (enables HTTP mode) |
Get your API keys: CDEK Dashboard > Integration > API Keys.
Sandbox Mode
Set CDEK_SANDBOX=true to use the CDEK test environment (api.edu.cdek.ru). Production uses api.cdek.ru.
CDEK publishes a shared sandbox account for integration testing:
- Client ID:
EMscd6r9JnFiQ3bLoyjJY6eM78JrJceI - Client Secret:
PjLZkKBHEiLK3YsjtNrt3TGNG0ahs3kh
⚠️ CDEK rotates this shared test account from time to time. If you get
OAuth token error (HTTP 401) … invalid_client, the public pair has been rotated — request your own sandbox keys from the CDEK integration dashboard (lk.cdek.ru → Integration → API Keys).
Authentication
OAuth 2.0 Client Credentials flow, handled by the OAuthStrategy in @theyahia/mcp-core:
- Automatic token acquisition on first request
- Token caching with proactive refresh shortly before expiry
- Concurrent request deduplication (a single in-flight token refresh is shared)
- Automatic retry on 401 with token invalidation
E-commerce Stack
Pair with other russian-mcp servers for a complete e-commerce AI stack:
| Server | Purpose |
|---|---|
| cdek-mcp | Shipping & logistics |
| dadata-mcp | Address validation, company lookup |
Part of the russian-mcp series.
Demo Prompts
-
"How much does it cost to ship a 2kg parcel from Moscow to Saint Petersburg?" Uses
get_citiesto find city codes, thencalculate_tariff_listto compare all available tariffs. -
"Find the nearest CDEK pickup point to Red Square" Uses
get_citiesto resolve the Moscowcity_code, thenlist_delivery_pointswithlatitude: 55.7539,longitude: 37.6208,radius_km: 5— results are filtered to the radius and sorted by distance (each annotated withкоординатыandрасстояние_км). -
"Create an order to send a book from Kazan to Novosibirsk, schedule courier pickup, and print the receipt" Uses
create_order, thencreate_courier_pickupto schedule collection, andprint_receiptfor the waybill.
Development
git clone https://github.com/theYahia/cdek-mcp.git
cd cdek-mcp
npm install
npm run lint # ESLint (flat config)
npm run typecheck # tsc --noEmit
npm run build # emit dist/
npm test # unit tests (vitest)
npm run test:e2e # e2e smoke test (lists tools, no real credentials)
Run the server locally against the CDEK sandbox (api.edu.cdek.ru) — use the shared test pair from Sandbox Mode or your own sandbox keys:
CDEK_SANDBOX=true \
CDEK_CLIENT_ID=<YOUR_SANDBOX_CLIENT_ID> \
CDEK_CLIENT_SECRET=<YOUR_SANDBOX_CLIENT_SECRET> \
npm run dev
See CHANGELOG.md for release notes.
License
MIT
Install
Add cdek mcp to your client. Pick the one you use.
claude mcp add cdek-mcp -- npx -y @theyahia/cdek-mcpcodex mcp add cdek-mcp -- npx -y @theyahia/cdek-mcpamp mcp add cdek-mcp -- npx -y @theyahia/cdek-mcp{
"mcpServers": {
"cdek-mcp": {
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"cdek-mcp": {
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"cdek-mcp","command":"npx","args":["-y","@theyahia/cdek-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"cdek-mcp": {
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"cdek-mcp": {
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"cdek-mcp": {
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"cdek-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"cdek-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"@theyahia/cdek-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @theyahia/cdek-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance16/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 70 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 2.0.2Latest | May 1, 2026 |
| 1.0.1 | Mar 31, 2026 |