@markusvankempen/quantum-openqasm-mcp 1.7.0 → 1.7.1

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/README.md CHANGED
@@ -7,6 +7,7 @@ ibm quantum, ibm fez, cursor, vscode, claude desktop, bob, antigravity, ai assis
7
7
  qiskit, quantum hardware, sampler v2, npx, stdio
8
8
  -->
9
9
 
10
+ [![MCP Registry](https://img.shields.io/badge/MCP%20Registry-io.github.markusvankempen%2Fquantum--openqasm--mcp-blue)](https://registry.modelcontextprotocol.io/servers/io.github.markusvankempen/quantum-openqasm-mcp)
10
11
  [![npm version](https://img.shields.io/npm/v/@markusvankempen/quantum-openqasm-mcp.svg)](https://www.npmjs.com/package/@markusvankempen/quantum-openqasm-mcp)
11
12
  [![npm downloads](https://img.shields.io/npm/dm/@markusvankempen/quantum-openqasm-mcp.svg)](https://www.npmjs.com/package/@markusvankempen/quantum-openqasm-mcp)
12
13
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
@@ -62,6 +63,16 @@ npx @markusvankempen/quantum-openqasm-mcp
62
63
 
63
64
  Requires **Node.js 18 or newer**.
64
65
 
66
+ ### Interactive setup
67
+
68
+ ```bash
69
+ npx @markusvankempen/quantum-openqasm-mcp --setup
70
+ ```
71
+
72
+ Prompts for credentials, validates IBM IAM, writes `~/.quantum-openqasm-mcp/.env`, and prints a VS Code `mcp.json` snippet.
73
+
74
+ The server **fails fast at startup** if `IBM_API_KEY` or `IBM_SERVICE_CRN` are missing (stderr shows setup guidance).
75
+
65
76
  ---
66
77
 
67
78
  ## Credentials
@@ -116,7 +127,7 @@ With a global install:
116
127
  }
117
128
  ```
118
129
 
119
- ### VS Code native MCP
130
+ ### VS Code native MCP (recommended — prompts on first use)
120
131
 
121
132
  ```json
122
133
  {
@@ -126,14 +137,31 @@ With a global install:
126
137
  "command": "npx",
127
138
  "args": ["-y", "@markusvankempen/quantum-openqasm-mcp"],
128
139
  "env": {
129
- "IBM_API_KEY": "your_key",
130
- "IBM_SERVICE_CRN": "your_crn"
140
+ "IBM_API_KEY": "${input:ibmApiKey}",
141
+ "IBM_SERVICE_CRN": "${input:ibmServiceCrn}",
142
+ "IBM_QUANTUM_ENDPOINT": "https://us-east.quantum-computing.cloud.ibm.com",
143
+ "IBM_QUANTUM_BACKEND": "ibm_fez"
131
144
  }
132
145
  }
133
- }
146
+ },
147
+ "inputs": [
148
+ {
149
+ "id": "ibmApiKey",
150
+ "type": "promptString",
151
+ "description": "IBM Cloud API Key (quantum.ibm.com → Account → API keys)",
152
+ "password": true
153
+ },
154
+ {
155
+ "id": "ibmServiceCrn",
156
+ "type": "promptString",
157
+ "description": "IBM Quantum Instance CRN (crn:v1:bluemix:public:quantum-computing:...)"
158
+ }
159
+ ]
134
160
  }
135
161
  ```
136
162
 
163
+ VS Code stores prompted values securely — no secrets in the config file.
164
+
137
165
  ### Bob & Antigravity
138
166
 
139
167
  Use the same stdio block as Cursor. The [Quantum OpenQASM Assistant](https://github.com/markusvankempen/quantum-openqasm-assistant) extension can register this server in all supported IDEs with **Quantum: Setup MCP**.
@@ -142,10 +170,11 @@ More detail: [Local MCP setup guide](https://github.com/markusvankempen/quantum-
142
170
 
143
171
  ---
144
172
 
145
- ## MCP tools (9)
173
+ ## MCP tools (10)
146
174
 
147
175
  | Tool | Description |
148
176
  |------|-------------|
177
+ | `check_credentials` | Masked env var status + IBM IAM connectivity test |
149
178
  | `list_backends` | List IBM Quantum backends — qubits, status, queue length |
150
179
  | `get_backend` | Details for one backend |
151
180
  | `get_backend_configuration` | Native gates and coupling map (ISA prep) |
@@ -158,6 +187,7 @@ More detail: [Local MCP setup guide](https://github.com/markusvankempen/quantum-
158
187
 
159
188
  ### Example AI prompts
160
189
 
190
+ - *"Call check_credentials first to verify IBM Quantum setup."*
161
191
  - *"Use quantum-openqasm-mcp list_backends and pick the shortest queue."*
162
192
  - *"Submit this Bell-state OpenQASM circuit on ibm_fez with submit_qasm_job."*
163
193
  - *"Poll get_job_status for job d8jftsk2upec739ngh4g until it completes, then show the histogram."*
@@ -190,18 +220,18 @@ The server listens on **stdio** — suitable for MCP hosts that spawn child proc
190
220
 
191
221
  ---
192
222
 
193
- ## Publish to npm
194
-
195
- Maintainers:
223
+ ## Publish (maintainers)
196
224
 
197
225
  ```bash
198
226
  cd packages/quantum-openqasm-mcp
199
227
  npm install
200
- npm run pack:check # dry-run: lists files that would ship
201
- npm login
202
- npm publish --access public
228
+ npm run pack:check # dry-run npm tarball
229
+ npm publish --access public # npm first
230
+ npm run publish:mcp # MCP Registry (requires: brew install mcp-publisher && mcp-publisher login github)
203
231
  ```
204
232
 
233
+ Bump `version` in `package.json` and `server.json` together before each release.
234
+
205
235
  ---
206
236
 
207
237
  ## Related projects
package/dist/cli.js CHANGED
@@ -1,8 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { loadEnvFiles } from './env.js';
3
+ import { runSetupWizard } from './setup.js';
3
4
  import { startQuantumMcpServer } from './server.js';
4
- loadEnvFiles();
5
- startQuantumMcpServer().catch((err) => {
5
+ async function main() {
6
+ loadEnvFiles();
7
+ if (process.argv.includes('--setup')) {
8
+ await runSetupWizard();
9
+ return;
10
+ }
11
+ await startQuantumMcpServer();
12
+ }
13
+ main().catch((err) => {
6
14
  console.error('quantum-openqasm-mcp failed to start:', err);
7
15
  process.exit(1);
8
16
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,YAAY,EAAE,CAAC;AACf,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAClC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,KAAK,UAAU,IAAI;IACf,YAAY,EAAE,CAAC;IAEf,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IAED,MAAM,qBAAqB,EAAE,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { QuantumEnv } from './env.js';
2
+ export declare function getMissingRequiredVars(): string[];
3
+ export declare function maskSecret(value: string): string;
4
+ export declare function formatSetupBanner(missing: string[]): string;
5
+ export declare function assertCredentialsAtStartup(): void;
6
+ export declare function testIamToken(apiKey: string): Promise<boolean>;
7
+ export declare function formatCredentialStatus(missing: string[], env: QuantumEnv | null, iamOk: boolean): string;
8
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CASjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAoB3D;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnE;AAED,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,UAAU,GAAG,IAAI,EACtB,KAAK,EAAE,OAAO,GACf,MAAM,CA0BR"}
@@ -0,0 +1,90 @@
1
+ import axios from 'axios';
2
+ export function getMissingRequiredVars() {
3
+ const missing = [];
4
+ if (!process.env.IBM_API_KEY) {
5
+ missing.push('IBM_API_KEY');
6
+ }
7
+ if (!process.env.IBM_SERVICE_CRN) {
8
+ missing.push('IBM_SERVICE_CRN');
9
+ }
10
+ return missing;
11
+ }
12
+ export function maskSecret(value) {
13
+ if (value.length <= 8) {
14
+ return '***';
15
+ }
16
+ return `${value.slice(0, 4)}...${value.slice(-4)}`;
17
+ }
18
+ export function formatSetupBanner(missing) {
19
+ return [
20
+ '╔══════════════════════════════════════════════════════════╗',
21
+ '║ quantum-openqasm-mcp — SETUP REQUIRED ║',
22
+ '╠══════════════════════════════════════════════════════════╣',
23
+ `║ Missing environment variables: ${missing.join(', ')}`,
24
+ '║',
25
+ '║ Fix one of these:',
26
+ '║',
27
+ '║ 1. Set in mcp.json "env" block:',
28
+ '║ "IBM_API_KEY": "your_key"',
29
+ '║ "IBM_SERVICE_CRN": "crn:v1:..."',
30
+ '║',
31
+ '║ 2. Create ~/.quantum-openqasm-mcp/.env with those keys',
32
+ '║',
33
+ '║ 3. Run: npx @markusvankempen/quantum-openqasm-mcp --setup',
34
+ '║',
35
+ '║ Get keys: https://quantum.ibm.com → Account → API keys',
36
+ '╚══════════════════════════════════════════════════════════╝',
37
+ ].join('\n');
38
+ }
39
+ export function assertCredentialsAtStartup() {
40
+ const missing = getMissingRequiredVars();
41
+ if (missing.length > 0) {
42
+ console.error(formatSetupBanner(missing));
43
+ process.exit(1);
44
+ }
45
+ }
46
+ export async function testIamToken(apiKey) {
47
+ try {
48
+ await axios.post('https://iam.cloud.ibm.com/identity/token', new URLSearchParams({
49
+ grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
50
+ apikey: apiKey,
51
+ }), {
52
+ headers: {
53
+ 'Content-Type': 'application/x-www-form-urlencoded',
54
+ Accept: 'application/json',
55
+ },
56
+ timeout: 15000,
57
+ });
58
+ return true;
59
+ }
60
+ catch {
61
+ return false;
62
+ }
63
+ }
64
+ export function formatCredentialStatus(missing, env, iamOk) {
65
+ const lines = ['IBM Quantum credential check', ''];
66
+ if (missing.length > 0) {
67
+ lines.push(`Missing required: ${missing.join(', ')}`);
68
+ }
69
+ else {
70
+ lines.push('Required variables: OK');
71
+ }
72
+ lines.push('');
73
+ lines.push('Configured:');
74
+ lines.push(` IBM_API_KEY: ${process.env.IBM_API_KEY ? maskSecret(process.env.IBM_API_KEY) : '(not set)'}`);
75
+ lines.push(` IBM_SERVICE_CRN: ${process.env.IBM_SERVICE_CRN ? maskSecret(process.env.IBM_SERVICE_CRN) : '(not set)'}`);
76
+ lines.push(` IBM_QUANTUM_ENDPOINT: ${process.env.IBM_QUANTUM_ENDPOINT || '(default us-east)'}`);
77
+ lines.push(` IBM_QUANTUM_BACKEND: ${process.env.IBM_QUANTUM_BACKEND || 'ibm_fez (default)'}`);
78
+ lines.push('');
79
+ if (!env) {
80
+ lines.push('IBM IAM token test: skipped (credentials incomplete)');
81
+ }
82
+ else if (iamOk) {
83
+ lines.push('IBM IAM token test: OK');
84
+ }
85
+ else {
86
+ lines.push('IBM IAM token test: FAILED (check IBM_API_KEY)');
87
+ }
88
+ return lines.join('\n');
89
+ }
90
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts CHANGED
@@ -6,5 +6,7 @@ export interface QuantumEnv {
6
6
  }
7
7
  /** Load .env from cwd, then ~/.quantum-openqasm-mcp/.env (legacy: ~/.quantum-mcp/.env). */
8
8
  export declare function loadEnvFiles(): void;
9
+ /** Returns env when required vars are set; otherwise null (no throw). */
10
+ export declare function safeRequireEnv(): QuantumEnv | null;
9
11
  export declare function requireEnv(): QuantumEnv;
10
12
  //# sourceMappingURL=env.d.ts.map
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAID,2FAA2F;AAC3F,wBAAgB,YAAY,IAAI,IAAI,CAWnC;AAED,wBAAgB,UAAU,IAAI,UAAU,CAmBvC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAID,2FAA2F;AAC3F,wBAAgB,YAAY,IAAI,IAAI,CAWnC;AAED,yEAAyE;AACzE,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAUlD;AAED,wBAAgB,UAAU,IAAI,UAAU,CASvC"}
package/dist/env.js CHANGED
@@ -2,6 +2,7 @@ import fs from 'fs';
2
2
  import os from 'os';
3
3
  import path from 'path';
4
4
  import { config as loadDotenv } from 'dotenv';
5
+ import { getMissingRequiredVars } from './credentials.js';
5
6
  const DEFAULT_ENDPOINT = 'https://us-east.quantum-computing.cloud.ibm.com';
6
7
  /** Load .env from cwd, then ~/.quantum-openqasm-mcp/.env (legacy: ~/.quantum-mcp/.env). */
7
8
  export function loadEnvFiles() {
@@ -16,20 +17,24 @@ export function loadEnvFiles() {
16
17
  }
17
18
  }
18
19
  }
19
- export function requireEnv() {
20
- const apiKey = process.env.IBM_API_KEY;
21
- if (!apiKey) {
22
- throw new Error('IBM_API_KEY missing. Set it in the environment or in .env / ~/.quantum-openqasm-mcp/.env');
23
- }
24
- const crn = process.env.IBM_SERVICE_CRN;
25
- if (!crn) {
26
- throw new Error('IBM_SERVICE_CRN missing. Set it in the environment or in .env / ~/.quantum-openqasm-mcp/.env');
20
+ /** Returns env when required vars are set; otherwise null (no throw). */
21
+ export function safeRequireEnv() {
22
+ if (getMissingRequiredVars().length > 0) {
23
+ return null;
27
24
  }
28
25
  return {
29
- apiKey,
30
- crn,
26
+ apiKey: process.env.IBM_API_KEY,
27
+ crn: process.env.IBM_SERVICE_CRN,
31
28
  endpoint: (process.env.IBM_QUANTUM_ENDPOINT || DEFAULT_ENDPOINT).replace(/\/$/, ''),
32
29
  defaultBackend: process.env.IBM_QUANTUM_BACKEND || 'ibm_fez',
33
30
  };
34
31
  }
32
+ export function requireEnv() {
33
+ const env = safeRequireEnv();
34
+ if (!env) {
35
+ const missing = getMissingRequiredVars().join(', ');
36
+ throw new Error(`${missing} missing. Set in mcp.json env, ~/.quantum-openqasm-mcp/.env, or run --setup`);
37
+ }
38
+ return env;
39
+ }
35
40
  //# sourceMappingURL=env.js.map
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAS9C,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAE3E,2FAA2F;AAC3F,MAAM,UAAU,YAAY;IACxB,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,MAAM,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC;KAClD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACX,0FAA0F,CAC7F,CAAC;IACN,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CACX,8FAA8F,CACjG,CAAC;IACN,CAAC;IACD,OAAO;QACH,MAAM;QACN,GAAG;QACH,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnF,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS;KAC/D,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAS1D,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAE3E,2FAA2F;AAC3F,MAAM,UAAU,YAAY;IACxB,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,MAAM,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC;KAClD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc;IAC1B,IAAI,sBAAsB,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAY;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,eAAgB;QACjC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnF,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS;KAC/D,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACX,GAAG,OAAO,6EAA6E,CAC1F,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- export { loadEnvFiles, requireEnv, type QuantumEnv } from './env.js';
1
+ export { loadEnvFiles, requireEnv, safeRequireEnv, type QuantumEnv } from './env.js';
2
+ export { assertCredentialsAtStartup, formatCredentialStatus, getMissingRequiredVars, testIamToken, } from './credentials.js';
3
+ export { runSetupWizard } from './setup.js';
2
4
  export { createQuantumMcpServer, startQuantumMcpServer, SERVER_NAME, SERVER_VERSION, } from './server.js';
3
5
  export { fetchBackendList, formatBackendList, formatBackendLine, parseBackendListResponse, type NormalizedBackend, } from './backend-utils.js';
4
6
  export { parseMeasurementResults, parseResultPayload, formatCountsHistogram, type MeasurementResult, } from './result-utils.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,cAAc,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,iBAAiB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,iBAAiB,GACzB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,cAAc,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,iBAAiB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,iBAAiB,GACzB,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
- export { loadEnvFiles, requireEnv } from './env.js';
1
+ export { loadEnvFiles, requireEnv, safeRequireEnv } from './env.js';
2
+ export { assertCredentialsAtStartup, formatCredentialStatus, getMissingRequiredVars, testIamToken, } from './credentials.js';
3
+ export { runSetupWizard } from './setup.js';
2
4
  export { createQuantumMcpServer, startQuantumMcpServer, SERVER_NAME, SERVER_VERSION, } from './server.js';
3
5
  export { fetchBackendList, formatBackendList, formatBackendLine, parseBackendListResponse, } from './backend-utils.js';
4
6
  export { parseMeasurementResults, parseResultPayload, formatCountsHistogram, } from './result-utils.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AACrE,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,cAAc,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GAE3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GAExB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACH,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,cAAc,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GAE3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,GAExB,MAAM,mBAAmB,CAAC"}
package/dist/server.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
5
  export declare const SERVER_NAME = "quantum-openqasm-mcp";
6
- export declare const SERVER_VERSION = "1.7.0";
6
+ export declare const SERVER_VERSION = "1.7.1";
7
7
  export declare function createQuantumMcpServer(): Server;
8
8
  /** Start the MCP server on stdio (for Cursor, VS Code, Claude Desktop, etc.). */
9
9
  export declare function startQuantumMcpServer(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,cAAc,UAAU,CAAC;AAqKtC,wBAAgB,sBAAsB,IAAI,MAAM,CAqJ/C;AAED,iFAAiF;AACjF,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAcnE,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,cAAc,UAAU,CAAC;AAqKtC,wBAAgB,sBAAsB,IAAI,MAAM,CAkK/C;AAED,iFAAiF;AACjF,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3D"}
package/dist/server.js CHANGED
@@ -6,10 +6,11 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
6
6
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
7
  import axios from 'axios';
8
8
  import { fetchBackendList, formatBackendList } from './backend-utils.js';
9
- import { requireEnv } from './env.js';
9
+ import { assertCredentialsAtStartup, formatCredentialStatus, getMissingRequiredVars, testIamToken, } from './credentials.js';
10
+ import { requireEnv, safeRequireEnv } from './env.js';
10
11
  import { formatCountsHistogram, parseMeasurementResults } from './result-utils.js';
11
12
  export const SERVER_NAME = 'quantum-openqasm-mcp';
12
- export const SERVER_VERSION = '1.7.0';
13
+ export const SERVER_VERSION = '1.7.1';
13
14
  const API_VERSION = '2023-11-16';
14
15
  let cachedToken = null;
15
16
  let tokenExpiry = 0;
@@ -241,12 +242,24 @@ export function createQuantumMcpServer() {
241
242
  required: ['job_id'],
242
243
  },
243
244
  },
245
+ {
246
+ name: 'check_credentials',
247
+ description: 'Check which IBM Quantum env vars are set (masked) and test IBM IAM connectivity.',
248
+ inputSchema: { type: 'object', properties: {} },
249
+ },
244
250
  ],
245
251
  }));
246
252
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
247
253
  const name = request.params.name;
248
254
  const args = request.params.arguments ?? {};
249
255
  try {
256
+ if (name === 'check_credentials') {
257
+ const missing = getMissingRequiredVars();
258
+ const env = safeRequireEnv();
259
+ const iamOk = env ? await testIamToken(env.apiKey) : false;
260
+ const isError = missing.length > 0 || (env !== null && !iamOk);
261
+ return textResult(formatCredentialStatus(missing, env, iamOk), isError);
262
+ }
250
263
  const env = requireEnv();
251
264
  switch (name) {
252
265
  case 'list_backends':
@@ -293,6 +306,7 @@ export function createQuantumMcpServer() {
293
306
  }
294
307
  /** Start the MCP server on stdio (for Cursor, VS Code, Claude Desktop, etc.). */
295
308
  export async function startQuantumMcpServer() {
309
+ assertCredentialsAtStartup();
296
310
  const server = createQuantumMcpServer();
297
311
  const transport = new StdioServerTransport();
298
312
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Interactive setup: prompts, validates IAM, writes ~/.quantum-openqasm-mcp/.env */
2
+ export declare function runSetupWizard(): Promise<void>;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAqEA,qFAAqF;AACrF,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CpD"}
package/dist/setup.js ADDED
@@ -0,0 +1,101 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import * as readline from 'readline/promises';
5
+ import { stdin as input, stdout as output } from 'process';
6
+ import { testIamToken } from './credentials.js';
7
+ const DEFAULT_ENDPOINT = 'https://us-east.quantum-computing.cloud.ibm.com';
8
+ const ENV_DIR = path.join(os.homedir(), '.quantum-openqasm-mcp');
9
+ const ENV_FILE = path.join(ENV_DIR, '.env');
10
+ async function prompt(rl, label, defaultValue = '') {
11
+ const suffix = defaultValue ? ` [${defaultValue}]` : '';
12
+ const answer = (await rl.question(`${label}${suffix}: `)).trim();
13
+ return answer || defaultValue;
14
+ }
15
+ async function promptSecret(rl, label) {
16
+ return (await rl.question(`${label}: `)).trim();
17
+ }
18
+ function buildEnvContent(values) {
19
+ return [
20
+ '# quantum-openqasm-mcp credentials (generated by --setup)',
21
+ `IBM_API_KEY=${values.IBM_API_KEY}`,
22
+ `IBM_SERVICE_CRN=${values.IBM_SERVICE_CRN}`,
23
+ `IBM_QUANTUM_ENDPOINT=${values.IBM_QUANTUM_ENDPOINT}`,
24
+ `IBM_QUANTUM_BACKEND=${values.IBM_QUANTUM_BACKEND}`,
25
+ '',
26
+ ].join('\n');
27
+ }
28
+ function printVsCodeMcpSnippet() {
29
+ console.log(`
30
+ Copy this into VS Code user mcp.json (macOS: ~/Library/Application Support/Code/User/mcp.json):
31
+
32
+ {
33
+ "servers": {
34
+ "quantum-openqasm-mcp": {
35
+ "type": "stdio",
36
+ "command": "npx",
37
+ "args": ["-y", "@markusvankempen/quantum-openqasm-mcp"],
38
+ "env": {
39
+ "IBM_API_KEY": "\${input:ibmApiKey}",
40
+ "IBM_SERVICE_CRN": "\${input:ibmServiceCrn}",
41
+ "IBM_QUANTUM_ENDPOINT": "https://us-east.quantum-computing.cloud.ibm.com",
42
+ "IBM_QUANTUM_BACKEND": "ibm_fez"
43
+ }
44
+ }
45
+ },
46
+ "inputs": [
47
+ {
48
+ "id": "ibmApiKey",
49
+ "type": "promptString",
50
+ "description": "IBM Cloud API Key (quantum.ibm.com → Account → API keys)",
51
+ "password": true
52
+ },
53
+ {
54
+ "id": "ibmServiceCrn",
55
+ "type": "promptString",
56
+ "description": "IBM Quantum Instance CRN (crn:v1:bluemix:public:quantum-computing:...)"
57
+ }
58
+ ]
59
+ }
60
+
61
+ Credentials are also saved to ~/.quantum-openqasm-mcp/.env for npx/Cursor without prompts.
62
+ `.trim());
63
+ }
64
+ /** Interactive setup: prompts, validates IAM, writes ~/.quantum-openqasm-mcp/.env */
65
+ export async function runSetupWizard() {
66
+ const rl = readline.createInterface({ input, output });
67
+ try {
68
+ console.log('Quantum OpenQASM MCP — setup wizard\n');
69
+ const apiKey = await promptSecret(rl, 'IBM_API_KEY');
70
+ if (!apiKey) {
71
+ console.error('IBM_API_KEY is required.');
72
+ process.exit(1);
73
+ }
74
+ console.log('Validating IBM API key against IAM...');
75
+ if (!(await testIamToken(apiKey))) {
76
+ console.error('IBM IAM validation failed. Check your API key and try again.');
77
+ process.exit(1);
78
+ }
79
+ console.log('IBM API key: OK\n');
80
+ const crn = await promptSecret(rl, 'IBM_SERVICE_CRN');
81
+ if (!crn) {
82
+ console.error('IBM_SERVICE_CRN is required.');
83
+ process.exit(1);
84
+ }
85
+ const endpoint = await prompt(rl, 'IBM_QUANTUM_ENDPOINT', DEFAULT_ENDPOINT);
86
+ const backend = await prompt(rl, 'IBM_QUANTUM_BACKEND', 'ibm_fez');
87
+ fs.mkdirSync(ENV_DIR, { recursive: true });
88
+ fs.writeFileSync(ENV_FILE, buildEnvContent({
89
+ IBM_API_KEY: apiKey,
90
+ IBM_SERVICE_CRN: crn,
91
+ IBM_QUANTUM_ENDPOINT: endpoint,
92
+ IBM_QUANTUM_BACKEND: backend,
93
+ }), { mode: 0o600 });
94
+ console.log(`\nWrote ${ENV_FILE}`);
95
+ printVsCodeMcpSnippet();
96
+ }
97
+ finally {
98
+ rl.close();
99
+ }
100
+ }
101
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@markusvankempen/quantum-openqasm-mcp",
3
3
  "mcpName": "io.github.markusvankempen/quantum-openqasm-mcp",
4
- "version": "1.7.0",
5
- "description": "IBM Quantum OpenQASM 2.0 MCP server — 9 tools to list backends, submit QASM circuits, poll jobs, and fetch measurement histograms. Works with Cursor, VS Code, Claude Desktop, Bob, Antigravity, and any MCP client via stdio or npx.",
4
+ "version": "1.7.1",
5
+ "description": "IBM Quantum OpenQASM 2.0 MCP server — 10 tools to list backends, submit QASM circuits, poll jobs, check credentials, and fetch histograms. Cursor, VS Code, Claude Desktop, Bob, Antigravity via stdio or npx.",
6
6
  "keywords": [
7
7
  "mcp",
8
8
  "mcp-server",
@@ -101,6 +101,7 @@
101
101
  "start": "node dist/cli.js",
102
102
  "prepublishOnly": "npm run build",
103
103
  "pack:check": "npm run build && npm pack --dry-run",
104
+ "publish:mcp": "mcp-publisher publish",
104
105
  "typecheck": "tsc -p tsconfig.json --noEmit"
105
106
  },
106
107
  "dependencies": {