mcp-insomnia 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.
@@ -0,0 +1,128 @@
1
+ import axios from 'axios';
2
+ import { capResponsePayload, createExecutionAbortSignal, getAbortErrorInfo, normalizeHeaders, resolveExecutionTimeoutMs, } from './http.js';
3
+ function substituteTemplate(value, environmentVariables) {
4
+ let result = value;
5
+ for (const [key, envValue] of Object.entries(environmentVariables)) {
6
+ result = result.replace(new RegExp(`{{${key}}}`, 'g'), String(envValue));
7
+ }
8
+ return result;
9
+ }
10
+ function applyAuthentication(headers, authentication) {
11
+ if (!authentication) {
12
+ return;
13
+ }
14
+ switch (authentication.type) {
15
+ case 'bearer':
16
+ headers['Authorization'] = `Bearer ${authentication.token ?? ''}`;
17
+ break;
18
+ case 'basic': {
19
+ const credentials = Buffer.from(`${authentication.username ?? ''}:${authentication.password ?? ''}`).toString('base64');
20
+ headers['Authorization'] = `Basic ${credentials}`;
21
+ break;
22
+ }
23
+ }
24
+ }
25
+ export function buildProcessedRequest(request, environmentVariables, jsonMimeTypes = ['application/json']) {
26
+ const processedUrl = substituteTemplate(request.url, environmentVariables);
27
+ const processedHeaders = {};
28
+ request.headers.forEach((header) => {
29
+ if (!header.disabled) {
30
+ processedHeaders[header.name] = substituteTemplate(header.value, environmentVariables);
31
+ }
32
+ });
33
+ applyAuthentication(processedHeaders, request.authentication);
34
+ let processedBody = undefined;
35
+ if (request.body) {
36
+ if (request.body.graphql) {
37
+ const gql = request.body.graphql;
38
+ let variablesStr = gql.variables || '{}';
39
+ variablesStr = substituteTemplate(variablesStr, environmentVariables);
40
+ let variables = {};
41
+ try {
42
+ variables = JSON.parse(variablesStr);
43
+ }
44
+ catch {
45
+ // keep {}
46
+ }
47
+ const query = substituteTemplate(gql.query, environmentVariables);
48
+ processedBody = { query, variables };
49
+ }
50
+ else if (request.body.text) {
51
+ processedBody = substituteTemplate(request.body.text, environmentVariables);
52
+ if (request.body.mimeType && jsonMimeTypes.includes(request.body.mimeType)) {
53
+ try {
54
+ processedBody = JSON.parse(processedBody);
55
+ }
56
+ catch {
57
+ // keep string
58
+ }
59
+ }
60
+ }
61
+ }
62
+ return { url: processedUrl, headers: processedHeaders, body: processedBody };
63
+ }
64
+ export async function executeHttpRequest(options) {
65
+ const { request, environmentVariables, mcpSignal, timeoutMs, maxResponseBytes, validateStatus, jsonMimeTypes = ['application/json'], } = options;
66
+ const processed = buildProcessedRequest(request, environmentVariables, jsonMimeTypes);
67
+ const resolvedTimeoutMs = resolveExecutionTimeoutMs(timeoutMs);
68
+ const executionSignal = createExecutionAbortSignal({ mcpSignal, timeoutMs });
69
+ const startTime = Date.now();
70
+ try {
71
+ const response = await axios({
72
+ method: request.method.toLowerCase(),
73
+ url: processed.url,
74
+ headers: processed.headers,
75
+ data: processed.body,
76
+ signal: executionSignal,
77
+ ...(validateStatus !== undefined ? { validateStatus } : {}),
78
+ });
79
+ const duration = Date.now() - startTime;
80
+ const capped = capResponsePayload(response.data, maxResponseBytes);
81
+ return {
82
+ kind: 'success',
83
+ processed,
84
+ status: response.status,
85
+ statusText: response.statusText,
86
+ headers: normalizeHeaders(response.headers),
87
+ data: capped.data,
88
+ rawData: response.data,
89
+ duration,
90
+ capped,
91
+ };
92
+ }
93
+ catch (err) {
94
+ const duration = Date.now() - startTime;
95
+ const abortInfo = getAbortErrorInfo(err, {
96
+ mcpSignal,
97
+ executionSignal,
98
+ timeoutMs: resolvedTimeoutMs,
99
+ });
100
+ if (abortInfo) {
101
+ return {
102
+ kind: 'cancelled',
103
+ processed,
104
+ cancelReason: abortInfo.cancelReason,
105
+ message: abortInfo.message,
106
+ duration,
107
+ };
108
+ }
109
+ const error = err;
110
+ const responseData = error.response?.data;
111
+ const capped = capResponsePayload(responseData, maxResponseBytes);
112
+ return {
113
+ kind: 'error',
114
+ processed,
115
+ message: error.message || 'Unknown error',
116
+ code: error.code,
117
+ status: error.response?.status,
118
+ statusText: error.response?.statusText,
119
+ headers: error.response?.headers
120
+ ? normalizeHeaders(error.response.headers)
121
+ : undefined,
122
+ data: capped.data,
123
+ duration,
124
+ capped,
125
+ };
126
+ }
127
+ }
128
+ //# sourceMappingURL=request-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-executor.js","sourceRoot":"","sources":["../../src/utils/request-executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-insomnia",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "MCP server for making HTTP requests and managing API collections",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -59,9 +59,10 @@
59
59
  },
60
60
  "overrides": {
61
61
  "@hono/node-server": "^1.19.13",
62
- "hono": "^4.12.21",
62
+ "esbuild": "^0.28.1",
63
+ "hono": "^4.12.25",
63
64
  "httpsnippet": {
64
- "form-data": "^4.0.5"
65
+ "form-data": "^4.0.6"
65
66
  },
66
67
  "minimatch@3.1.5": {
67
68
  "brace-expansion": "^1.1.13"