Skip to main content
Glama
sdrom2008

Synerixis Ops MCP

by sdrom2008
README.md
# Synerixis Ops MCP

**跨境电商 · 智能客服工作台**(stdio MCP)

Lightweight remote MCP shell for Synerixis merchant inbox ops.  
极简远程 MCP 壳:不挂本地数据库,不包含 Synerixis 业务源码;所有数据经正式 API。

本仓继续提供 **stdio**(本机 Claude Desktop / Cursor)。手机 / 云端 Grok Bot 请用远程 HTTPS MCP(见下方),不必跑本进程。

---

## English

### What this is
A thin [Model Context Protocol](https://modelcontextprotocol.io) server that lets an external assistant list conversations, read order context, save drafts, and send replies **after the host approves the tool call**.

Heavy lifting stays on the Synerixis API:

`https://api.synerixis.com/api/ops-mcp/v1`

Write tools are marked `destructiveHint`. This process does not open a confirm dialog and does not set `confirm` for the model. The Synerixis API still rejects a write unless `confirm` is true, and it writes an audit row for the attempt and the result.

### What this is not
- Not the Synerixis main product repo
- No local DB / Redis / queue
- No marketplace plugin install
- No autosend, refunds, logistics writes, or secrets. The client refuses those HTTP paths, and the API returns 403 for the same routes.

### Who this is for (beta)

Independent Shopify sellers and Amazon sellers running customer support through Synerixis. **Public beta — still testing.** Expect rough edges; feedback: support@synerixis.com.

### How to use with Grok Bot (recommended) — remote HTTPS

Phone / cloud Grok Bot cannot reach localhost stdio. Use the hosted Streamable HTTP endpoint:

1. In Grok Bot: **Add this MCP server** → URL  
   `https://api.synerixis.com/api/ops-mcp/v1/mcp`
2. When the secure card appears, paste your `sxk_` API Key  
   (Synerixis merchant console → **Connections** → enable external assistant → Generate).
3. Done — the Bot can list inbox threads, read order context, and send only after you approve destructive tool calls.

Auth: `Authorization: Bearer sxk_…` (or `X-Api-Key`). v1 is **stateless JSON** (no SSE session).  
Do **not** put the key in the URL or in this repo.

Cursor / desktop remote example (`mcp.json`):

```json
{
  "mcpServers": {
    "synerixis-ops": {
      "url": "https://api.synerixis.com/api/ops-mcp/v1/mcp",
      "headers": {
        "Authorization": "Bearer sxk_xxxxxxxx"
      }
    }
  }
}
```

stdio (below) still works for Claude Desktop / local Cursor.  
Listed on [cursor.directory](https://cursor.directory). Root ships `.mcp.json` (stdio) + `skills/synerixis-ops-inbox/SKILL.md`. See also [REMOTE.md](./REMOTE.md) and [AUTH.md](./AUTH.md).

### stdio (Claude Desktop / Cursor / any MCP host)

```bash
git clone https://github.com/sdrom2008/synerixis-ops-mcp.git
cd synerixis-ops-mcp
npm install
npm run build
```

```json
{
  "mcpServers": {
    "synerixis-ops": {
      "command": "node",
      "args": ["/absolute/path/to/synerixis-ops-mcp/dist/index.js"],
      "env": {
        "SYNERIXIS_OPS_MCP_API_KEY": "sxk_xxxxxxxx"
      }
    }
  }
}
```

The process reads only `SYNERIXIS_OPS_MCP_API_KEY`. It does not fall back to `SYNERIXIS_API_KEY`.  
Optional `SYNERIXIS_OPS_MCP_BASE_URL` must be `https` on `api.synerixis.com`. A local API needs `SYNERIXIS_OPS_MCP_ALLOW_INSECURE_LOCAL=1` and `http://localhost` or `http://127.0.0.1`.

### Tools
| Tool | Purpose |
|------|---------|
| `list_stores` | Connected stores |
| `list_conversations` | Inbox list (`storeId`, `status`, `limit`, `offset`) |
| `search_conversations` | Search by order number or buyer email (`q`, optional `storeId`/`limit`/`offset`) |
| `get_conversation` | Conversation detail |
| `list_messages` | Messages (`limit`, `offset`) |
| `get_order_context` | Order context for this conversation's platform and store |
| `list_pending_ai_replies` | AI drafts awaiting confirm |
| `get_quota` | AI resolve points |
| `list_agents` | Agents/seats (id, display name, available) for assign |
| `save_draft` | Save draft (no send) |
| `send_message` | Send. Host approval + `confirm=true`. Idempotency key. |
| `approve_ai_reply` | Send one AI draft (`draftId` when several exist) |
| `reject_ai_reply` | Discard one AI draft and store `reason` |
| `assign_conversation` | Assign. Body sends `agentId` |
| `update_conversation_status` | `resolved`, `reopen`, or `closed` |

**Suggested flow:** `search_conversations` or `list_conversations` → `list_messages` / `get_order_context` → `save_draft`; call `list_agents` before `assign_conversation`.

### Auth
See [AUTH.md](./AUTH.md). Keys look like `sxk_` plus hex. This repo never stores tenant secrets.

### License
MIT

---

## 中文

### 这是什么
面向商家的轻量 MCP(**stdio + 远程 HTTPS**)。外部助手可以列会话、看订单、存草稿,并在宿主批准这次工具调用之后发送。

重活仍在正式 API:`https://api.synerixis.com/api/ops-mcp/v1`  
本仓 **无本地数据库**;远程协议面在 `api.synerixis.com`,本仓仍提供 stdio 壳与文档。

写工具带 `destructiveHint`。本进程不弹出确认框,也不会替模型填上 `confirm`。API 仍拒绝 `confirm` 不是 true 的写操作,并记下审计。

### 给谁用(内测)

面向用 Synerixis 做客服的 **Shopify / Amazon 独立卖家**。**目前测试中**,功能还在打磨;问题请发 support@synerixis.com。

### 在 Grok Bot 里怎么用(推荐)— 远程 HTTPS

手机 / 云端 Grok 到不了本机 stdio,请用托管 Streamable HTTP:

1. Grok Bot:**添加 MCP 服务器** → URL  
   `https://api.synerixis.com/api/ops-mcp/v1/mcp`
2. 安全卡填入商家台 **连接** 页生成的 `sxk_` Key(先打开「允许外部助手」)。
3. 连上后即可看收件箱、订单上下文;发送类操作须你在宿主侧批准。

鉴权:`Authorization: Bearer sxk_…`。v1 **无状态 JSON**(无 SSE Session)。  
**禁止**把 Key 写进 URL 或本仓。stdio 装法见上方 English,仍保留给本机宿主。详见 [REMOTE.md](./REMOTE.md)、[AUTH.md](./AUTH.md)。

### 本地 stdio
见上方 English。环境变量只用 `SYNERIXIS_OPS_MCP_API_KEY`(`sxk_` 开头)。不要依赖 `SYNERIXIS_API_KEY`。

### 硬禁
客户端会拒绝这些请求,API 对同一路径返回 403:自动发送、退款、物流写入、读取密钥。

### 鉴权
见 [AUTH.md](./AUTH.md)。

### 开源协议
MIT

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct purposes: conversation listing/reading, message sending, AI draft approval/rejection, assignment, and status updates are separable. The main overlap is list_conversations vs search_conversations, which both return similar summary fields and differ mainly by the optional q filter, so an agent could occasionally choose the wrong one.

Naming Consistency5/5

All tool names use consistent snake_case with predictable verb_noun structure, such as list_conversations, get_conversation, save_draft, send_message, and approve_ai_reply. No mixed conventions or vague names are present.

Tool Count5/5

Fifteen tools is well-scoped for an operations inbox server covering stores, conversations, messages, AI drafts, agents, quota, and order context. Each tool appears to earn its place without excessive surface area.

Completeness4/5

The surface covers the core lifecycle: list/search/read conversations, read messages, inspect order context, save/send replies, manage AI drafts, assign conversations, and update status. Minor gaps exist around broader agent/store management and possible read-state handling, but these are not fatal for the stated ops purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues