dsers-mcp-product
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 26 GitHub stars
Code Warn
- process.env — Environment variable access in app/.well-known/oauth-authorization-server/route.ts
- process.env — Environment variable access in app/admin/stats/route.ts
- process.env — Environment variable access in app/dropshipping/[transport]/route.ts
- process.env — Environment variable access in app/oauth/authorize/route.ts
- network request — Outbound network request in app/oauth/authorize/route.ts
- process.env — Environment variable access in app/oauth/callback/route.ts
- network request — Outbound network request in app/oauth/callback/route.ts
Permissions Pass
- Permissions — No dangerous permissions requested
This open-source MCP server automates dropshipping workflows. It allows AI agents to interface with DSers to search for products on AliExpress or Alibaba, apply pricing rules, and push listings directly to Shopify and Wix stores.
Security Assessment
The overall risk is rated as Medium. The code does not request dangerous local permissions, execute shell commands, or contain hardcoded secrets. However, it heavily relies on environment variables to manage OAuth flows and administrative statistics. It also makes deliberate outbound network requests to handle OAuth authorization and callbacks. Because this tool is designed to interact with external e-commerce platforms and APIs, it inherently handles sensitive API keys and store data.
Quality Assessment
The project demonstrates strong maintenance and decent community trust. It is licensed under the standard MIT license, received a push as recently as today, and has accumulated 26 GitHub stars. The codebase appears to be an active project that is distributed across multiple reputable package registries.
Verdict
Use with caution. The code itself is open and standard, but because it requires connecting your e-commerce store OAuth and handles financial data (pricing rules, supplier costs), you should ensure your environment variables and API keys are strictly secured during deployment.
Dropshipping automation with AI — import AliExpress/Alibaba products to Shopify & Wix via DSers. Open-source MCP server. Bulk import, pricing rules, multi-store push.
DSers MCP Product — Dropshipping Automation: AliExpress to Shopify & Wix with AI
An open-source MCP server to automate DSers product sourcing, import, bulk edit, and push to Shopify or Wix using AI.
English | 中文
DSers MCP Product is an open-source MCP (Model Context Protocol) server that lets AI Agents automate the entire DSers import workflow — from product sourcing to Shopify or Wix store listing. Search the DSers product pool, import from AliExpress / Alibaba / Accio.com, bulk edit variants, apply pricing rules, and push to multiple stores — all with a single sentence to your AI agent.
What can it do?
- Product sourcing — search the DSers product pool by keyword or image, find products to sell
- One-click import — paste a product link, your AI agent imports it into DSers automatically
- Browse your catalog — view your import staging list and products already pushed to stores
- Clean up titles — strips the messy keyword-stuffed AliExpress titles into something readable
- Pricing rules — markup multiplier (e.g. 2.5×), fixed markup (e.g. +$5), fixed price (e.g. $9.99), compare-at / sale prices, per-variant overrides
- Batch import — import multiple products at once with a list of URLs
- Multi-store push — push one product to all your connected Shopify & Wix stores in one go
- Safety checks — blocks pushes that price below supplier cost, at $0, or with all variants out of stock; warns on <10% margin, <5 units per variant, or sell price under $1
- SEO optimization — let AI rewrite the title and description for better search rankings before pushing
- Supplier swap (SKU Remap) — replace an existing store product's supplier at the SKU level, with reverse-image-search to auto-find a cheaper or in-stock replacement
The server is hosted on Vercel and published across multiple platforms:
Available On
| Platform | Link |
|---|---|
| npm | npmjs.com/package/@lofder/dsers-mcp-product |
| MCP Registry (Official) | registry.modelcontextprotocol.io |
| Smithery | smithery.ai/server/@dsersx/product-mcp |
| Glama.ai | glama.ai/mcp/servers/lofder/dsers-mcp-product |
| mcp.so | mcp.so/server/dsers-mcp-product |
| mcpservers.org | mcpservers.org |
| MCP Marketplace | mcp-marketplace.io |
| awesome-mcp-servers | punkpeye/awesome-mcp-servers |
| Dev.to | Article: I Built an MCP Server to Automate Dropshipping |
| Dev.to | Tutorial: How to Automate AliExpress to Shopify with AI |
Supported product sources
Works with product links from AliExpress, Alibaba.com, and Accio.com. Just give your AI agent a product link from any of these platforms, and it will import the product into DSers and push it to your store. (1688.com links are also recognized but require your DSers account to have 1688 source authorization enabled.)
Accio.com — AI-powered product sourcing
Accio.com is Alibaba's AI sourcing assistant. You describe what you're looking for (e.g. "wireless earbuds under $5"), and it searches AliExpress & Alibaba for you.
How to use it with DSers MCP:
- Go to accio.com and search for products in natural language.
- Browse the results. When you find a product you like, click on it to open the product detail panel.
- Copy the URL from your browser address bar — it will look something like:
https://www.accio.com/c/xxx?productId=1005009871053792&ds=aliexpress.com - Give that link to your AI agent, e.g.: "Import this product and push to my store: [paste URL]"
- The agent handles the rest — no extra setup needed.
This works for both AliExpress and Alibaba products found on Accio.
Documentation
| Document | Description |
|---|---|
| ARCHITECTURE.md | Three-layer architecture, directory structure, data flow |
| USAGE.md | Installation, client config (Cursor, Claude Desktop), scenario examples |
| SKILL.md | AI agent instruction file — workflow, rules, push options, error handling |
What You Need
- Node.js >= 20.0.0
- A DSers account (free plan works)
- A Shopify or Wix store already connected in DSers
- An MCP-compatible AI client — Cursor, Claude Desktop, Claude Code, Claude Managed Agents, Codex CLI, Gemini CLI, OpenClaw, VS Code Copilot (agent mode), Windsurf, Cline, Zed, Continue, or any client that speaks MCP
Quick Start
Step 1: Log in (one time — opens your browser)
npx @lofder/dsers-mcp-product login
A browser window opens to the official DSers login page. You log in on DSers's own website — your password never passes through this tool. After login, the session is encrypted and saved locally.
Step 2: Add to your MCP client (no credentials needed)
The standard mcpServers JSON works for Cursor, Windsurf, Cline, Zed, Continue, opencode, and most MCP clients:
{
"mcpServers": {
"dsers-mcp-product": {
"command": "npx",
"args": ["-y", "@lofder/dsers-mcp-product"]
}
}
}
That's it. No passwords in config files.
Other clients — Claude Desktop, Claude Code, Codex CLI, Gemini CLI, VS Code, OpenClawClaude Desktop — edit claude_desktop_config.json (same JSON as above).
Claude Code (CLI):
claude mcp add dsers -- npx -y @lofder/dsers-mcp-product
Codex CLI — add to ~/.codex/config.toml (note the TOML format and mcp_servers snake_case):
[mcp_servers.dsers]
command = "npx"
args = ["-y", "@lofder/dsers-mcp-product"]
Gemini CLI — add to ~/.gemini/settings.json:
{
"mcpServers": {
"dsers": {
"command": "npx",
"args": ["-y", "@lofder/dsers-mcp-product"]
}
}
}
VS Code (Copilot agent mode) — mcp.json uses servers (not mcpServers):
{
"servers": {
"dsers": {
"command": "npx",
"args": ["-y", "@lofder/dsers-mcp-product"]
}
}
}
OpenClaw — use the openclaw mcp set command:
openclaw mcp set dsers '{"command":"npx","args":["-y","@lofder/dsers-mcp-product"]}'
Remote server (no install needed):
If you don't want to install anything locally, you can connect directly to the hosted MCP server at https://ai.silentrillmcp.com/dropshipping/mcp. This works with any MCP client that supports Streamable HTTP transport. You'll be prompted to authorize with your DSers account on first connect.
{
"mcpServers": {
"dropshipping": {
"url": "https://ai.silentrillmcp.com/dropshipping/mcp"
}
}
}
Also listed on the official MCP Registry.
Claude Managed Agents (docs):
Build autonomous dropshipping agents that run 24/7 in Anthropic's managed infrastructure. Connect this MCP server via the Claude Agent SDK:
from claude_agent_sdk import query, ClaudeAgentOptions
async for message in query(
prompt="Find a cheaper supplier for product dp-123 in store st-456 and update the mapping",
options=ClaudeAgentOptions(
mcp_servers={
"dsers": {"command": "npx", "args": ["-y", "@lofder/dsers-mcp-product"]}
}
),
):
print(message)
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Find a cheaper supplier for product dp-123 in store st-456 and update the mapping",
options: {
mcpServers: {
dsers: { command: "npx", args: ["-y", "@lofder/dsers-mcp-product"] }
}
}
})) {
console.log(message);
}
Authentication — OAuth 2.1
Your DSers password never touches this tool. Here's how login works:
- You run
npx @lofder/dsers-mcp-product login - Your browser opens the DSers OAuth authorization page
- You authorize access on DSers's own website
- The tool receives an OAuth token and encrypts it locally
- Done — the MCP server uses the token automatically. No passwords in config files.
Tokens refresh automatically — a long-lived refresh token keeps your session active without manual re-login. You should rarely need to run login again.
Switching accounts?
npx @lofder/dsers-mcp-product logout
npx @lofder/dsers-mcp-product login
For developers: The server also accepts
DSERS_ACCESS_TOKENandDSERS_REFRESH_TOKENenv vars for headless/CI environments.
Working from source (not the published npm package)? Use
node dist/cli.js logininstead ofnpx @lofder/dsers-mcp-product login. Thenpxform requires thedsers-mcp-productbinary to resolve through yourPATH, which only happens afternpm link(or after a real npm install). In a fresh local clone thenpxcommand exits withcommand not found(exit code 127). Runnpm run buildfirst sodist/cli.jsexists.
Usage Examples
Once set up, just talk to your AI agent in plain language:
"Import this product and push to my Shopify store as a draft: https://www.aliexpress.com/item/1005006372921430.html"
"Import this product, mark up the price by 2.5x, and push it: https://www.aliexpress.com/item/1005006372921430.html"
"Batch import these 3 products and push them all to my store: [URL1] [URL2] [URL3]"
"Search for phone cases under $5 on the DSers product pool"
"Show me what's in my import list"
"What products have I pushed to my store?"
"Push this product to all my connected stores"
"Rewrite the title and description for SEO, then push to my store"
The agent figures out the right tools to call. You don't need to know tool names or parameters.
Install via Smithery
npx @smithery/cli mcp add @dsersx/product-mcp --client cursor
Or browse at smithery.ai/server/@dsersx/product-mcp.
Install from Source
git clone https://github.com/lofder/dsers-mcp-product.git
cd dsers-mcp-product
npm install
npm run build
npm test
Project Structure
dsers-mcp-product/
├── src/
│ ├── cli.ts # npx entry — stdio transport, login/logout
│ ├── index.ts # MCP server init, tool registration
│ ├── instructions.ts # Server-level prompts (agent instructions)
│ ├── tools.ts # 13 MCP tools — schema + handler
│ ├── rules.ts # Rule validation & application engine
│ ├── push-guard.ts # Pre-push safety checks
│ ├── push-options.ts # Push option normalization
│ ├── resolver.ts # URL normalization (AliExpress/Alibaba/Accio)
│ ├── provider/ # DSers API adapter (split by concern)
│ │ ├── index.ts # Provider class + interface
│ │ ├── store.ts # Store discovery, platform detection
│ │ ├── import-ops.ts # Import, save draft, delete
│ │ ├── push.ts # Push execution, shipping logistics
│ │ ├── normalize.ts # Data normalization
│ │ └── helpers.ts # Shared utilities
│ ├── service/ # Business logic orchestration
│ │ ├── index.ts # ImportFlowService class
│ │ ├── import-flow.ts # Import workflows
│ │ ├── push-flow.ts # Push workflows
│ │ ├── preview.ts # Preview & visibility
│ │ ├── status.ts # Job status & deletion
│ │ ├── import-list.ts # Import list browsing (with enrich)
│ │ ├── my-products.ts # Pushed products browsing
│ │ └── find-product.ts # Product pool search
│ ├── dsers/ # Low-level DSers API wrappers
│ │ ├── config.ts # Configuration
│ │ ├── auth.ts # Session management
│ │ ├── client.ts # Authenticated HTTP client
│ │ ├── account.ts # Store & user APIs
│ │ ├── product.ts # Product & import APIs
│ │ └── settings.ts # Shipping, pricing, billing APIs
│ └── auth/ # Browser login (CDP)
├── test/ # Vitest unit tests (585 tests)
├── package.json
└── tsconfig.json
Thirteen Tools
| # | Tool | What it does |
|---|---|---|
| 1 | dsers_store_discover |
List connected stores, shipping methods, pricing rules, and supported capabilities |
| 2 | dsers_rules_validate |
Dry-run pricing or content rules without applying them — catches schema mistakes early |
| 3 | dsers_product_import |
Import a product URL, optionally apply rules at import time, returns a full preview |
| 4 | dsers_product_preview |
Reload preview for an imported product — title, price, variants, stock, active rules |
| 5 | dsers_product_update_rules |
Edit pricing, content, images, variants, or option edits on an imported product (incremental merge — no re-import) |
| 6 | dsers_product_visibility |
Toggle a draft between "hidden draft" and "published/live" before pushing |
| 7 | dsers_store_push |
Push to Shopify / Wix — single product, batch, or fan-out to multiple stores in one call |
| 8 | dsers_job_status |
Poll the status of a push (queued / running / completed / failed) |
| 9 | dsers_product_delete |
Permanently remove a product from the DSers import list (irreversible, requires confirmation) |
| 10 | dsers_import_list |
Browse the import staging list with cost, sell price, stock, markup status, and low-stock warnings |
| 11 | dsers_my_products |
List products already pushed to a specific store, with supplier URLs for re-import |
| 12 | dsers_find_product |
Search the DSers product pool by keyword or image; results include import_url for one-step import |
| 13 | dsers_sku_remap |
SKU-level supplier swap on a live store product. Strict mode (new_supplier_url) or discover mode (reverse-image search + multi-factor ranking). Run mode='preview' before mode='apply'. Requires product:mapping scope |
Pre-Push Safety Checks
Before pushing a product to your store, the tool automatically checks for common mistakes:
- Hard blocks (push won't go through): selling below supplier cost, zero sell price, all variants out of stock
- Warnings (push goes through, but you'll see a heads-up): profit margin below 10%, stock under 5 units, sell price under $1
If something looks wrong, your AI agent will tell you exactly which variant has the problem and why. If you're sure it's fine, you can override with force_push.
Pricing Rule Conflict Detection
If your DSers store has its own Pricing Rule enabled (basic/standard/advanced), and you also set pricing rules through MCP, the push will be blocked — not just warned. The agent will show two fix options:
- Set
pricing_rule_behavior='apply_store_pricing_rule'in push options to accept the store's pricing rule - Disable the Pricing Rule in your DSers store settings to use MCP pricing instead
Four Prompts
Ready-made workflows your AI client can use directly:
| Prompt | Description |
|---|---|
dsers_workflow_quick-import |
Import a single product and push to store as draft |
dsers_workflow_bulk-import |
Batch import with pricing multiplier |
dsers_workflow_multi-push |
Push one product to all connected stores |
dsers_workflow_seo-optimize |
Import, AI-rewrite title & description for SEO, then push |
Environment Variables
| Variable | Required | Description |
|---|---|---|
DSERS_ENV |
No | production (default) or test |
DSERS_BASE_URL |
No | Override API base URL |
IMPORT_MCP_STATE_DIR |
No | Job state directory (default: .state) |
What's Next
- Product pool search enhancements — category filters, URL-based reverse lookup, product detail view
- More store platforms — TikTok Shop, Etsy, eBay (whatever DSers already integrates with)
- Order-level tools — fulfillment status, tracking, order sync
- Remote MCP refresh-token support — extend OAuth sessions beyond the initial access-token lifetime
Got an idea or feature request? Open an issue — contributions are very welcome.
FAQ
What is DSers MCP Product?
DSers MCP Product is a free, open-source MCP server that automates dropshipping product imports from AliExpress, Alibaba, and 1688 to Shopify and Wix stores using AI agents like Claude and Cursor. Instead of manually copying product data, you tell your AI agent what to do in plain English.
How does it work?
You type a command like "Import this product, mark up 2.5x, push to my store" in Cursor or Claude Desktop. The MCP server handles the entire workflow: fetching product data, applying pricing rules, editing variants, and pushing to your connected stores.
Is it free?
Yes. The tool is open-source (MIT license) and completely free to use. You only need a free DSers account and a Shopify or Wix store connected in DSers.
Is it safe? Do I need to share my password?
No passwords are stored or transmitted. Authentication uses a zero-password browser login — you log in on DSers's own website, and the tool picks up the session token. Your credentials never touch the MCP server. The project scored 92/100 on SafeSkill security scanning.
What AI clients does it support?
Cursor, Claude Desktop, Claude Code, Claude Managed Agents, Codex CLI, Gemini CLI, OpenClaw, VS Code Copilot (agent mode), Windsurf, Cline, Zed, Continue, and any MCP-compatible client. Use stdio transport with the npm package, or Streamable HTTP with the hosted remote server.
Should I use the remote server or install locally?
Use the remote server (https://ai.silentrillmcp.com/dropshipping/mcp) if your MCP client supports Streamable HTTP and you want zero install — you skip Node.js setup entirely. Use the local npm package if your client only supports stdio (e.g. some Claude Desktop setups), you need custom env vars, or you want to run it fully offline from your own machine.
How is this different from AliDropify, AutoDS, or other dropshipping tools?
Most dropshipping tools have their own UI and require you to click through web interfaces. DSers MCP Product takes a fundamentally different approach — it connects directly to your AI agent, so you automate workflows through conversation instead of clicking buttons. It's also open-source and free, with no subscription tiers.
What product sources does it support?
AliExpress, Alibaba.com, Accio.com (Alibaba's AI sourcing tool), and 1688. For 1688, your DSers account needs the 1688 source authorization enabled — open DSers → Settings → Suppliers and link your 1688 account there.
What currency does pricing use?
The agent displays prices in USD for readability, but pricing is actually applied in your store's native currency. DSers handles the conversion based on the store's configured currency (Shopify / Wix). Per-variant overrides and fixed prices are interpreted in store currency — confirm with the AI if you're not sure.
Can I push to multiple stores at once?
Yes. The dsers_store_push tool supports pushing a single product to all your connected Shopify and Wix stores in one command, with per-store pricing and visibility options.
Can I skip the browser login and hardcode a token?
For headless / CI environments, yes — set DSERS_ACCESS_TOKEN (and optionally DSERS_REFRESH_TOKEN) as env vars and the tool will skip the OAuth flow. Tokens come from running login once on any machine and copying them out of ~/.dsers-mcp/session.json. Interactive users should stick with npx @lofder/dsers-mcp-product login — it's safer and handles refresh automatically.
Troubleshooting
Push returns persist_failed or CODEC error
Fixed in v1.5.7. If you still see it, make sure you're on the latest version: npm view @lofder/dsers-mcp-product version. Reinstall with npx -y @lofder/dsers-mcp-product@latest to pick up the new release.
Push blocked with "pricing rule conflict"
Your DSers store has its own Pricing Rule enabled, and you also set MCP pricing rules. Pick one: either add pricing_rule_behavior='apply_store_pricing_rule' to the push options (accepts the store-side rule), or disable the Pricing Rule in DSers settings and let MCP drive pricing. See the Pricing Rule Conflict Detection section above.
1688 link imports fail with "unsupported source"
Your DSers account needs 1688 source authorization. Open DSers Settings → Suppliers and link your 1688 seller account. AliExpress works out of the box; 1688 is opt-in.
npx @lofder/dsers-mcp-product login opens browser but gets stuck
The login flow needs ports 3001–3003 free on localhost for the OAuth callback. If any of those are in use (another MCP server, a dev server), kill them or set PORT=3004 before running login.
Remote server returns 401 after working for a while
OAuth access tokens expire. The remote server currently doesn't auto-refresh — reauthorize via your MCP client (disconnect and reconnect the MCP server). Refresh-token support is on the What's Next list.
npx dsers-mcp-product: command not found (exit 127)
You're working from a local source clone, not the published npm package. Use node dist/cli.js login instead — the npx binary only resolves after npm link or a real install. Run npm run build first if dist/ doesn't exist.
Also Available
A Python version is available as a feature-parity subset for local stdio deployments. The TypeScript version is the primary maintained release — use it first.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found