World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
제작자가 쓴 설명(영어 원문)
MCP server for ConnectWise CPQ (Sell) — quotes, line items, customers, terms, and templates.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
검사 2/2 통과 · 내 컴퓨터에서 실행돼요
먼저: 어떤 AI를 쓰시나요?
쓰는 앱을 고르면 아래에 단계가 나옵니다.
Claude에 연결할 수 있지만 먼저 준비가 필요해요
ConnectWise CPQ 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Docker를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.
SettingsDeveloperEdit Config
{
"mcpServers": {
"connectwise-cpq": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CPQ_ACCESS_KEY",
"-e",
"CPQ_PUBLIC_KEY",
"-e",
"CPQ_PRIVATE_KEY",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"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",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
ConnectWise CPQ을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude가 ConnectWise CPQ을 쓰고 있다고 하거나 답에 ConnectWise CPQ 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
ChatGPT는 아직 ConnectWise CPQ에 연결할 수 없어요
ConnectWise CPQ는 내 컴퓨터에 설치해서 쓰지만 ChatGPT는 웹에서 도는 서버만 연결할 수 있어요
A · ConnectWise CPQ에 연결되는 앱 쓰기
B · 기타에서 ChatGPT에 연결되는 다른 서버
같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요
Claude Code에 연결할 수 있지만 먼저 준비가 필요해요
ConnectWise CPQ 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Docker를 설치하세요 (한 번만)
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.
Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기
claude mcp add connectwise-cpq --env CPQ_ACCESS_KEY=your-value --env CPQ_PUBLIC_KEY=your-value --env CPQ_PRIVATE_KEY=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e CPQ_ACCESS_KEY -e CPQ_PUBLIC_KEY -e CPQ_PRIVATE_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4Enter 전에 “your-value”를 내 키로 바꾸세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
ConnectWise CPQ이 목록에 있고 연결됨으로 보이면 돼요
ConnectWise CPQ을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude Code가 ConnectWise CPQ을 쓰고 있다고 하거나 답에 ConnectWise CPQ 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Cursor에 연결할 수 있지만 먼저 준비가 필요해요
ConnectWise CPQ 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Docker를 설치하세요 (한 번만)
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.
ConnectWise CPQ 설정에서 CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
ConnectWise CPQ을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Cursor가 ConnectWise CPQ을 쓰고 있다고 하거나 답에 ConnectWise CPQ 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
VS Code에 연결할 수 있지만 먼저 준비가 필요해요
ConnectWise CPQ 키가 필요해요 (제작자 사이트에서 가입, 비용이 들 수 있음) · 먼저 컴퓨터에 Docker를 설치하세요 (한 번만)
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 비용이 들 수 있어요.
ConnectWise CPQ 설정에서 CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
ConnectWise CPQ을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ VS Code가 ConnectWise CPQ을 쓰고 있다고 하거나 답에 ConnectWise CPQ 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Claude Code
claude mcp add connectwise-cpq --env CPQ_ACCESS_KEY=your-value --env CPQ_PUBLIC_KEY=your-value --env CPQ_PRIVATE_KEY=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e CPQ_ACCESS_KEY -e CPQ_PUBLIC_KEY -e CPQ_PRIVATE_KEY -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4Claude 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",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"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",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "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",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"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",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "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",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"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",
"MCP_TRANSPORT": "your-value",
"AUTH_MODE": "your-value",
"LOG_LEVEL": "your-value"
}
}
}
}CPQ_ACCESS_KEY 비밀 필수 envCPQ_PUBLIC_KEY 필수 envCPQ_PRIVATE_KEY 비밀 필수 envMCP_TRANSPORT envAUTH_MODE envLOG_LEVEL env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
oci: ghcr.io/wyre-technology/connectwise-cpq-mcp:v1.0.4이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.
내 컴퓨터에서 실행하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 11일 점검
레지스트리 이름이 GitHub 계정 wyre-technology 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
코드 마지막 변경: 23일 전
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.
아직 리뷰가 없어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 2개 중 2개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 23일 전 변경됐고, 최신 버전(1.0.4)은 3개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Docker도 있어야 해요.
같은 카테고리에는: World Monitor, Claude Flow, Tldraw
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.
AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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).
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).
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_KEY | X-CPQ-Access-Key | Sell URL: ...home?accesskey= |
CPQ_PUBLIC_KEY | X-CPQ-Public-Key | Settings → Organization Settings → API Keys |
CPQ_PRIVATE_KEY | X-CPQ-Private-Key | Shown 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.
| Variable | Required | Description |
|---|---|---|
CPQ_ACCESS_KEY, CPQ_PUBLIC_KEY, CPQ_PRIVATE_KEY | For stdio and AUTH_MODE=env | ConnectWise CPQ API user keys. The gateway Compose service does not set these. |
MCP_TRANSPORT | No | stdio (default) or http |
AUTH_MODE | No | gateway (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_SECRET | Yes for HTTP | Service-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_DEV | No | Set 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_HOST | No | Bind 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_PORT | No | HTTP port. Defaults to 8080. |
/health and /healthz stay unauthenticated and do not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.
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.
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-cpqis declared at^1.0.0but is
not yet published; until the SDK's first release lands,
npm cifrom 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.jsonat^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
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.
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:
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.Authorization header → CPQ answers 500 (not 401); credentials are validated client-side before any request."...has occured during basic auth validation").Content-Type: application/json; version=1.0 on every request (media-type versioning).createDate >= [2026-07-01].Apache-2.0 © WYRE Technology