@cheqpoint/mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @cheqpoint/mcp — Cheqpoint MCP server
4
+ *
5
+ * Exposes two MCP tools:
6
+ * • request_human_approval — submit an action for human review (blocking)
7
+ * • get_approval_status — poll an existing request by ID
8
+ *
9
+ * Configuration (environment variables):
10
+ * CHEQPOINT_CONNECTION_KEY — required — your workspace Connection Key (cq_live_...)
11
+ * CHEQPOINT_BASE_URL — optional — override API base (default: https://app.cheqpoint.co)
12
+ * CHEQPOINT_TIMEOUT_MS — optional — max ms to wait for a decision (default: 300000)
13
+ *
14
+ * Usage with Claude Desktop (claude_desktop_config.json):
15
+ * {
16
+ * "mcpServers": {
17
+ * "cheqpoint": {
18
+ * "command": "npx",
19
+ * "args": ["-y", "@cheqpoint/mcp"],
20
+ * "env": { "CHEQPOINT_CONNECTION_KEY": "cq_live_..." }
21
+ * }
22
+ * }
23
+ * }
24
+ *
25
+ * Usage with Claude Code:
26
+ * claude mcp add cheqpoint -e CHEQPOINT_CONNECTION_KEY=cq_live_... -- npx -y @cheqpoint/mcp
27
+ */
28
+ export {};
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
package/dist/index.js ADDED
@@ -0,0 +1,258 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * @cheqpoint/mcp — Cheqpoint MCP server
5
+ *
6
+ * Exposes two MCP tools:
7
+ * • request_human_approval — submit an action for human review (blocking)
8
+ * • get_approval_status — poll an existing request by ID
9
+ *
10
+ * Configuration (environment variables):
11
+ * CHEQPOINT_CONNECTION_KEY — required — your workspace Connection Key (cq_live_...)
12
+ * CHEQPOINT_BASE_URL — optional — override API base (default: https://app.cheqpoint.co)
13
+ * CHEQPOINT_TIMEOUT_MS — optional — max ms to wait for a decision (default: 300000)
14
+ *
15
+ * Usage with Claude Desktop (claude_desktop_config.json):
16
+ * {
17
+ * "mcpServers": {
18
+ * "cheqpoint": {
19
+ * "command": "npx",
20
+ * "args": ["-y", "@cheqpoint/mcp"],
21
+ * "env": { "CHEQPOINT_CONNECTION_KEY": "cq_live_..." }
22
+ * }
23
+ * }
24
+ * }
25
+ *
26
+ * Usage with Claude Code:
27
+ * claude mcp add cheqpoint -e CHEQPOINT_CONNECTION_KEY=cq_live_... -- npx -y @cheqpoint/mcp
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
31
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
32
+ const zod_1 = require("zod");
33
+ const sdk_1 = require("@cheqpoint/sdk");
34
+ // ---------------------------------------------------------------------------
35
+ // Validate environment
36
+ // ---------------------------------------------------------------------------
37
+ const connectionKey = process.env.CHEQPOINT_CONNECTION_KEY;
38
+ if (!connectionKey) {
39
+ console.error("[cheqpoint-mcp] CHEQPOINT_CONNECTION_KEY is not set.\n" +
40
+ "Find your Connection Key under Settings → Connection Keys in the Cheqpoint dashboard.\n" +
41
+ "Set it in your MCP client config and restart.");
42
+ process.exit(1);
43
+ }
44
+ const client = new sdk_1.CheqpointClient({
45
+ connectionKey,
46
+ baseUrl: process.env.CHEQPOINT_BASE_URL,
47
+ timeout: process.env.CHEQPOINT_TIMEOUT_MS
48
+ ? parseInt(process.env.CHEQPOINT_TIMEOUT_MS, 10)
49
+ : undefined,
50
+ });
51
+ // ---------------------------------------------------------------------------
52
+ // MCP Server
53
+ // ---------------------------------------------------------------------------
54
+ const server = new mcp_js_1.McpServer({
55
+ name: "cheqpoint",
56
+ version: "0.1.0",
57
+ });
58
+ // ---------------------------------------------------------------------------
59
+ // Tool: request_human_approval
60
+ // ---------------------------------------------------------------------------
61
+ server.tool("request_human_approval", "Request human approval before taking a consequential or high-risk action. " +
62
+ "The agent PAUSES and waits — blocking execution — until a human reviewer approves or rejects " +
63
+ "the request in the Cheqpoint inbox (web app, Slack, email, or mobile app). " +
64
+ "Use this before: sending emails, processing refunds, modifying database records, " +
65
+ "deploying code, transferring funds, deleting data, or any irreversible operation. " +
66
+ "Returns APPROVED (proceed), REJECTED (do not proceed), or TIMED_OUT (do not proceed).", {
67
+ action: zod_1.z
68
+ .string()
69
+ .describe("Short action category slug — e.g. 'send_email', 'process_refund', 'deploy_code', " +
70
+ "'delete_record', 'transfer_funds', 'create_account'. Used for filtering in the inbox."),
71
+ summary: zod_1.z
72
+ .string()
73
+ .describe("One-sentence plain-English description shown prominently to the human reviewer. " +
74
+ "Be specific: include amounts, names, and targets. " +
75
+ "Example: 'Refund $349 for order #8821 — customer says item never arrived.'"),
76
+ details: zod_1.z
77
+ .record(zod_1.z.string(), zod_1.z.unknown())
78
+ .describe("Full structured context the reviewer needs to make a decision. " +
79
+ "Include all relevant IDs, values, and parameters. " +
80
+ "The reviewer sees this as labelled fields — name your keys clearly."),
81
+ risk_score: zod_1.z
82
+ .number()
83
+ .min(0)
84
+ .max(1)
85
+ .optional()
86
+ .describe("Risk score from 0.0 (low) to 1.0 (critical). Default 0.5. " +
87
+ "Drives the risk badge colour in the inbox: <0.4 = Low, 0.4–0.7 = Medium, ≥0.7 = High."),
88
+ justification: zod_1.z
89
+ .string()
90
+ .optional()
91
+ .describe("Your reasoning for why this action should be approved — shown to the reviewer. " +
92
+ "Include the user request that triggered this, any relevant context, and why the action is appropriate."),
93
+ }, async ({ action, summary, details, risk_score, justification }) => {
94
+ var _a;
95
+ try {
96
+ const result = await client.checkpoint({
97
+ action,
98
+ summary,
99
+ details,
100
+ riskScore: risk_score,
101
+ justification,
102
+ });
103
+ const effective = (_a = result.modifiedDetails) !== null && _a !== void 0 ? _a : details;
104
+ const notes = result.responseNotes ? ` Notes from reviewer: "${result.responseNotes}".` : "";
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: `APPROVED — you may proceed with the action.\n` +
110
+ (result.modifiedDetails
111
+ ? `The reviewer modified the parameters. Use these updated details:\n${JSON.stringify(effective, null, 2)}\n`
112
+ : "") +
113
+ `Approval ID: ${result.id}.${notes}`,
114
+ },
115
+ ],
116
+ };
117
+ }
118
+ catch (err) {
119
+ if (err instanceof sdk_1.RejectedError) {
120
+ return {
121
+ content: [
122
+ {
123
+ type: "text",
124
+ text: `REJECTED — do not proceed with this action.\n` +
125
+ (err.responseNotes ? `Reviewer note: "${err.responseNotes}"\n` : "") +
126
+ `Request ID: ${err.requestId}. Inform the user the action was declined.`,
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ if (err instanceof sdk_1.TimeoutError) {
132
+ return {
133
+ content: [
134
+ {
135
+ type: "text",
136
+ text: `TIMED_OUT — no decision was received within the timeout period.\n` +
137
+ `Request ID: ${err.requestId}. The request is still open in the Cheqpoint inbox. ` +
138
+ `Do not proceed with the action. Use get_approval_status to check later.`,
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ if (err instanceof sdk_1.CheqpointError) {
144
+ return {
145
+ content: [
146
+ {
147
+ type: "text",
148
+ text: `ERROR — the Cheqpoint API returned an error (HTTP ${err.statusCode}): ${err.message}\n` +
149
+ `Do not proceed with the action.`,
150
+ },
151
+ ],
152
+ isError: true,
153
+ };
154
+ }
155
+ return {
156
+ content: [
157
+ {
158
+ type: "text",
159
+ text: `ERROR — could not reach the Cheqpoint approval system: ${err instanceof Error ? err.message : String(err)}\n` +
160
+ `Do not proceed with the action.`,
161
+ },
162
+ ],
163
+ isError: true,
164
+ };
165
+ }
166
+ });
167
+ // ---------------------------------------------------------------------------
168
+ // Tool: get_approval_status
169
+ // ---------------------------------------------------------------------------
170
+ server.tool("get_approval_status", "Check the current status of a Cheqpoint approval request by its ID. " +
171
+ "Use this to poll a request that previously returned TIMED_OUT, " +
172
+ "or to verify the outcome of an async request.", {
173
+ request_id: zod_1.z
174
+ .string()
175
+ .describe("The approval request ID returned by request_human_approval."),
176
+ }, async ({ request_id }) => {
177
+ var _a, _b;
178
+ try {
179
+ const status = await client.getRequest(request_id);
180
+ if (status.status === "PENDING") {
181
+ return {
182
+ content: [
183
+ {
184
+ type: "text",
185
+ text: `PENDING — the request is still awaiting a human decision.\n` +
186
+ `Request ID: ${request_id}. Do not proceed with the action yet.`,
187
+ },
188
+ ],
189
+ };
190
+ }
191
+ if (status.status === "APPROVED") {
192
+ const effective = (_a = status.modifiedDetails) !== null && _a !== void 0 ? _a : status.details;
193
+ const notes = status.decisionNote ? ` Reviewer note: "${status.decisionNote}".` : "";
194
+ const auto = status.autoDecided
195
+ ? ` (Auto-approved by rule: ${(_b = status.autoDecisionRuleName) !== null && _b !== void 0 ? _b : "unknown"})`
196
+ : "";
197
+ return {
198
+ content: [
199
+ {
200
+ type: "text",
201
+ text: `APPROVED — you may proceed.${auto}\n` +
202
+ (status.modifiedDetails
203
+ ? `Reviewer modified the parameters. Use:\n${JSON.stringify(effective, null, 2)}\n`
204
+ : "") +
205
+ `Request ID: ${request_id}.${notes}`,
206
+ },
207
+ ],
208
+ };
209
+ }
210
+ // REJECTED
211
+ const notes = status.decisionNote ? ` Reviewer note: "${status.decisionNote}".` : "";
212
+ return {
213
+ content: [
214
+ {
215
+ type: "text",
216
+ text: `REJECTED — do not proceed with the action.${notes}\n` +
217
+ `Request ID: ${request_id}. Inform the user the action was declined.`,
218
+ },
219
+ ],
220
+ };
221
+ }
222
+ catch (err) {
223
+ if (err instanceof sdk_1.CheqpointError) {
224
+ return {
225
+ content: [
226
+ {
227
+ type: "text",
228
+ text: `ERROR — ${err.message} (HTTP ${err.statusCode})`,
229
+ },
230
+ ],
231
+ isError: true,
232
+ };
233
+ }
234
+ return {
235
+ content: [
236
+ {
237
+ type: "text",
238
+ text: `ERROR — ${err instanceof Error ? err.message : String(err)}`,
239
+ },
240
+ ],
241
+ isError: true,
242
+ };
243
+ }
244
+ });
245
+ // ---------------------------------------------------------------------------
246
+ // Start
247
+ // ---------------------------------------------------------------------------
248
+ async function main() {
249
+ const transport = new stdio_js_1.StdioServerTransport();
250
+ await server.connect(transport);
251
+ // MCP servers communicate over stdio — all logging goes to stderr
252
+ console.error("[cheqpoint-mcp] Server running. Waiting for MCP client connections.");
253
+ }
254
+ main().catch((err) => {
255
+ console.error("[cheqpoint-mcp] Fatal error:", err);
256
+ process.exit(1);
257
+ });
258
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@cheqpoint/mcp",
3
+ "version": "0.1.0",
4
+ "description": "Cheqpoint MCP server — human-in-the-loop approval tools for Claude, Cursor, and any MCP client",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "cheqpoint-mcp": "dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "start": "node dist/index.js",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "keywords": [
18
+ "cheqpoint",
19
+ "mcp",
20
+ "model-context-protocol",
21
+ "human-in-the-loop",
22
+ "ai",
23
+ "agents",
24
+ "approval",
25
+ "claude",
26
+ "cursor"
27
+ ],
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "@modelcontextprotocol/sdk": "^1.0.0",
31
+ "@cheqpoint/sdk": "file:../js"
32
+ },
33
+ "devDependencies": {
34
+ "typescript": "^5.4.0"
35
+ }
36
+ }