@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.
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +258 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|