@qverisai/mcp 0.6.0 → 0.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/dist/index.js CHANGED
@@ -16,7 +16,7 @@
16
16
  * "mcpServers": {
17
17
  * "qveris": {
18
18
  * "command": "npx",
19
- * "args": ["@qverisai/mcp"],
19
+ * "args": ["-y", "@qverisai/mcp"],
20
20
  * "env": { "QVERIS_API_KEY": "your-api-key" }
21
21
  * }
22
22
  * }
@@ -26,6 +26,8 @@
26
26
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
27
27
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
28
28
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
29
+ import { realpathSync } from 'node:fs';
30
+ import { pathToFileURL } from 'node:url';
29
31
  import { v4 as uuidv4 } from 'uuid';
30
32
  import { createClientFromEnv } from './api/client.js';
31
33
  import { searchToolsSchema, executeSearchTools, } from './tools/search.js';
@@ -41,276 +43,326 @@ const SERVER_NAME = 'qveris';
41
43
  const require = createRequire(import.meta.url);
42
44
  const { version: SERVER_VERSION } = require('../package.json');
43
45
  /**
44
- * Main entry point for the Qveris MCP Server.
46
+ * List the MCP tools exposed by this server.
45
47
  *
46
- * Sets up the MCP server with stdio transport, registers the discover,
47
- * inspect, and call handlers, and starts listening for requests.
48
+ * Kept as a pure export so the public MCP interface can be tested without
49
+ * starting stdio transport.
48
50
  */
49
- async function main() {
50
- // Initialize API client (validates QVERIS_API_KEY)
51
- let client;
52
- try {
53
- client = createClientFromEnv();
54
- }
55
- catch (error) {
56
- console.error(error instanceof Error ? error.message : 'Failed to initialize Qveris client');
57
- process.exit(1);
58
- }
59
- // Generate a default session ID for this server instance
60
- const defaultSessionId = uuidv4();
61
- // Create MCP server
62
- const server = new Server({
63
- name: SERVER_NAME,
64
- version: SERVER_VERSION,
65
- }, {
66
- capabilities: {
67
- tools: {},
51
+ export function listQverisMcpTools() {
52
+ return [
53
+ // Primary tools (aligned with CLI naming)
54
+ {
55
+ name: 'discover',
56
+ description: 'Discover available tools based on natural language queries. ' +
57
+ 'Returns relevant tools that can help accomplish tasks. ' +
58
+ 'Use this to find tools before inspecting or calling them. ' +
59
+ 'Results may include billing_rule metadata for rule-level pricing.',
60
+ inputSchema: searchToolsSchema,
68
61
  },
62
+ {
63
+ name: 'inspect',
64
+ description: 'Inspect tools by their IDs to get detailed information. ' +
65
+ 'Returns parameters, success rate, latency, examples, and billing_rule when available. ' +
66
+ 'Use tool_ids from a previous discover call.',
67
+ inputSchema: getToolsByIdsSchema,
68
+ },
69
+ {
70
+ name: 'call',
71
+ description: 'Call a specific remote tool with provided parameters. ' +
72
+ 'The tool_id and search_id must come from a previous discover call. ' +
73
+ 'Pass parameters to the tool through params_to_tool. ' +
74
+ 'The response may include pre-settlement billing; use usage_history or credits_ledger for final charge status.',
75
+ inputSchema: executeToolSchema,
76
+ },
77
+ {
78
+ name: 'usage_history',
79
+ description: 'Context-safe usage audit query. Defaults to aggregated summary, supports precise search by execution_id/search_id/charge_outcome/credit range, and writes large exports to a local JSONL file instead of returning all rows.',
80
+ inputSchema: usageHistorySchema,
81
+ },
82
+ {
83
+ name: 'credits_ledger',
84
+ description: 'Context-safe final credits ledger query. Defaults to aggregated summary, supports precise search by entry type/direction/credit range, and writes large exports to a local JSONL file instead of returning all rows.',
85
+ inputSchema: creditsLedgerSchema,
86
+ },
87
+ // Deprecated aliases (backward compatibility)
88
+ {
89
+ name: 'search_tools',
90
+ description: '[Deprecated: use "discover" instead] Search for available tools based on natural language queries.',
91
+ inputSchema: searchToolsSchema,
92
+ },
93
+ {
94
+ name: 'get_tools_by_ids',
95
+ description: '[Deprecated: use "inspect" instead] Get descriptions of tools based on their tool IDs.',
96
+ inputSchema: getToolsByIdsSchema,
97
+ },
98
+ {
99
+ name: 'execute_tool',
100
+ description: '[Deprecated: use "call" instead] Execute a specific remote tool with provided parameters.',
101
+ inputSchema: executeToolSchema,
102
+ },
103
+ ];
104
+ }
105
+ // Deprecated tool name aliases -> canonical names.
106
+ export const DEPRECATED_ALIASES = {
107
+ search_tools: 'discover',
108
+ get_tools_by_ids: 'inspect',
109
+ execute_tool: 'call',
110
+ };
111
+ function buildMcpObservability(requestedTool, mcpTool, args, defaultSessionId) {
112
+ const input = isRecord(args) ? args : {};
113
+ const toolId = readString(input.tool_id);
114
+ return compactObject({
115
+ source: 'qveris_mcp',
116
+ requested_tool: requestedTool,
117
+ mcp_tool: mcpTool,
118
+ session_id: readString(input.session_id) ?? defaultSessionId,
119
+ search_id: readString(input.search_id),
120
+ tool_id: toolId,
121
+ provider_id: inferProviderId(toolId),
122
+ query: readString(input.query),
69
123
  });
70
- // =========================================================================
71
- // Tool Handlers
72
- // =========================================================================
73
- /**
74
- * Lists available tools.
75
- * Returns the discover, inspect, and call definitions (plus deprecated aliases).
76
- */
77
- server.setRequestHandler(ListToolsRequestSchema, async () => {
78
- return {
79
- tools: [
80
- // Primary tools (aligned with CLI naming)
81
- {
82
- name: 'discover',
83
- description: 'Discover available tools based on natural language queries. ' +
84
- 'Returns relevant tools that can help accomplish tasks. ' +
85
- 'Use this to find tools before inspecting or calling them. ' +
86
- 'Results may include billing_rule metadata for rule-level pricing.',
87
- inputSchema: searchToolsSchema,
88
- },
89
- {
90
- name: 'inspect',
91
- description: 'Inspect tools by their IDs to get detailed information. ' +
92
- 'Returns parameters, success rate, latency, examples, and billing_rule when available. ' +
93
- 'Use tool_ids from a previous discover call.',
94
- inputSchema: getToolsByIdsSchema,
95
- },
96
- {
97
- name: 'call',
98
- description: 'Call a specific remote tool with provided parameters. ' +
99
- 'The tool_id and search_id must come from a previous discover call. ' +
100
- 'Pass parameters to the tool through params_to_tool. ' +
101
- 'The response may include pre-settlement billing; use usage_history or credits_ledger for final charge status.',
102
- inputSchema: executeToolSchema,
103
- },
104
- {
105
- name: 'usage_history',
106
- description: 'Context-safe usage audit query. Defaults to aggregated summary, supports precise search by execution_id/search_id/charge_outcome/credit range, and writes large exports to a local JSONL file instead of returning all rows.',
107
- inputSchema: usageHistorySchema,
108
- },
109
- {
110
- name: 'credits_ledger',
111
- description: 'Context-safe final credits ledger query. Defaults to aggregated summary, supports precise search by entry type/direction/credit range, and writes large exports to a local JSONL file instead of returning all rows.',
112
- inputSchema: creditsLedgerSchema,
113
- },
114
- // Deprecated aliases (backward compatibility)
115
- {
116
- name: 'search_tools',
117
- description: '[Deprecated: use "discover" instead] Search for available tools based on natural language queries.',
118
- inputSchema: searchToolsSchema,
119
- },
120
- {
121
- name: 'get_tools_by_ids',
122
- description: '[Deprecated: use "inspect" instead] Get descriptions of tools based on their tool IDs.',
123
- inputSchema: getToolsByIdsSchema,
124
- },
125
- {
126
- name: 'execute_tool',
127
- description: '[Deprecated: use "call" instead] Execute a specific remote tool with provided parameters.',
128
- inputSchema: executeToolSchema,
129
- },
130
- ],
131
- };
132
- });
133
- // Deprecated tool name aliases → canonical names
134
- const DEPRECATED_ALIASES = {
135
- search_tools: 'discover',
136
- get_tools_by_ids: 'inspect',
137
- execute_tool: 'call',
138
- };
139
- /**
140
- * Handles tool execution requests.
141
- * Routes to the appropriate handler based on tool name.
142
- * Deprecated aliases emit a warning to stderr.
143
- */
144
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
145
- const { name: rawName, arguments: args } = request.params;
146
- // Resolve deprecated aliases
147
- let name = rawName;
148
- if (DEPRECATED_ALIASES[rawName]) {
149
- name = DEPRECATED_ALIASES[rawName];
150
- process.stderr.write(`[qveris] Deprecated: "${rawName}" → use "${name}" instead\n`);
151
- }
152
- try {
153
- if (name === 'discover') {
154
- const input = (args ?? {});
155
- // Validate required fields
156
- if (!input.query || typeof input.query !== 'string') {
157
- return {
158
- content: [
159
- {
160
- type: 'text',
161
- text: JSON.stringify({
162
- error: 'Missing required parameter: query',
163
- hint: 'Provide a natural language query describing the tool capability you need',
164
- }),
165
- },
166
- ],
167
- isError: true,
168
- };
169
- }
170
- const result = await executeSearchTools(client, input, defaultSessionId);
171
- return {
172
- content: [
173
- {
174
- type: 'text',
175
- text: JSON.stringify(result, null, 2),
176
- },
177
- ],
178
- };
179
- }
180
- if (name === 'inspect') {
181
- const input = (args ?? {});
182
- // Validate required fields
183
- if (!input.tool_ids || !Array.isArray(input.tool_ids) || input.tool_ids.length === 0) {
184
- return {
185
- content: [
186
- {
187
- type: 'text',
188
- text: JSON.stringify({
189
- error: 'Missing or invalid required parameter: tool_ids',
190
- hint: 'Provide an array of tool IDs (at least one) to retrieve tool information',
191
- }),
192
- },
193
- ],
194
- isError: true,
195
- };
196
- }
197
- const result = await executeGetToolsByIds(client, input, defaultSessionId);
198
- return {
199
- content: [
200
- {
201
- type: 'text',
202
- text: JSON.stringify(result, null, 2),
203
- },
204
- ],
205
- };
206
- }
207
- if (name === 'call') {
208
- const input = (args ?? {});
209
- // Validate required fields
210
- const missingFields = [];
211
- if (!input.tool_id)
212
- missingFields.push('tool_id');
213
- if (!input.search_id)
214
- missingFields.push('search_id');
215
- if (!input.params_to_tool)
216
- missingFields.push('params_to_tool');
217
- if (missingFields.length > 0) {
218
- return {
219
- content: [
220
- {
221
- type: 'text',
222
- text: JSON.stringify({
223
- error: `Missing required parameters: ${missingFields.join(', ')}`,
224
- hint: 'tool_id and search_id must come from a previous discover call',
225
- }),
226
- },
227
- ],
228
- isError: true,
229
- };
230
- }
231
- const result = await executeExecuteTool(client, input, defaultSessionId);
232
- return {
233
- content: [
234
- {
235
- type: 'text',
236
- text: JSON.stringify(result, null, 2),
237
- },
238
- ],
239
- };
240
- }
241
- if (name === 'usage_history') {
242
- const input = (args ?? {});
243
- const result = await executeUsageHistory(client, input);
124
+ }
125
+ function isRecord(value) {
126
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
127
+ }
128
+ function readString(value) {
129
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
130
+ }
131
+ function inferProviderId(toolId) {
132
+ if (!toolId)
133
+ return undefined;
134
+ const [providerId] = toolId.split('.');
135
+ return providerId || undefined;
136
+ }
137
+ function compactObject(input) {
138
+ return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));
139
+ }
140
+ /**
141
+ * Route one MCP tool call to the matching Qveris operation.
142
+ */
143
+ export async function executeQverisMcpTool(client, defaultSessionId, rawName, args, warn = (message) => process.stderr.write(message)) {
144
+ // Resolve deprecated aliases.
145
+ let name = rawName;
146
+ if (DEPRECATED_ALIASES[rawName]) {
147
+ name = DEPRECATED_ALIASES[rawName];
148
+ warn(`[qveris] Deprecated: "${rawName}" -> use "${name}" instead\n`);
149
+ }
150
+ const mcpObservability = buildMcpObservability(rawName, name, args, defaultSessionId);
151
+ try {
152
+ if (name === 'discover') {
153
+ const input = (args ?? {});
154
+ // Validate required fields.
155
+ if (!input.query || typeof input.query !== 'string') {
244
156
  return {
245
157
  content: [
246
158
  {
247
159
  type: 'text',
248
- text: JSON.stringify(result, null, 2),
160
+ text: JSON.stringify({
161
+ error: 'Missing required parameter: query',
162
+ hint: 'Provide a natural language query describing the tool capability you need',
163
+ }),
249
164
  },
250
165
  ],
166
+ isError: true,
251
167
  };
252
168
  }
253
- if (name === 'credits_ledger') {
254
- const input = (args ?? {});
255
- const result = await executeCreditsLedger(client, input);
169
+ const result = await executeSearchTools(client, input, defaultSessionId);
170
+ return {
171
+ content: [
172
+ {
173
+ type: 'text',
174
+ text: JSON.stringify(result, null, 2),
175
+ },
176
+ ],
177
+ };
178
+ }
179
+ if (name === 'inspect') {
180
+ const input = (args ?? {});
181
+ // Validate required fields.
182
+ if (!input.tool_ids || !Array.isArray(input.tool_ids) || input.tool_ids.length === 0) {
256
183
  return {
257
184
  content: [
258
185
  {
259
186
  type: 'text',
260
- text: JSON.stringify(result, null, 2),
187
+ text: JSON.stringify({
188
+ error: 'Missing or invalid required parameter: tool_ids',
189
+ hint: 'Provide an array of tool IDs (at least one) to retrieve tool information',
190
+ }),
261
191
  },
262
192
  ],
193
+ isError: true,
263
194
  };
264
195
  }
265
- // Unknown tool
196
+ const result = await executeGetToolsByIds(client, input, defaultSessionId);
266
197
  return {
267
198
  content: [
268
199
  {
269
200
  type: 'text',
270
- text: JSON.stringify({
271
- error: `Unknown tool: ${rawName}`,
272
- available_tools: ['discover', 'inspect', 'call', 'usage_history', 'credits_ledger'],
273
- }),
201
+ text: JSON.stringify(result, null, 2),
274
202
  },
275
203
  ],
276
- isError: true,
277
204
  };
278
205
  }
279
- catch (error) {
280
- // Handle API errors
281
- if (isApiError(error)) {
206
+ if (name === 'call') {
207
+ const input = (args ?? {});
208
+ // Validate required fields.
209
+ const missingFields = [];
210
+ if (!input.tool_id)
211
+ missingFields.push('tool_id');
212
+ if (!input.search_id)
213
+ missingFields.push('search_id');
214
+ if (input.params_to_tool === undefined)
215
+ missingFields.push('params_to_tool');
216
+ if (missingFields.length > 0) {
282
217
  return {
283
218
  content: [
284
219
  {
285
220
  type: 'text',
286
221
  text: JSON.stringify({
287
- error: error.message,
288
- status: error.status,
289
- details: error.details,
222
+ error: `Missing required parameters: ${missingFields.join(', ')}`,
223
+ hint: 'tool_id and search_id must come from a previous discover call',
290
224
  }),
291
225
  },
292
226
  ],
293
227
  isError: true,
294
228
  };
295
229
  }
296
- // Handle other errors (including fetch network errors)
297
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
298
- const errorCause = error instanceof Error && error.cause instanceof Error
299
- ? error.cause.message
300
- : undefined;
230
+ const result = await executeExecuteTool(client, input, defaultSessionId);
231
+ return {
232
+ content: [
233
+ {
234
+ type: 'text',
235
+ text: JSON.stringify(result, null, 2),
236
+ },
237
+ ],
238
+ };
239
+ }
240
+ if (name === 'usage_history') {
241
+ const input = (args ?? {});
242
+ const result = await executeUsageHistory(client, input);
243
+ return {
244
+ content: [
245
+ {
246
+ type: 'text',
247
+ text: JSON.stringify(result, null, 2),
248
+ },
249
+ ],
250
+ };
251
+ }
252
+ if (name === 'credits_ledger') {
253
+ const input = (args ?? {});
254
+ const result = await executeCreditsLedger(client, input);
255
+ return {
256
+ content: [
257
+ {
258
+ type: 'text',
259
+ text: JSON.stringify(result, null, 2),
260
+ },
261
+ ],
262
+ };
263
+ }
264
+ // Unknown tool.
265
+ return {
266
+ content: [
267
+ {
268
+ type: 'text',
269
+ text: JSON.stringify({
270
+ error: `Unknown tool: ${rawName}`,
271
+ available_tools: ['discover', 'inspect', 'call', 'usage_history', 'credits_ledger'],
272
+ }),
273
+ },
274
+ ],
275
+ isError: true,
276
+ };
277
+ }
278
+ catch (error) {
279
+ // Handle API errors.
280
+ if (isApiError(error)) {
301
281
  return {
302
282
  content: [
303
283
  {
304
284
  type: 'text',
305
285
  text: JSON.stringify({
306
- error: errorMessage,
307
- ...(errorCause && { cause: errorCause }),
286
+ error: error.message,
287
+ status: error.status,
288
+ ...(error.details !== undefined && { details: error.details }),
289
+ ...(error.cause && { cause: error.cause }),
290
+ observability: compactObject({
291
+ ...mcpObservability,
292
+ api: error.observability,
293
+ }),
308
294
  }),
309
295
  },
310
296
  ],
311
297
  isError: true,
312
298
  };
313
299
  }
300
+ // Handle other errors (including fetch network errors).
301
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
302
+ const errorCause = error instanceof Error && error.cause instanceof Error
303
+ ? error.cause.message
304
+ : undefined;
305
+ return {
306
+ content: [
307
+ {
308
+ type: 'text',
309
+ text: JSON.stringify({
310
+ error: errorMessage,
311
+ ...(errorCause && { cause: errorCause }),
312
+ }),
313
+ },
314
+ ],
315
+ isError: true,
316
+ };
317
+ }
318
+ }
319
+ /**
320
+ * Main entry point for the Qveris MCP Server.
321
+ *
322
+ * Sets up the MCP server with stdio transport, registers the discover,
323
+ * inspect, and call handlers, and starts listening for requests.
324
+ */
325
+ export async function main() {
326
+ // Initialize API client (validates QVERIS_API_KEY)
327
+ let client;
328
+ try {
329
+ client = createClientFromEnv();
330
+ }
331
+ catch (error) {
332
+ console.error(error instanceof Error ? error.message : 'Failed to initialize Qveris client');
333
+ process.exit(1);
334
+ }
335
+ // Generate a default session ID for this server instance
336
+ const defaultSessionId = uuidv4();
337
+ // Create MCP server
338
+ const server = new Server({
339
+ name: SERVER_NAME,
340
+ version: SERVER_VERSION,
341
+ }, {
342
+ capabilities: {
343
+ tools: {},
344
+ },
345
+ });
346
+ // =========================================================================
347
+ // Tool Handlers
348
+ // =========================================================================
349
+ /**
350
+ * Lists available tools.
351
+ * Returns the discover, inspect, and call definitions (plus deprecated aliases).
352
+ */
353
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
354
+ return {
355
+ tools: listQverisMcpTools(),
356
+ };
357
+ });
358
+ /**
359
+ * Handles tool execution requests.
360
+ * Routes to the appropriate handler based on tool name.
361
+ * Deprecated aliases emit a warning to stderr.
362
+ */
363
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
364
+ const { name, arguments: args } = request.params;
365
+ return executeQverisMcpTool(client, defaultSessionId, name, args);
314
366
  });
315
367
  // =========================================================================
316
368
  // Start Server
@@ -330,9 +382,26 @@ function isApiError(error) {
330
382
  'status' in error &&
331
383
  'message' in error);
332
384
  }
333
- // Run the server
334
- main().catch((error) => {
335
- console.error('Fatal error:', error);
336
- process.exit(1);
337
- });
385
+ export function isEntrypoint(argvEntry, moduleUrl = import.meta.url) {
386
+ if (!argvEntry)
387
+ return false;
388
+ try {
389
+ return pathToFileURL(realpathSync(argvEntry)).href === moduleUrl;
390
+ }
391
+ catch {
392
+ try {
393
+ return pathToFileURL(argvEntry).href === moduleUrl;
394
+ }
395
+ catch {
396
+ return false;
397
+ }
398
+ }
399
+ }
400
+ // Run the server only when this file is the process entrypoint.
401
+ if (isEntrypoint(process.argv[1])) {
402
+ main().catch((error) => {
403
+ console.error('Fatal error:', error);
404
+ process.exit(1);
405
+ });
406
+ }
338
407
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}