プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。プロトタイプ · 30分ごとに更新
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

ConnectWise CPQ

作者:wyre-technologyバージョン 1.0.4i★ 0iパソコンで動く
レジストリ名io.github.wyre-technology/connectwise-cpq-mcp

インストール方法

What it does

MCP server for ConnectWise CPQ (Sell) — quotes, line items, customers, terms, and templates.

  • Connects パソコンで動く
  • Account or key Needs CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, AUTH_MODE
  • Category その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 3/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月14日

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげますが、先に準備が必要です

ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません

  1. Docker を入れる

    1 回だけ。Docker が必要なすべてのサーバーで使えます

    Docker のダウンロードページを開く ↗

  2. ConnectWise CPQ に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    ConnectWise CPQ のサイトを開く ↗

  3. パソコン版 Claude アプリの設定ファイルを開く

    SettingsDeveloperEdit Config

  4. この設定を貼り付けて保存

    {
      "mcpServers": {
        "connectwise-cpq": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "CPQ_ACCESS_KEY",
            "-e",
            "CPQ_PUBLIC_KEY",
            "-e",
            "CPQ_PRIVATE_KEY",
            "-e",
            "AUTH_MODE",
            "ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4"
          ],
          "env": {
            "CPQ_ACCESS_KEY": "your-value",
            "CPQ_PUBLIC_KEY": "your-value",
            "CPQ_PRIVATE_KEY": "your-value",
            "AUTH_MODE": "your-value"
          }
        }
      }
    }

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude を終了してもう一度開く

  6. 試してみる

    ConnectWise CPQ を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が ConnectWise CPQ を使っていると言うか、回答に ConnectWise CPQ のツール名が出れば接続成功です

追加の設定 2 項目(入力しなくても使えます)

上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。

  • MCP_TRANSPORT Transport mode. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · 初期値 stdio
  • LOG_LEVEL ログの詳細度:debug、info、warn、error
    英語の原文を見るLog verbosity: debug, info, warn, error
    · 初期値 info

説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT はまだ ConnectWise CPQ につなげません

ConnectWise CPQ はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません

代わりにできること

A · ConnectWise CPQ につなげるアプリを使う

  • ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
  • ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)
  • ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)
  • ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)

B · その他 の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code につなげますが、先に準備が必要です

ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)

  1. Docker を入れる

    1 回だけ。Docker が必要なすべてのサーバーで使えます

    Docker のダウンロードページを開く ↗

  2. ConnectWise CPQ に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    ConnectWise CPQ のサイトを開く ↗

  3. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  4. このコマンドを貼り付けて Enter

    claude mcp add --scope user connectwise-cpq --env CPQ_ACCESS_KEY=your-value --env CPQ_PUBLIC_KEY=your-value --env CPQ_PRIVATE_KEY=your-value --env AUTH_MODE=your-value -- docker run -i --rm -e CPQ_ACCESS_KEY -e CPQ_PUBLIC_KEY -e CPQ_PRIVATE_KEY -e AUTH_MODE ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4

    Enter の前に「your-value」を自分のキーに書き換えてください

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Claude Code で /mcp と入力

    ConnectWise CPQ が一覧にあり、接続済みと表示されれば OK です

  6. 試してみる

    ConnectWise CPQ を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が ConnectWise CPQ を使っていると言うか、回答に ConnectWise CPQ のツール名が出れば接続成功です

追加の設定 2 項目(入力しなくても使えます)

上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。

  • MCP_TRANSPORT Transport mode. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · 初期値 stdio
  • LOG_LEVEL ログの詳細度:debug、info、warn、error
    英語の原文を見るLog verbosity: debug, info, warn, error
    · 初期値 info

説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげますが、先に準備が必要です

ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)

  1. Docker を入れる

    1 回だけ。Docker が必要なすべてのサーバーで使えます

    Docker のダウンロードページを開く ↗

  2. ConnectWise CPQ に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    ConnectWise CPQ のサイトを開く ↗

  3. このボタンで Cursor を開く

    Cursor で開く

    Cursor がインストールの確認をするので Install を押します

  4. キーを入力

    ConnectWise CPQ の設定で CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, AUTH_MODE が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. Cursor の AI チャットを Agent モードで開く

  6. 試してみる

    ConnectWise CPQ を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が ConnectWise CPQ を使っていると言うか、回答に ConnectWise CPQ のツール名が出れば接続成功です

追加の設定 2 項目(入力しなくても使えます)

上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。

  • MCP_TRANSPORT Transport mode. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · 初期値 stdio
  • LOG_LEVEL ログの詳細度:debug、info、warn、error
    英語の原文を見るLog verbosity: debug, info, warn, error
    · 初期値 info

説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげますが、先に準備が必要です

ConnectWise CPQ のキーが必要です(提供元のサイトで作成) · 先にパソコンへ Docker を入れてください(1 回だけ)

  1. Docker を入れる

    1 回だけ。Docker が必要なすべてのサーバーで使えます

    Docker のダウンロードページを開く ↗

  2. ConnectWise CPQ に登録してキーを作る

    提供元のサイトで登録し、次の手順で使う API キーを作ります。料金や無料プランは提供元のサイトで確認してください。

    ConnectWise CPQ のサイトを開く ↗

  3. このボタンで VS Code を開く

    VS Code で開く

    VS Code がインストールの確認をするので Install を押します

  4. キーを入力

    ConnectWise CPQ の設定で CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, AUTH_MODE が空です。自分のキーを入れて保存します

    キーはアプリの入力欄にだけ貼り付け、チャットに貼ったり人に送ったりしないでください

  5. VS Code の AI チャットを Agent モードで開く

  6. 試してみる

    ConnectWise CPQ を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が ConnectWise CPQ を使っていると言うか、回答に ConnectWise CPQ のツール名が出れば接続成功です

追加の設定 2 項目(入力しなくても使えます)

上のコマンドはこれらがなくても動きます。変えたいときだけ作者の説明に沿って追加してください。

  • MCP_TRANSPORT Transport mode. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting. · 初期値 stdio
  • LOG_LEVEL ログの詳細度:debug、info、warn、error
    英語の原文を見るLog verbosity: debug, info, warn, error
    · 初期値 info

説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?ConnectWise CPQ を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

パソコンにインストール

Claude Code

claude mcp add --scope user connectwise-cpq --env CPQ_ACCESS_KEY=your-value --env CPQ_PUBLIC_KEY=your-value --env CPQ_PRIVATE_KEY=your-value --env AUTH_MODE=your-value -- docker run -i --rm -e CPQ_ACCESS_KEY -e CPQ_PUBLIC_KEY -e CPQ_PRIVATE_KEY -e AUTH_MODE ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "connectwise-cpq": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CPQ_ACCESS_KEY",
        "-e",
        "CPQ_PUBLIC_KEY",
        "-e",
        "CPQ_PRIVATE_KEY",
        "-e",
        "AUTH_MODE",
        "ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4"
      ],
      "env": {
        "CPQ_ACCESS_KEY": "your-value",
        "CPQ_PUBLIC_KEY": "your-value",
        "CPQ_PRIVATE_KEY": "your-value",
        "AUTH_MODE": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "connectwise-cpq": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CPQ_ACCESS_KEY",
        "-e",
        "CPQ_PUBLIC_KEY",
        "-e",
        "CPQ_PRIVATE_KEY",
        "-e",
        "AUTH_MODE",
        "ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4"
      ],
      "env": {
        "CPQ_ACCESS_KEY": "your-value",
        "CPQ_PUBLIC_KEY": "your-value",
        "CPQ_PRIVATE_KEY": "your-value",
        "AUTH_MODE": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "connectwise-cpq": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "CPQ_ACCESS_KEY",
        "-e",
        "CPQ_PUBLIC_KEY",
        "-e",
        "CPQ_PRIVATE_KEY",
        "-e",
        "AUTH_MODE",
        "ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4"
      ],
      "env": {
        "CPQ_ACCESS_KEY": "your-value",
        "CPQ_PUBLIC_KEY": "your-value",
        "CPQ_PRIVATE_KEY": "your-value",
        "AUTH_MODE": "your-value"
      }
    }
  }
}

自分で入力する値

  • CPQ_ACCESS_KEY 秘密 必須 env
    ConnectWise CPQ tenant/site access key (from the Sell URL ...home?accesskey= )
  • CPQ_PUBLIC_KEY 秘密 必須 env
    ConnectWise CPQ public API key (Settings → Organization Settings → API Keys)
  • CPQ_PRIVATE_KEY 秘密 必須 env
    ConnectWise CPQ private API key (shown once at creation)
  • MCP_TRANSPORT env
    Transport mode. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
  • AUTH_MODE 秘密 必須 env
    認証情報の取得元:'env' はローカルの変数を読み込み、'gateway' は WYRE MCP Gateway によるヘッダー注入を想定します。
    英語の原文を見るCredential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
  • LOG_LEVEL env
    ログの詳細度:debug、info、warn、error
    英語の原文を見るLog verbosity: debug, info, warn, error

説明は自動翻訳です。変数名は原文のままです。迷ったら原文を確認してください。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

週あたりのダウンロードi
npm/PyPIにない
接続方法
パソコンで動く
最新バージョンi
1.0.4
カテゴリi
その他
レジストリ公開日i
2026年8月20日
コードの最終更新i
2026年11月12日
作者
wyre-technology
パッケージ
oci: ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4
ウェブサイト
github.com
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月14日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント WYRE-AI で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:一昨日

  • ✓ 合格

    ライセンスがある

    Apache-2.0を使用

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

Google でログインして投稿

ユーザーレビュー

まだレビューはありません

Google でログインしてレビューを書く

その他のほかのサーバーとの比較i

  • このカテゴリのほかの19785件のうち0%よりスターが多い
  • このカテゴリのほかの19785件のうち25%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの19785件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

ConnectWise CPQは安全ですか?

当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, AUTH_MODE

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は一昨日、最新バージョン(1.0.4)がレジストリに届いたのは3 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにDockerも必要です。

代わりに使えるものは?

同じカテゴリには:World Monitor, Claude Flow, Windmill

同じカテゴリのほかの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 99 tools.

作者:koala73広く使われている★ 9.1万今日更新

クラウドで動く✓ 提供元 · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

作者:ruvnet広く使われている↓ 1.4万/週★ 8.2万14 か月前更新

パソコンで動く

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

作者:windmill-labs広く使われている★ 1.9万一昨日更新

クラウドで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

connectwise-cpq-mcp

MCP server for ConnectWise CPQ (Sell) — quotes, line items, customers, terms, tabs, templates, tax codes, recurring revenues, and users.

Built on the MCP 2026-07-28 spec via the split v2 SDK (@modelcontextprotocol/server / /node / /client ^2.0.0-beta.5) with dual-era serving: one shared McpServerFactory behind createMcpHandler({ legacy: 'stateless' }) answers both 2025-era initialize-handshake clients (the WYRE gateway today) and modern 2026-07-28 envelope clients — with an identical, deterministic 25-tool surface for every caller. Ships as a GHCR container only (no MCPB bundle).

Tools (25, flat)

Reads: cpq_test_connection, cpq_search_quotes, cpq_get_quote, cpq_get_quote_versions, cpq_search_quote_items, cpq_get_quote_item, cpq_list_quote_customers, cpq_search_quote_tabs, cpq_list_quote_terms, cpq_list_templates, cpq_list_tax_codes, cpq_list_recurring_revenues, cpq_list_users.

Writes: cpq_create_quote_from_template, cpq_update_quote (⚠ HIGH-IMPACT), cpq_create_quote_item, cpq_update_quote_item, cpq_update_quote_customer, cpq_create_quote_term, cpq_update_quote_term, and the ⚠ DESTRUCTIVE — IRREVERSIBLE deletes: cpq_delete_quote_item, cpq_delete_quote_term, cpq_delete_quote_customer, cpq_delete_quote_version, cpq_delete_quote.

Quote creation is copy-only (/api/quotes/copyById) — the CPQ API has no create-from-scratch, publish/e-sign, order-porting, PDF, or product-catalog endpoints (pair with connectwise-psa for those).

Credentials

CPQ requires an API user and CPQ 2022.2+. Three parts, all required:

Env var (env mode)Gateway header (AUTH_MODE=gateway)Where to find it
CPQ_ACCESS_KEYX-CPQ-Access-KeySell URL: ...home?accesskey=
CPQ_PUBLIC_KEYX-CPQ-Public-KeySettings → Organization Settings → API Keys
CPQ_PRIVATE_KEYX-CPQ-Private-KeyShown once at key creation

In gateway mode a request missing any header is answered 401 (JSON-RPC error -32001) before the MCP handler runs — it never falls through to env credentials.

Copy .env.example for local configuration. Leave CONDUIT_S2S_SECRET empty in that file.

VariableRequiredDescription
CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEYFor stdio and AUTH_MODE=envConnectWise CPQ API user keys. The gateway Compose service does not set these.
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires the three X-CPQ-* headers on each /mcp request and never falls back to CPQ_*. env uses those variables only after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (changeme, replace-with-a-real-secret, and the other public example values). Compose will not start without it. Never commit a real value. Generate one with openssl rand -hex 32.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning and does not enforce X-Gateway-S2S. The listener is forced to 127.0.0.1 even if MCP_HTTP_HOST is a wider address such as 0.0.0.0. A placeholder secret is still refused.
MCP_HTTP_HOSTNoBind address when MCP_TRANSPORT=http. Defaults to 127.0.0.1. Honored when CONDUIT_S2S_SECRET is set. The container image sets 0.0.0.0.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.

/health and /healthz stay unauthenticated and do not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/s2s-verify.ts: the header value is t= ,v1= , where the hex is HMAC-SHA256 of the literal string t= keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns 401 before vendor credentials are read.

TS=$(date +%s)

SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}') curl -sS http://127.0.0.1:8080/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \ -H 'X-CPQ-Access-Key: your-access-key' \ -H 'X-CPQ-Public-Key: your-public-key' \ -H 'X-CPQ-Private-Key: your-private-key' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

In AUTH_MODE=gateway those three X-CPQ-* headers are the only credential source for that request. With AUTH_MODE=env, a signed request uses CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, and CPQ_PRIVATE_KEY from the environment when the headers are absent.

Running

export NODE_AUTH_TOKEN=$(gh auth token)   # GitHub Packages auth for @wyre-ai/*

npm install npm run build node dist/index.js # stdio (default) CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" MCP_TRANSPORT=http node dist/index.js node scripts/smoke-dual-era.mjs # proves both protocol eras serve the same tools

Local HTTP without a secret is development-only. It binds 127.0.0.1 (a non-loopback MCP_HTTP_HOST is overridden and logged) and logs a warning:

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 node dist/index.js

Local-dev note: @wyre-technology/node-connectwise-cpq is declared at ^1.0.0 but is

not yet published; until the SDK's first release lands, npm ci from a fresh clone fails.

Install the locally built SDK tarball instead:

npm install /path/to/wyre-ai-node-connectwise-cpq-0.0.0-semantically-released.tgz

(then keep package.json at ^1.0.0).

Docker (linux/amd64 per fleet law):

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode, CPQ credentials arrive on each request as headers; they are not read from the environment.

docker build --platform linux/amd64 --build-arg GITHUB_TOKEN=$(gh auth token) \

-t connectwise-cpq-mcp . docker run \ -e CONDUIT_S2S_SECRET \ -p 127.0.0.1:8080:8080 \ connectwise-cpq-mcp

Compose refuses to start when CONDUIT_S2S_SECRET is unset, defaults AUTH_MODE to gateway, publishes 127.0.0.1:8080:8080, and does not inject CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, or CPQ_PRIVATE_KEY:

export CONDUIT_S2S_SECRET="$(openssl rand -hex 32)"

GITHUB_TOKEN=$(gh auth token) docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses the CPQ_* variables:

docker run \

-e CONDUIT_S2S_SECRET \ -e AUTH_MODE=env \ -e CPQ_ACCESS_KEY=... \ -e CPQ_PUBLIC_KEY=... \ -e CPQ_PRIVATE_KEY=... \ -p 127.0.0.1:8080:8080 \ connectwise-cpq-mcp

MCP Apps quote card

cpq_get_quote advertises a read-only MCP Apps card (ui://connectwise-cpq/quote-card.html) showing the quote header, status badges, a line-item summary, and totals. The card is purely additive: hosts without MCP Apps support get the full QuoteView JSON (the _card field is extra, never a replacement), and any card build failure leaves the JSON untouched. Rebuild the embedded UI with npm run build:ui (output committed at src/generated/quote-card-html.ts). Brand at serve time via MCP_BRAND_* env vars.

Elicitation and destructive-action consent

Where the connected client supports elicitation, the server asks before acting: date range on unfiltered quote searches, template pick on ambiguous names, tab pick when adding items, and confirmation before every delete. Elicitation rides the SDK v2 MRTR seam: handlers return input_required results (embedded elicitation/create requests) that 2026-07-28 clients fulfil and retry, and that the SDK's legacy shim fulfils server-side for 2025-era stateful connections (stdio). All elicitation is MRTR-safe: no vendor mutation ever fires before an elicitation point, so a client retry of the original request cannot duplicate a write.

Callers that never declared the form-elicitation capability — including stateless legacy HTTP requests, which is how the WYRE Conduit gateway connects — cannot be prompted at all. What that means depends on the stakes:

  • Optional elicitation degrades gracefully (design.md §4): an unfiltered search falls back to a default 90-day range and says so, and the ambiguous template/tab pickers return an error listing the candidates.
  • Destructive tools fail closed. A client that cannot answer has not consented, so the five cpq_delete_* tools refuse to run and return an actionable error naming what to do. A non-interactive caller opts in per call with "confirm_destructive_action": true, declared in each destructive tool's input schema so the gate is actually satisfiable. That argument is consulted *only* when no prompt is possible — it can never skip a confirmation an interactive user would otherwise have seen.

Vendor quirks encoded here

  • Missing Authorization header → CPQ answers 500 (not 401); credentials are validated client-side before any request.
  • The real 401 body carries a vendor typo ("...has occured during basic auth validation").
  • Content-Type: application/json; version=1.0 on every request (media-type versioning).
  • List responses are bare JSON arrays — pagination terminates on a short page.
  • Condition dates must be date-only and bracketed: createDate >= [2026-07-01].
  • PATCH bodies are RFC 6902 JSON Patch arrays.

License

Apache-2.0 © WYRE Technology