@carbonvoice/cv-mcp-server 2.2.0 → 2.4.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/transports/http/middleware/add-mcp-session-id.middleware.js +2 -0
- package/dist/transports/http/middleware/add-mcp-session-id.middleware.js.map +1 -1
- package/dist/utils/axios-instance.js +12 -0
- package/dist/utils/axios-instance.js.map +1 -1
- package/dist/utils/format-to-mcp-tool-response.js +7 -0
- package/dist/utils/format-to-mcp-tool-response.js.map +1 -1
- package/package.json +2 -1
- package/readme.md +27 -4
|
@@ -20,6 +20,8 @@ const addMcpSessionId = (req, res, next) => {
|
|
|
20
20
|
req.headers['mcp-session-id'] = sessionId;
|
|
21
21
|
// Add session ID to response headers for client tracking
|
|
22
22
|
res.setHeader('mcp-session-id', sessionId);
|
|
23
|
+
// Add trace ID to response headers for client tracking
|
|
24
|
+
res.setHeader('X-Trace-ID', (0, request_context_1.getTraceId)() || 'N/A');
|
|
23
25
|
// Record interaction for metrics
|
|
24
26
|
session_1.sessionService.recordInteraction(sessionId);
|
|
25
27
|
// Only log when session ID was missing from request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-mcp-session-id.middleware.js","sourceRoot":"","sources":["../../../../src/transports/http/middleware/add-mcp-session-id.middleware.ts"],"names":[],"mappings":";;;AAGA,0CAAwC;AACxC,wCAA4C;AAC5C,oCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"add-mcp-session-id.middleware.js","sourceRoot":"","sources":["../../../../src/transports/http/middleware/add-mcp-session-id.middleware.ts"],"names":[],"mappings":";;;AAGA,0CAAwC;AACxC,wCAA4C;AAC5C,oCAAgD;AAChD,8DAA4E;AAErE,MAAM,eAAe,GAAG,CAC7B,GAAyB,EACzB,GAAa,EACb,IAAkB,EAClB,EAAE;;IACF,MAAM,SAAS,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,KAAK,0CAAE,IAAI,0CAAE,EAAE,CAAC;IAEzC,oDAAoD;IACpD,IAAA,sCAAoB,EAAC;QACnB,SAAS;QACT,MAAM;KACP,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5D,oCAAoC;IACpC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;IAE1C,yDAAyD;IACzD,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAE3C,uDAAuD;IACvD,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,IAAA,4BAAU,GAAE,IAAI,KAAK,CAAC,CAAC;IAEnD,iCAAiC;IACjC,wBAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE5C,oDAAoD;IACpD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,cAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;YAC7C,KAAK,EAAE,kBAAkB;YACzB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAtCW,QAAA,eAAe,mBAsC1B"}
|
|
@@ -10,6 +10,7 @@ const logger_1 = require("./logger");
|
|
|
10
10
|
const obfuscate_auth_headers_1 = require("./obfuscate-auth-headers");
|
|
11
11
|
const time_to_human_1 = require("./time-to-human");
|
|
12
12
|
const config_1 = require("../config");
|
|
13
|
+
const request_context_1 = require("../transports/http/utils/request-context");
|
|
13
14
|
/**
|
|
14
15
|
* Routes that should not be logged
|
|
15
16
|
*/
|
|
@@ -148,6 +149,7 @@ const getAxiosInstance = () => {
|
|
|
148
149
|
// Error handling function
|
|
149
150
|
function handleAxiosError(error) {
|
|
150
151
|
const serializedError = serializeAxiosError(error);
|
|
152
|
+
const traceId = (0, request_context_1.getTraceId)();
|
|
151
153
|
if (error.response) {
|
|
152
154
|
const statusCode = error.response.status;
|
|
153
155
|
const errorData = error.response.data;
|
|
@@ -162,6 +164,7 @@ function handleAxiosError(error) {
|
|
|
162
164
|
message: (errorData === null || errorData === void 0 ? void 0 : errorData.message) || 'Invalid request parameters',
|
|
163
165
|
details: serializedError,
|
|
164
166
|
},
|
|
167
|
+
traceId,
|
|
165
168
|
},
|
|
166
169
|
};
|
|
167
170
|
case 401:
|
|
@@ -173,6 +176,7 @@ function handleAxiosError(error) {
|
|
|
173
176
|
message: 'Authentication required',
|
|
174
177
|
details: { reason: 'Invalid or missing API key' },
|
|
175
178
|
},
|
|
179
|
+
traceId,
|
|
176
180
|
},
|
|
177
181
|
};
|
|
178
182
|
case 403:
|
|
@@ -184,6 +188,7 @@ function handleAxiosError(error) {
|
|
|
184
188
|
message: 'Access denied',
|
|
185
189
|
details: { reason: 'Insufficient permissions' },
|
|
186
190
|
},
|
|
191
|
+
traceId,
|
|
187
192
|
},
|
|
188
193
|
};
|
|
189
194
|
case 404:
|
|
@@ -195,6 +200,7 @@ function handleAxiosError(error) {
|
|
|
195
200
|
message: (errorData === null || errorData === void 0 ? void 0 : errorData.message) || 'Resource not found',
|
|
196
201
|
details: serializedError,
|
|
197
202
|
},
|
|
203
|
+
traceId,
|
|
198
204
|
},
|
|
199
205
|
};
|
|
200
206
|
case 429:
|
|
@@ -206,6 +212,7 @@ function handleAxiosError(error) {
|
|
|
206
212
|
message: 'Too many requests',
|
|
207
213
|
details: { retryAfter: error.response.headers['retry-after'] },
|
|
208
214
|
},
|
|
215
|
+
traceId,
|
|
209
216
|
},
|
|
210
217
|
};
|
|
211
218
|
case 500:
|
|
@@ -220,6 +227,7 @@ function handleAxiosError(error) {
|
|
|
220
227
|
message: 'Internal server error',
|
|
221
228
|
details: serializedError,
|
|
222
229
|
},
|
|
230
|
+
traceId,
|
|
223
231
|
},
|
|
224
232
|
};
|
|
225
233
|
default:
|
|
@@ -231,6 +239,7 @@ function handleAxiosError(error) {
|
|
|
231
239
|
message: (errorData === null || errorData === void 0 ? void 0 : errorData.message) || 'An unexpected error occurred',
|
|
232
240
|
details: serializedError,
|
|
233
241
|
},
|
|
242
|
+
traceId: (0, request_context_1.getTraceId)(),
|
|
234
243
|
},
|
|
235
244
|
};
|
|
236
245
|
}
|
|
@@ -244,6 +253,7 @@ function handleAxiosError(error) {
|
|
|
244
253
|
message: 'No response received from server',
|
|
245
254
|
details: serializedError,
|
|
246
255
|
},
|
|
256
|
+
traceId: (0, request_context_1.getTraceId)(),
|
|
247
257
|
},
|
|
248
258
|
};
|
|
249
259
|
}
|
|
@@ -256,6 +266,7 @@ function handleAxiosError(error) {
|
|
|
256
266
|
message: error.message || 'Error setting up the request',
|
|
257
267
|
details: serializedError,
|
|
258
268
|
},
|
|
269
|
+
traceId,
|
|
259
270
|
},
|
|
260
271
|
};
|
|
261
272
|
}
|
|
@@ -289,6 +300,7 @@ async function mutator({ url, method, params, data, headers }, options) {
|
|
|
289
300
|
code: 'UNKNOWN_ERROR',
|
|
290
301
|
message: errorMessage,
|
|
291
302
|
details: { originalError: error },
|
|
303
|
+
traceId: (0, request_context_1.getTraceId)(),
|
|
292
304
|
},
|
|
293
305
|
},
|
|
294
306
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-instance.js","sourceRoot":"","sources":["../../src/utils/axios-instance.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"axios-instance.js","sourceRoot":"","sources":["../../src/utils/axios-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formatToMCPToolResponse = void 0;
|
|
4
4
|
const logger_1 = require("./logger");
|
|
5
|
+
const request_context_1 = require("../transports/http/utils/request-context");
|
|
5
6
|
const isErrorWithDetails = (error) => {
|
|
6
7
|
return typeof error === 'object' && error !== null;
|
|
7
8
|
};
|
|
@@ -21,6 +22,7 @@ const formatToMCPToolResponse = (data) => {
|
|
|
21
22
|
message = (error === null || error === void 0 ? void 0 : error.message) || message;
|
|
22
23
|
details = error === null || error === void 0 ? void 0 : error.details;
|
|
23
24
|
}
|
|
25
|
+
const traceId = (0, request_context_1.getTraceId)();
|
|
24
26
|
return {
|
|
25
27
|
content: [
|
|
26
28
|
{
|
|
@@ -30,9 +32,14 @@ const formatToMCPToolResponse = (data) => {
|
|
|
30
32
|
code,
|
|
31
33
|
message,
|
|
32
34
|
details,
|
|
35
|
+
traceId,
|
|
33
36
|
},
|
|
34
37
|
}),
|
|
35
38
|
},
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
text: `--- Debug Info ---\nTrace ID: ${traceId || 'N/A'}\nFor support, include this Trace ID in your report.`,
|
|
42
|
+
},
|
|
36
43
|
],
|
|
37
44
|
};
|
|
38
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-to-mcp-tool-response.js","sourceRoot":"","sources":["../../src/utils/format-to-mcp-tool-response.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;
|
|
1
|
+
{"version":3,"file":"format-to-mcp-tool-response.js","sourceRoot":"","sources":["../../src/utils/format-to-mcp-tool-response.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAGlC,8EAAsE;AAEtE,MAAM,kBAAkB,GAAG,CACzB,KAAc,EACmD,EAAE;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CAAC,IAAa,EAAmB,EAAE;IACxE,IAAI,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5D,IAAI,IAAI,GAAG,eAAe,CAAC;QAC3B,IAAI,OAAO,GAAG,2BAA2B,CAAC;QAC1C,IAAI,OAAO,CAAC;QAEZ,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,KAAI,IAAI,CAAC;YAC3B,OAAO,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,OAAO,CAAC;YACpC,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;QAC3B,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,4BAAU,GAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE;4BACL,IAAI;4BACJ,OAAO;4BACP,OAAO;4BACP,OAAO;yBACR;qBACF,CAAC;iBACH;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,iCAAiC,OAAO,IAAI,KAAK,sDAAsD;iBAC9G;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAtCW,QAAA,uBAAuB,2BAsClC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbonvoice/cv-mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Server implementation for integrating with Carbon Voice's API, providing tools and endpoints for voice messaging, conversations, and workspace management through MCP (Model Context Protocol)",
|
|
5
5
|
"author": "Carbon Voice",
|
|
6
6
|
"license": "ISC",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"axios": "^1.9.0",
|
|
52
52
|
"cors": "^2.8.5",
|
|
53
53
|
"express": "^5.1.0",
|
|
54
|
+
"express-rate-limit": "^7.5.0",
|
|
54
55
|
"helmet": "^8.1.0",
|
|
55
56
|
"http-errors": "^2.0.0",
|
|
56
57
|
"jsonwebtoken": "^9.0.2",
|
package/readme.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Carbon Voice MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://modelcontextprotocol.io) [](https://www.npmjs.com/package/@carbonvoice/cv-mcp-server)
|
|
4
|
+
|
|
5
|
+
A Model Context Protocol (MCP) server implementation for integrating with [Carbon Voice's API](https://api.carbonvoice.app/docs), providing AI assistants with comprehensive tools for voice messaging, conversations, and workspace management.
|
|
6
|
+
|
|
7
|
+
**<img src="https://carbonvoice.app/favicon.ico" alt="Carbon Voice Logo" width="32" height="32" align="center" style="margin-right: 10px;">Carbon Voice**: [https://getcarbon.app](https://getcarbon.app)
|
|
8
|
+
|
|
9
|
+
**<img src="https://pxassets.s3.us-east-2.amazonaws.com/images/swagger-logo.png" alt="Carbon Voice API Logo" width="32" height="32" align="center" style="margin-right: 10px;">API**: [https://api.carbonvoice.app/docs](https://api.carbonvoice.app/docs)
|
|
4
10
|
|
|
5
11
|
## Features
|
|
6
12
|
|
|
@@ -12,6 +18,18 @@ A Model Context Protocol (MCP) server implementation for integrating with Carbon
|
|
|
12
18
|
- **AI Actions**: Run AI prompts and retrieve AI-generated responses
|
|
13
19
|
- **Attachment Support**: Add link attachments to messages
|
|
14
20
|
|
|
21
|
+
## Security & Compliance
|
|
22
|
+
|
|
23
|
+
This server fully complies with [MCP Security Best Practices](https://modelcontextprotocol.io/specification/draft/basic/security_best_practices):
|
|
24
|
+
|
|
25
|
+
- **OAuth 2.1 Authentication**: Secure authorization flow with proper token handling
|
|
26
|
+
- **HTTPS Enforcement**: All remote endpoints served over HTTPS
|
|
27
|
+
- **Session Security**: Cryptographically secure session management
|
|
28
|
+
- **Input Validation**: Comprehensive validation of all user inputs
|
|
29
|
+
- **Rate Limiting**: Built-in protection against abuse
|
|
30
|
+
|
|
31
|
+
For security concerns, please contact: devsupport@phononx.com
|
|
32
|
+
|
|
15
33
|
## Prerequisites
|
|
16
34
|
|
|
17
35
|
### For Stdio Transport (Local Installation)
|
|
@@ -425,16 +443,21 @@ npm run release:minor
|
|
|
425
443
|
- **Use semantic versioning**: patch for fixes, minor for features, major for breaking changes
|
|
426
444
|
- **Always test** with both stdio and HTTP transports before releasing
|
|
427
445
|
|
|
446
|
+
## MCP Compliance
|
|
447
|
+
|
|
448
|
+
This server is fully compliant with the [Model Context Protocol specification](https://modelcontextprotocol.io) and follows all security best practices outlined in the official documentation. The implementation supports both stdio and HTTP transports as defined in the MCP specification.
|
|
449
|
+
|
|
428
450
|
## Support
|
|
429
451
|
|
|
430
452
|
- **Issues**: [GitHub Issues](https://github.com/PhononX/cv-mcp-server/issues)
|
|
431
453
|
- **API Key Requests**: devsupport@phononx.com
|
|
432
|
-
- **
|
|
454
|
+
- **Carbon Voice Platform**: [https://getcarbon.app](https://getcarbon.app)
|
|
455
|
+
- **API Documentation**: [https://api.carbonvoice.app/docs](https://api.carbonvoice.app/docs)
|
|
433
456
|
|
|
434
457
|
## License
|
|
435
458
|
|
|
436
|
-
ISC License - See LICENSE file for details.
|
|
459
|
+
ISC License - See [LICENSE](LICENSE) file for details.
|
|
437
460
|
|
|
438
461
|
---
|
|
439
462
|
|
|
440
|
-
**Note**: This MCP server requires a valid Carbon Voice API key to function.
|
|
463
|
+
**Note**: This MCP server requires a valid Carbon Voice API key to function with stdio transport. For HTTP transport, OAuth2 authentication is handled automatically through the web interface. Please ensure you have the appropriate credentials before attempting to use the server.
|