@xenia-martech/mcp
v1.0.0
Published
Connect your Xenia account to any AI coding assistant — journeys, trigger ids, content keys, and SDK setup over MCP
Readme
@xenia-martech/mcp
Connect your Xenia account to any AI coding assistant. Your assistant reads your real journeys — trigger ids, request shapes, personalization content keys — and wires the Xenia SDK into your project against those real values instead of guessing.
Works with Claude Code, Cursor, GitHub Copilot (VS Code), Windsurf, OpenAI Codex CLI, and Gemini CLI.
you> connect my Xenia account
Open https://app.xenia.../device Code WXYZ-1234
[approve in the dashboard, pick a workspace]
you> wire the abandoned-cart journey into my checkout
→ reads the journey's real trigger id, method, and fields
→ detects your stack, writes .env, and edits your componentInstall
Pick your assistant — each command registers the server via the assistant's own MCP config.
# Claude Code
claude mcp add xenia -- npx -y @xenia-martech/mcp
# Any assistant (writes the right config file for it)
npx @xenia-martech/mcp install --client cursor # or: windsurf, copilot, codex, gemini, claude-codeOr add it by hand to your assistant's MCP config:
{
"mcpServers": {
"xenia": {
"command": "npx",
"args": ["-y", "@xenia-martech/mcp"]
}
}
}Restart the assistant, then ask it to "connect my Xenia account".
Testing against a non-default engine (e.g. staging)? Add --base-url https://your-engine/xenia
to the install command, or set XENIA_BASE_URL in the server's env.
Authentication
No API keys. Running connect my Xenia account opens a short code + URL; you approve it in the
Xenia dashboard you are already signed in to, pick which org/tenant/environment to grant, and the
assistant is connected. Works with SSO and MFA — no credential ever passes through the chat.
Every connected assistant is listed in the dashboard under API tokens → Connected assistants and can be disconnected there at any time.
Tools
| Tool | What it does |
|---|---|
| xenia_login / xenia_login_wait | Connect via browser approval |
| xenia_status | Who is connected, and the active workspace |
| xenia_list_scopes / xenia_select_scope | See and switch org / tenant / environment |
| xenia_list_journeys | The journeys in the active workspace, each with its trigger(s) — flagged can't connect for a scheduler or a Shopify/HubSpot trigger whose connector isn't connected |
| xenia_get_journey | Trigger id, method, request fields, content keys, and a stack-matched SDK snippet |
| xenia_list_content_keys | Every personalization key, and which journeys resolve it |
| xenia_detect_stack | Framework, SDK entry point, and which token type this project needs |
| xenia_mint_sdk_token | Mint a token and write it to your env file |
| xenia_verify | Read journeys, resolve a content key, optionally fire a test event |
| xenia_logout | Revoke the session and forget the local credential |
Safety
- No token value ever appears in a tool result. Minted SDK tokens are written straight to your
env file; session tokens stay in
~/.xenia/credentials.json(mode0600). - Setup always asks first. Before creating an SDK token, the assistant asks whether you want it minted now or created by you in the dashboard's API Tokens page — it never mints one unasked.
- The SDK token type is derived from your project, not guessed — a server token stays server-side; a browser token is origin-restricted.
- Writes against a production environment require explicit confirmation.
Release channels
npx @xenia-martech/mcp # latest stable
npx @xenia-martech/mcp@rc # release candidate
npx @xenia-martech/mcp@dev # development previewRequires Node 20+. MIT licensed.
