@voxburst/mcp-server 0.1.1 → 0.2.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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for RateLimiter
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=rate-limiter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/rate-limiter.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for RateLimiter
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const rate_limiter_js_1 = require("../middleware/rate-limiter.js");
8
+ (0, vitest_1.describe)('RateLimiter', () => {
9
+ let limiter;
10
+ (0, vitest_1.afterEach)(() => {
11
+ limiter?.destroy();
12
+ });
13
+ (0, vitest_1.it)('allows requests within limit', () => {
14
+ limiter = new rate_limiter_js_1.RateLimiter({ maxRequests: 5, windowMs: 60000 });
15
+ for (let i = 0; i < 5; i++) {
16
+ const result = limiter.check('test-key');
17
+ (0, vitest_1.expect)(result.allowed).toBe(true);
18
+ (0, vitest_1.expect)(result.remaining).toBe(4 - i);
19
+ }
20
+ });
21
+ (0, vitest_1.it)('blocks requests exceeding limit', () => {
22
+ limiter = new rate_limiter_js_1.RateLimiter({ maxRequests: 3, windowMs: 60000 });
23
+ limiter.check('test-key');
24
+ limiter.check('test-key');
25
+ limiter.check('test-key');
26
+ const result = limiter.check('test-key');
27
+ (0, vitest_1.expect)(result.allowed).toBe(false);
28
+ (0, vitest_1.expect)(result.remaining).toBe(0);
29
+ });
30
+ (0, vitest_1.it)('tracks keys independently', () => {
31
+ limiter = new rate_limiter_js_1.RateLimiter({ maxRequests: 2, windowMs: 60000 });
32
+ limiter.check('key-a');
33
+ limiter.check('key-a');
34
+ const resultA = limiter.check('key-a');
35
+ const resultB = limiter.check('key-b');
36
+ (0, vitest_1.expect)(resultA.allowed).toBe(false);
37
+ (0, vitest_1.expect)(resultB.allowed).toBe(true);
38
+ });
39
+ (0, vitest_1.it)('provides resetAt timestamp', () => {
40
+ limiter = new rate_limiter_js_1.RateLimiter({ maxRequests: 1, windowMs: 60000 });
41
+ const result = limiter.check('test-key');
42
+ (0, vitest_1.expect)(result.resetAt).toBeGreaterThan(Date.now());
43
+ (0, vitest_1.expect)(result.resetAt).toBeLessThanOrEqual(Date.now() + 60000);
44
+ });
45
+ (0, vitest_1.it)('resets after window expires', async () => {
46
+ limiter = new rate_limiter_js_1.RateLimiter({ maxRequests: 1, windowMs: 50 });
47
+ limiter.check('test-key');
48
+ const blocked = limiter.check('test-key');
49
+ (0, vitest_1.expect)(blocked.allowed).toBe(false);
50
+ // Wait for window to expire
51
+ await new Promise(resolve => setTimeout(resolve, 60));
52
+ const afterReset = limiter.check('test-key');
53
+ (0, vitest_1.expect)(afterReset.allowed).toBe(true);
54
+ });
55
+ });
56
+ //# sourceMappingURL=rate-limiter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.test.js","sourceRoot":"","sources":["../../src/__tests__/rate-limiter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for MCP Server tool handlers
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for MCP Server tool handlers
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const posts_js_1 = require("../tools/posts.js");
8
+ const accounts_js_1 = require("../tools/accounts.js");
9
+ const analytics_js_1 = require("../tools/analytics.js");
10
+ // Mock client factory
11
+ function createMockClient() {
12
+ return {
13
+ listAccounts: vitest_1.vi.fn().mockResolvedValue([
14
+ {
15
+ id: 'acc_1',
16
+ platform: 'twitter',
17
+ handle: '@test',
18
+ displayName: 'Test User',
19
+ connected: true,
20
+ lastSync: '2026-03-03T00:00:00Z',
21
+ },
22
+ ]),
23
+ getAccount: vitest_1.vi.fn().mockResolvedValue({
24
+ id: 'acc_1',
25
+ platform: 'twitter',
26
+ handle: '@test',
27
+ displayName: 'Test User',
28
+ connected: true,
29
+ }),
30
+ createPost: vitest_1.vi.fn().mockResolvedValue({
31
+ id: 'post_1',
32
+ content: 'Hello World',
33
+ status: 'draft',
34
+ accounts: ['acc_1'],
35
+ createdAt: '2026-03-03T00:00:00Z',
36
+ updatedAt: '2026-03-03T00:00:00Z',
37
+ }),
38
+ listPosts: vitest_1.vi.fn().mockResolvedValue([
39
+ {
40
+ id: 'post_1',
41
+ content: 'Hello World',
42
+ status: 'published',
43
+ accounts: ['acc_1'],
44
+ createdAt: '2026-03-03T00:00:00Z',
45
+ updatedAt: '2026-03-03T00:00:00Z',
46
+ },
47
+ ]),
48
+ getPost: vitest_1.vi.fn().mockResolvedValue({
49
+ id: 'post_1',
50
+ content: 'Hello World',
51
+ status: 'published',
52
+ accounts: ['acc_1'],
53
+ createdAt: '2026-03-03T00:00:00Z',
54
+ updatedAt: '2026-03-03T00:00:00Z',
55
+ }),
56
+ deletePost: vitest_1.vi.fn().mockResolvedValue(undefined),
57
+ validateContent: vitest_1.vi.fn().mockResolvedValue({
58
+ valid: true,
59
+ errors: [],
60
+ warnings: [],
61
+ }),
62
+ getPostMetrics: vitest_1.vi.fn().mockResolvedValue({
63
+ postId: 'post_1',
64
+ impressions: 1000,
65
+ engagements: 50,
66
+ likes: 30,
67
+ shares: 10,
68
+ comments: 5,
69
+ clicks: 5,
70
+ collectedAt: '2026-03-03T00:00:00Z',
71
+ }),
72
+ getAccountMetrics: vitest_1.vi.fn().mockResolvedValue({
73
+ accountId: 'acc_1',
74
+ followers: 500,
75
+ following: 200,
76
+ totalPosts: 100,
77
+ avgEngagementRate: 3.5,
78
+ collectedAt: '2026-03-03T00:00:00Z',
79
+ }),
80
+ };
81
+ }
82
+ (0, vitest_1.describe)('Post Tools', () => {
83
+ let client;
84
+ (0, vitest_1.beforeEach)(() => {
85
+ client = createMockClient();
86
+ });
87
+ (0, vitest_1.describe)('handleCreatePost', () => {
88
+ (0, vitest_1.it)('creates a post with valid input', async () => {
89
+ const result = await (0, posts_js_1.handleCreatePost)(client, {
90
+ content: 'Hello World',
91
+ accountIds: ['acc_1'],
92
+ });
93
+ (0, vitest_1.expect)(result).toHaveProperty('id', 'post_1');
94
+ (0, vitest_1.expect)(client.createPost).toHaveBeenCalledWith({
95
+ content: 'Hello World',
96
+ accountIds: ['acc_1'],
97
+ mediaUrls: undefined,
98
+ scheduledFor: undefined,
99
+ });
100
+ });
101
+ (0, vitest_1.it)('creates a scheduled post', async () => {
102
+ await (0, posts_js_1.handleCreatePost)(client, {
103
+ content: 'Scheduled post',
104
+ accountIds: ['acc_1'],
105
+ scheduledFor: '2026-03-04T09:00:00Z',
106
+ });
107
+ (0, vitest_1.expect)(client.createPost).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ scheduledFor: '2026-03-04T09:00:00Z' }));
108
+ });
109
+ (0, vitest_1.it)('rejects empty content', async () => {
110
+ await (0, vitest_1.expect)((0, posts_js_1.handleCreatePost)(client, { content: '', accountIds: ['acc_1'] })).rejects.toThrow();
111
+ });
112
+ (0, vitest_1.it)('rejects missing accountIds', async () => {
113
+ await (0, vitest_1.expect)((0, posts_js_1.handleCreatePost)(client, { content: 'Hello' })).rejects.toThrow();
114
+ });
115
+ });
116
+ (0, vitest_1.describe)('handleListPosts', () => {
117
+ (0, vitest_1.it)('lists posts with default params', async () => {
118
+ const result = await (0, posts_js_1.handleListPosts)(client, {});
119
+ (0, vitest_1.expect)(Array.isArray(result)).toBe(true);
120
+ (0, vitest_1.expect)(client.listPosts).toHaveBeenCalled();
121
+ });
122
+ (0, vitest_1.it)('filters by status', async () => {
123
+ await (0, posts_js_1.handleListPosts)(client, { status: 'published' });
124
+ (0, vitest_1.expect)(client.listPosts).toHaveBeenCalledWith(vitest_1.expect.objectContaining({ status: 'published' }));
125
+ });
126
+ (0, vitest_1.it)('rejects invalid status', async () => {
127
+ await (0, vitest_1.expect)((0, posts_js_1.handleListPosts)(client, { status: 'invalid_status' })).rejects.toThrow();
128
+ });
129
+ });
130
+ (0, vitest_1.describe)('handleGetPost', () => {
131
+ (0, vitest_1.it)('gets a post by ID', async () => {
132
+ const result = await (0, posts_js_1.handleGetPost)(client, { postId: 'post_1' });
133
+ (0, vitest_1.expect)(result).toHaveProperty('id', 'post_1');
134
+ });
135
+ (0, vitest_1.it)('rejects missing postId', async () => {
136
+ await (0, vitest_1.expect)((0, posts_js_1.handleGetPost)(client, {})).rejects.toThrow();
137
+ });
138
+ });
139
+ (0, vitest_1.describe)('handleDeletePost', () => {
140
+ (0, vitest_1.it)('deletes a post and returns success', async () => {
141
+ const result = await (0, posts_js_1.handleDeletePost)(client, { postId: 'post_1' });
142
+ (0, vitest_1.expect)(result).toEqual({ success: true, message: 'Post post_1 deleted successfully' });
143
+ });
144
+ });
145
+ (0, vitest_1.describe)('handleValidateContent', () => {
146
+ (0, vitest_1.it)('validates content', async () => {
147
+ const result = await (0, posts_js_1.handleValidateContent)(client, {
148
+ content: 'Test content',
149
+ accountIds: ['acc_1'],
150
+ });
151
+ (0, vitest_1.expect)(result).toHaveProperty('valid', true);
152
+ });
153
+ });
154
+ });
155
+ (0, vitest_1.describe)('Account Tools', () => {
156
+ let client;
157
+ (0, vitest_1.beforeEach)(() => {
158
+ client = createMockClient();
159
+ });
160
+ (0, vitest_1.describe)('handleListAccounts', () => {
161
+ (0, vitest_1.it)('lists all accounts', async () => {
162
+ const result = await (0, accounts_js_1.handleListAccounts)(client);
163
+ (0, vitest_1.expect)(Array.isArray(result)).toBe(true);
164
+ (0, vitest_1.expect)(result[0]).toHaveProperty('platform', 'twitter');
165
+ });
166
+ });
167
+ (0, vitest_1.describe)('handleGetAccount', () => {
168
+ (0, vitest_1.it)('gets an account by ID', async () => {
169
+ const result = await (0, accounts_js_1.handleGetAccount)(client, { accountId: 'acc_1' });
170
+ (0, vitest_1.expect)(result).toHaveProperty('id', 'acc_1');
171
+ });
172
+ (0, vitest_1.it)('rejects missing accountId', async () => {
173
+ await (0, vitest_1.expect)((0, accounts_js_1.handleGetAccount)(client, {})).rejects.toThrow();
174
+ });
175
+ });
176
+ });
177
+ (0, vitest_1.describe)('Analytics Tools', () => {
178
+ let client;
179
+ (0, vitest_1.beforeEach)(() => {
180
+ client = createMockClient();
181
+ });
182
+ (0, vitest_1.describe)('handleGetPostMetrics', () => {
183
+ (0, vitest_1.it)('gets post metrics', async () => {
184
+ const result = await (0, analytics_js_1.handleGetPostMetrics)(client, { postId: 'post_1' });
185
+ (0, vitest_1.expect)(result).toHaveProperty('impressions', 1000);
186
+ });
187
+ });
188
+ (0, vitest_1.describe)('handleGetAccountMetrics', () => {
189
+ (0, vitest_1.it)('gets account metrics', async () => {
190
+ const result = await (0, analytics_js_1.handleGetAccountMetrics)(client, { accountId: 'acc_1' });
191
+ (0, vitest_1.expect)(result).toHaveProperty('followers', 500);
192
+ });
193
+ });
194
+ });
195
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -57,14 +57,14 @@ class VoxBurstClient {
57
57
  }
58
58
  // Account Methods
59
59
  async listAccounts() {
60
- return this.request('GET', '/api/v1/accounts');
60
+ return this.request('GET', '/v1/accounts');
61
61
  }
62
62
  async getAccount(accountId) {
63
- return this.request('GET', `/api/v1/accounts/${accountId}`);
63
+ return this.request('GET', `/v1/accounts/${accountId}`);
64
64
  }
65
65
  // Post Methods
66
66
  async createPost(request) {
67
- return this.request('POST', '/api/v1/posts', request);
67
+ return this.request('POST', '/v1/posts', request);
68
68
  }
69
69
  async listPosts(params) {
70
70
  const queryParams = new URLSearchParams();
@@ -77,27 +77,27 @@ class VoxBurstClient {
77
77
  if (params?.offset)
78
78
  queryParams.set('offset', params.offset.toString());
79
79
  const query = queryParams.toString();
80
- const path = query ? `/api/v1/posts?${query}` : '/api/v1/posts';
80
+ const path = query ? `/v1/posts?${query}` : '/v1/posts';
81
81
  return this.request('GET', path);
82
82
  }
83
83
  async getPost(postId) {
84
- return this.request('GET', `/api/v1/posts/${postId}`);
84
+ return this.request('GET', `/v1/posts/${postId}`);
85
85
  }
86
86
  async deletePost(postId) {
87
- await this.request('DELETE', `/api/v1/posts/${postId}`);
87
+ await this.request('DELETE', `/v1/posts/${postId}`);
88
88
  }
89
89
  async validateContent(content, accountIds) {
90
- return this.request('POST', '/api/v1/posts/validate', {
90
+ return this.request('POST', '/v1/posts/validate', {
91
91
  content,
92
92
  accountIds,
93
93
  });
94
94
  }
95
95
  // Analytics Methods
96
96
  async getPostMetrics(postId) {
97
- return this.request('GET', `/api/v1/analytics/posts/${postId}`);
97
+ return this.request('GET', `/v1/analytics/posts/${postId}`);
98
98
  }
99
99
  async getAccountMetrics(accountId) {
100
- return this.request('GET', `/api/v1/analytics/accounts/${accountId}`);
100
+ return this.request('GET', `/v1/analytics/accounts/${accountId}`);
101
101
  }
102
102
  }
103
103
  exports.VoxBurstClient = VoxBurstClient;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * VoxBurst MCP Server
4
4
  *
5
- * Model Context Protocol server that enables AI agents to manage
6
- * social media posts through VoxBurst.
5
+ * Production-hardened Model Context Protocol server that enables
6
+ * AI agents to manage social media posts through VoxBurst.
7
7
  *
8
8
  * @see https://modelcontextprotocol.io
9
9
  */
package/dist/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  /**
4
4
  * VoxBurst MCP Server
5
5
  *
6
- * Model Context Protocol server that enables AI agents to manage
7
- * social media posts through VoxBurst.
6
+ * Production-hardened Model Context Protocol server that enables
7
+ * AI agents to manage social media posts through VoxBurst.
8
8
  *
9
9
  * @see https://modelcontextprotocol.io
10
10
  */
@@ -15,12 +15,15 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
15
15
  const client_js_1 = require("./client.js");
16
16
  const index_js_2 = require("./tools/index.js");
17
17
  const index_js_3 = require("./resources/index.js");
18
+ const rate_limiter_js_1 = require("./middleware/rate-limiter.js");
19
+ const auth_js_1 = require("./middleware/auth.js");
20
+ const logger_js_1 = require("./middleware/logger.js");
18
21
  const SERVER_NAME = 'voxburst';
19
- const SERVER_VERSION = '0.1.0';
22
+ const SERVER_VERSION = '0.2.0';
20
23
  /**
21
- * Create and configure the MCP server
24
+ * Create and configure the MCP server with production hardening
22
25
  */
23
- function createServer(client) {
26
+ function createServer(client, logger, rateLimiter) {
24
27
  const server = new index_js_1.Server({
25
28
  name: SERVER_NAME,
26
29
  version: SERVER_VERSION,
@@ -32,12 +35,33 @@ function createServer(client) {
32
35
  });
33
36
  // Register tool handlers
34
37
  server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
38
+ logger.debug('Listing tools');
35
39
  return {
36
40
  tools: (0, index_js_2.getAllTools)(),
37
41
  };
38
42
  });
39
43
  server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
40
44
  const { name, arguments: args } = request.params;
45
+ const startTime = Date.now();
46
+ // Rate limiting
47
+ const rateLimitKey = `tool:${name}`;
48
+ const rateResult = rateLimiter.check(rateLimitKey);
49
+ if (!rateResult.allowed) {
50
+ logger.warn('Rate limit exceeded', { tool: name, resetAt: new Date(rateResult.resetAt).toISOString() });
51
+ return {
52
+ content: [
53
+ {
54
+ type: 'text',
55
+ text: JSON.stringify({
56
+ error: 'RATE_LIMIT_EXCEEDED',
57
+ message: `Rate limit exceeded for tool "${name}". Try again after ${new Date(rateResult.resetAt).toISOString()}.`,
58
+ retryAfterMs: rateResult.resetAt - Date.now(),
59
+ }),
60
+ },
61
+ ],
62
+ isError: true,
63
+ };
64
+ }
41
65
  try {
42
66
  let result;
43
67
  switch (name) {
@@ -72,16 +96,21 @@ function createServer(client) {
72
96
  result = await (0, index_js_2.handleGetAccountMetrics)(client, args);
73
97
  break;
74
98
  default:
99
+ logger.warn('Unknown tool called', { tool: name });
75
100
  return {
76
101
  content: [
77
102
  {
78
103
  type: 'text',
79
- text: `Unknown tool: ${name}`,
104
+ text: JSON.stringify({
105
+ error: 'UNKNOWN_TOOL',
106
+ message: `Unknown tool: ${name}. Use list_tools to see available tools.`,
107
+ }),
80
108
  },
81
109
  ],
82
110
  isError: true,
83
111
  };
84
112
  }
113
+ logger.toolCall(name, startTime);
85
114
  return {
86
115
  content: [
87
116
  {
@@ -92,12 +121,13 @@ function createServer(client) {
92
121
  };
93
122
  }
94
123
  catch (error) {
95
- const errorMessage = formatError(error);
124
+ const errorResponse = formatErrorResponse(error);
125
+ logger.toolCall(name, startTime, errorResponse.message);
96
126
  return {
97
127
  content: [
98
128
  {
99
129
  type: 'text',
100
- text: errorMessage,
130
+ text: JSON.stringify(errorResponse),
101
131
  },
102
132
  ],
103
133
  isError: true,
@@ -106,22 +136,32 @@ function createServer(client) {
106
136
  });
107
137
  // Register resource handlers
108
138
  server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
139
+ logger.debug('Listing resources');
109
140
  return {
110
141
  resources: (0, index_js_3.getAllResources)(),
111
142
  };
112
143
  });
113
144
  server.setRequestHandler(types_js_1.ListResourceTemplatesRequestSchema, async () => {
145
+ logger.debug('Listing resource templates');
114
146
  return {
115
147
  resourceTemplates: (0, index_js_3.getAllResourceTemplates)(),
116
148
  };
117
149
  });
118
150
  server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
119
151
  const { uri } = request.params;
152
+ const startTime = Date.now();
153
+ // Rate limiting for resource reads
154
+ const rateResult = rateLimiter.check(`resource:${uri}`);
155
+ if (!rateResult.allowed) {
156
+ logger.warn('Rate limit exceeded for resource', { resource: uri });
157
+ throw new Error(`Rate limit exceeded. Try again after ${new Date(rateResult.resetAt).toISOString()}.`);
158
+ }
120
159
  try {
121
160
  // Try account resources
122
161
  if (uri.startsWith(index_js_3.ACCOUNT_URI_PREFIX) || uri === 'accounts://list') {
123
162
  const content = await (0, index_js_3.readAccountResource)(client, uri);
124
163
  if (content) {
164
+ logger.resourceRead(uri, startTime);
125
165
  return { contents: [content] };
126
166
  }
127
167
  }
@@ -129,21 +169,59 @@ function createServer(client) {
129
169
  if (uri.startsWith(index_js_3.POST_URI_PREFIX) || uri === 'posts://recent') {
130
170
  const content = await (0, index_js_3.readPostResource)(client, uri);
131
171
  if (content) {
172
+ logger.resourceRead(uri, startTime);
132
173
  return { contents: [content] };
133
174
  }
134
175
  }
176
+ logger.resourceRead(uri, startTime, 'Resource not found');
135
177
  throw new Error(`Resource not found: ${uri}`);
136
178
  }
137
179
  catch (error) {
138
- throw new Error(formatError(error));
180
+ const msg = error instanceof Error ? error.message : String(error);
181
+ logger.resourceRead(uri, startTime, msg);
182
+ throw new Error(formatErrorMessage(error));
139
183
  }
140
184
  });
141
185
  return server;
142
186
  }
143
187
  /**
144
- * Format error for MCP response
188
+ * Format error for MCP response — structured, no stack traces
145
189
  */
146
- function formatError(error) {
190
+ function formatErrorResponse(error) {
191
+ if (error instanceof client_js_1.VoxBurstAPIError) {
192
+ return {
193
+ error: error.code || 'API_ERROR',
194
+ message: error.message,
195
+ statusCode: error.statusCode,
196
+ };
197
+ }
198
+ if (error instanceof SyntaxError || (error instanceof Error && error.name === 'ZodError')) {
199
+ return {
200
+ error: 'INVALID_INPUT',
201
+ message: 'Invalid input parameters. Check tool schema for required fields and types.',
202
+ };
203
+ }
204
+ if (error instanceof TypeError && error.message.includes('fetch')) {
205
+ return {
206
+ error: 'NETWORK_ERROR',
207
+ message: 'Unable to connect to VoxBurst API. Check your network connection and API URL.',
208
+ };
209
+ }
210
+ if (error instanceof Error) {
211
+ return {
212
+ error: 'INTERNAL_ERROR',
213
+ message: error.message,
214
+ };
215
+ }
216
+ return {
217
+ error: 'UNKNOWN_ERROR',
218
+ message: 'An unexpected error occurred.',
219
+ };
220
+ }
221
+ /**
222
+ * Format error message string (no stack traces)
223
+ */
224
+ function formatErrorMessage(error) {
147
225
  if (error instanceof client_js_1.VoxBurstAPIError) {
148
226
  return `VoxBurst API Error (${error.statusCode}): ${error.message}${error.code ? ` [${error.code}]` : ''}`;
149
227
  }
@@ -156,29 +234,62 @@ function formatError(error) {
156
234
  * Main entry point
157
235
  */
158
236
  async function main() {
237
+ const logger = (0, logger_js_1.createLoggerFromEnv)();
159
238
  try {
239
+ // Validate authentication
240
+ const authConfig = (0, auth_js_1.createAuthConfigFromEnv)();
241
+ const authResult = (0, auth_js_1.validateAuth)(authConfig);
242
+ if (!authResult.authenticated) {
243
+ logger.error('Authentication failed', { error: authResult.error });
244
+ console.error(`Authentication error: ${authResult.error}`);
245
+ process.exit(1);
246
+ }
247
+ logger.info('Authentication validated', { method: authResult.method });
160
248
  // Create API client from environment
161
249
  const client = (0, client_js_1.createClientFromEnv)();
250
+ // Create rate limiter
251
+ const rateLimiter = new rate_limiter_js_1.RateLimiter({
252
+ maxRequests: parseInt(process.env.VOXBURST_RATE_LIMIT || '100', 10),
253
+ windowMs: parseInt(process.env.VOXBURST_RATE_WINDOW_MS || '60000', 10),
254
+ });
162
255
  // Create and start server
163
- const server = createServer(client);
256
+ const server = createServer(client, logger, rateLimiter);
164
257
  const transport = new stdio_js_1.StdioServerTransport();
165
258
  await server.connect(transport);
166
- // Log to stderr (stdout is for MCP protocol)
167
- console.error(`VoxBurst MCP Server v${SERVER_VERSION} started`);
259
+ logger.info(`VoxBurst MCP Server v${SERVER_VERSION} started`, {
260
+ authMethod: authResult.method,
261
+ rateLimit: process.env.VOXBURST_RATE_LIMIT || '100',
262
+ });
263
+ // Graceful shutdown handler
264
+ const shutdown = async (signal) => {
265
+ logger.info(`Received ${signal}, shutting down gracefully...`);
266
+ rateLimiter.destroy();
267
+ // Give in-flight requests time to complete
268
+ setTimeout(() => {
269
+ logger.info('Shutdown complete');
270
+ process.exit(0);
271
+ }, 1000);
272
+ };
273
+ process.on('SIGINT', () => shutdown('SIGINT'));
274
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
275
+ process.on('SIGHUP', () => shutdown('SIGHUP'));
276
+ // Handle uncaught errors gracefully
277
+ process.on('uncaughtException', (error) => {
278
+ logger.error('Uncaught exception', { error: error.message });
279
+ process.exit(1);
280
+ });
281
+ process.on('unhandledRejection', (reason) => {
282
+ logger.error('Unhandled rejection', {
283
+ error: reason instanceof Error ? reason.message : String(reason),
284
+ });
285
+ });
168
286
  }
169
287
  catch (error) {
170
- console.error('Failed to start VoxBurst MCP Server:', error);
288
+ logger.error('Failed to start VoxBurst MCP Server', {
289
+ error: error instanceof Error ? error.message : String(error),
290
+ });
171
291
  process.exit(1);
172
292
  }
173
293
  }
174
- // Handle graceful shutdown
175
- process.on('SIGINT', () => {
176
- console.error('Shutting down VoxBurst MCP Server...');
177
- process.exit(0);
178
- });
179
- process.on('SIGTERM', () => {
180
- console.error('Shutting down VoxBurst MCP Server...');
181
- process.exit(0);
182
- });
183
294
  main();
184
295
  //# 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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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Authentication middleware for MCP Server
3
+ * Validates API keys and optional Cognito tokens
4
+ */
5
+ export interface AuthConfig {
6
+ /** Required API key for access */
7
+ apiKey?: string;
8
+ /** Optional: Cognito User Pool ID for token validation */
9
+ cognitoUserPoolId?: string;
10
+ /** Optional: Cognito region */
11
+ cognitoRegion?: string;
12
+ }
13
+ export interface AuthResult {
14
+ authenticated: boolean;
15
+ method: 'api-key' | 'cognito' | 'none';
16
+ userId?: string;
17
+ error?: string;
18
+ }
19
+ /**
20
+ * Validate authentication from environment.
21
+ * For stdio transport, auth is done via environment variables.
22
+ * For HTTP transport, auth would be via headers.
23
+ */
24
+ export declare function validateAuth(config: AuthConfig): AuthResult;
25
+ /**
26
+ * Create auth config from environment variables
27
+ */
28
+ export declare function createAuthConfigFromEnv(): AuthConfig;
29
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAe3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAMpD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Authentication middleware for MCP Server
4
+ * Validates API keys and optional Cognito tokens
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateAuth = validateAuth;
8
+ exports.createAuthConfigFromEnv = createAuthConfigFromEnv;
9
+ /**
10
+ * Validate authentication from environment.
11
+ * For stdio transport, auth is done via environment variables.
12
+ * For HTTP transport, auth would be via headers.
13
+ */
14
+ function validateAuth(config) {
15
+ // For stdio transport: if API key is configured, it's already validated
16
+ // (client.ts checks VOXBURST_API_KEY on startup)
17
+ if (config.apiKey) {
18
+ return {
19
+ authenticated: true,
20
+ method: 'api-key',
21
+ };
22
+ }
23
+ return {
24
+ authenticated: false,
25
+ method: 'none',
26
+ error: 'No authentication configured. Set VOXBURST_API_KEY environment variable.',
27
+ };
28
+ }
29
+ /**
30
+ * Create auth config from environment variables
31
+ */
32
+ function createAuthConfigFromEnv() {
33
+ return {
34
+ apiKey: process.env.VOXBURST_API_KEY,
35
+ cognitoUserPoolId: process.env.VOXBURST_COGNITO_USER_POOL_ID,
36
+ cognitoRegion: process.env.VOXBURST_COGNITO_REGION || 'us-east-1',
37
+ };
38
+ }
39
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAuBH,oCAeC;AAKD,0DAMC;AA/BD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAkB;IAC7C,wEAAwE;IACxE,iDAAiD;IACjD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,0EAA0E;KAClF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QACpC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;QAC5D,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,WAAW;KAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { RateLimiter, type RateLimitConfig } from './rate-limiter.js';
2
+ export { validateAuth, createAuthConfigFromEnv, type AuthConfig, type AuthResult } from './auth.js';
3
+ export { Logger, createLoggerFromEnv, type LogLevel, type LogEntry } from './logger.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLoggerFromEnv = exports.Logger = exports.createAuthConfigFromEnv = exports.validateAuth = exports.RateLimiter = void 0;
4
+ var rate_limiter_js_1 = require("./rate-limiter.js");
5
+ Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return rate_limiter_js_1.RateLimiter; } });
6
+ var auth_js_1 = require("./auth.js");
7
+ Object.defineProperty(exports, "validateAuth", { enumerable: true, get: function () { return auth_js_1.validateAuth; } });
8
+ Object.defineProperty(exports, "createAuthConfigFromEnv", { enumerable: true, get: function () { return auth_js_1.createAuthConfigFromEnv; } });
9
+ var logger_js_1 = require("./logger.js");
10
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_js_1.Logger; } });
11
+ Object.defineProperty(exports, "createLoggerFromEnv", { enumerable: true, get: function () { return logger_js_1.createLoggerFromEnv; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;AAAA,qDAAsE;AAA7D,8GAAA,WAAW,OAAA;AACpB,qCAAoG;AAA3F,uGAAA,YAAY,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC9C,yCAAwF;AAA/E,mGAAA,MAAM,OAAA;AAAE,gHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Structured logger for MCP Server
3
+ * Logs to stderr (stdout reserved for MCP protocol)
4
+ */
5
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
6
+ export interface LogEntry {
7
+ timestamp: string;
8
+ level: LogLevel;
9
+ message: string;
10
+ tool?: string;
11
+ resource?: string;
12
+ durationMs?: number;
13
+ error?: string;
14
+ errorCode?: string;
15
+ [key: string]: unknown;
16
+ }
17
+ export declare class Logger {
18
+ private minLevel;
19
+ constructor(level?: LogLevel);
20
+ private log;
21
+ debug(message: string, meta?: Record<string, unknown>): void;
22
+ info(message: string, meta?: Record<string, unknown>): void;
23
+ warn(message: string, meta?: Record<string, unknown>): void;
24
+ error(message: string, meta?: Record<string, unknown>): void;
25
+ /**
26
+ * Log a tool call with timing
27
+ */
28
+ toolCall(name: string, startTime: number, error?: string): void;
29
+ /**
30
+ * Log a resource read with timing
31
+ */
32
+ resourceRead(uri: string, startTime: number, error?: string): void;
33
+ }
34
+ /**
35
+ * Create logger from environment
36
+ */
37
+ export declare function createLoggerFromEnv(): Logger;
38
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAS;gBAEb,KAAK,GAAE,QAAiB;IAIpC,OAAO,CAAC,GAAG;IAcX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAS/D;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;CAQnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Structured logger for MCP Server
4
+ * Logs to stderr (stdout reserved for MCP protocol)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Logger = void 0;
8
+ exports.createLoggerFromEnv = createLoggerFromEnv;
9
+ const LOG_LEVELS = {
10
+ debug: 0,
11
+ info: 1,
12
+ warn: 2,
13
+ error: 3,
14
+ };
15
+ class Logger {
16
+ minLevel;
17
+ constructor(level = 'info') {
18
+ this.minLevel = LOG_LEVELS[level];
19
+ }
20
+ log(level, message, meta) {
21
+ if (LOG_LEVELS[level] < this.minLevel)
22
+ return;
23
+ const entry = {
24
+ timestamp: new Date().toISOString(),
25
+ level,
26
+ message,
27
+ ...meta,
28
+ };
29
+ // Log as JSON to stderr (stdout is MCP protocol)
30
+ console.error(JSON.stringify(entry));
31
+ }
32
+ debug(message, meta) {
33
+ this.log('debug', message, meta);
34
+ }
35
+ info(message, meta) {
36
+ this.log('info', message, meta);
37
+ }
38
+ warn(message, meta) {
39
+ this.log('warn', message, meta);
40
+ }
41
+ error(message, meta) {
42
+ this.log('error', message, meta);
43
+ }
44
+ /**
45
+ * Log a tool call with timing
46
+ */
47
+ toolCall(name, startTime, error) {
48
+ const durationMs = Date.now() - startTime;
49
+ if (error) {
50
+ this.error('Tool call failed', { tool: name, durationMs, error });
51
+ }
52
+ else {
53
+ this.info('Tool call completed', { tool: name, durationMs });
54
+ }
55
+ }
56
+ /**
57
+ * Log a resource read with timing
58
+ */
59
+ resourceRead(uri, startTime, error) {
60
+ const durationMs = Date.now() - startTime;
61
+ if (error) {
62
+ this.error('Resource read failed', { resource: uri, durationMs, error });
63
+ }
64
+ else {
65
+ this.info('Resource read completed', { resource: uri, durationMs });
66
+ }
67
+ }
68
+ }
69
+ exports.Logger = Logger;
70
+ /**
71
+ * Create logger from environment
72
+ */
73
+ function createLoggerFromEnv() {
74
+ const level = (process.env.VOXBURST_LOG_LEVEL || 'info');
75
+ return new Logger(level);
76
+ }
77
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/middleware/logger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAwFH,kDAGC;AAvFD,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAcF,MAAa,MAAM;IACT,QAAQ,CAAS;IAEzB,YAAY,QAAkB,MAAM;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8B;QAC1E,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE9C,MAAM,KAAK,GAAa;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,OAAO;YACP,GAAG,IAAI;SACR,CAAC;QAEF,iDAAiD;QACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,SAAiB,EAAE,KAAc;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAW,EAAE,SAAiB,EAAE,KAAc;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF;AA5DD,wBA4DC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAa,CAAC;IACrE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * In-memory rate limiter for MCP Server
3
+ * Limits requests per API key and per workspace
4
+ */
5
+ export interface RateLimitConfig {
6
+ /** Max requests per window */
7
+ maxRequests: number;
8
+ /** Window size in milliseconds */
9
+ windowMs: number;
10
+ }
11
+ export declare class RateLimiter {
12
+ private entries;
13
+ private config;
14
+ private cleanupInterval;
15
+ constructor(config?: Partial<RateLimitConfig>);
16
+ /**
17
+ * Check if a request is allowed. Returns remaining requests or throws.
18
+ */
19
+ check(key: string): {
20
+ allowed: boolean;
21
+ remaining: number;
22
+ resetAt: number;
23
+ };
24
+ private cleanup;
25
+ destroy(): void;
26
+ }
27
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAiC;gBAE5C,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAOjD;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAmC5E,OAAO,CAAC,OAAO;IASf,OAAO,IAAI,IAAI;CAIhB"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * In-memory rate limiter for MCP Server
4
+ * Limits requests per API key and per workspace
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RateLimiter = void 0;
8
+ const DEFAULT_CONFIG = {
9
+ maxRequests: 100,
10
+ windowMs: 60_000, // 1 minute
11
+ };
12
+ class RateLimiter {
13
+ entries = new Map();
14
+ config;
15
+ cleanupInterval;
16
+ constructor(config = {}) {
17
+ this.config = { ...DEFAULT_CONFIG, ...config };
18
+ // Clean up expired entries every 5 minutes
19
+ this.cleanupInterval = setInterval(() => this.cleanup(), 5 * 60_000);
20
+ this.cleanupInterval.unref();
21
+ }
22
+ /**
23
+ * Check if a request is allowed. Returns remaining requests or throws.
24
+ */
25
+ check(key) {
26
+ const now = Date.now();
27
+ const entry = this.entries.get(key);
28
+ if (!entry || now >= entry.resetAt) {
29
+ // New window
30
+ const newEntry = {
31
+ count: 1,
32
+ resetAt: now + this.config.windowMs,
33
+ };
34
+ this.entries.set(key, newEntry);
35
+ return {
36
+ allowed: true,
37
+ remaining: this.config.maxRequests - 1,
38
+ resetAt: newEntry.resetAt,
39
+ };
40
+ }
41
+ entry.count++;
42
+ if (entry.count > this.config.maxRequests) {
43
+ return {
44
+ allowed: false,
45
+ remaining: 0,
46
+ resetAt: entry.resetAt,
47
+ };
48
+ }
49
+ return {
50
+ allowed: true,
51
+ remaining: this.config.maxRequests - entry.count,
52
+ resetAt: entry.resetAt,
53
+ };
54
+ }
55
+ cleanup() {
56
+ const now = Date.now();
57
+ for (const [key, entry] of this.entries) {
58
+ if (now >= entry.resetAt) {
59
+ this.entries.delete(key);
60
+ }
61
+ }
62
+ }
63
+ destroy() {
64
+ clearInterval(this.cleanupInterval);
65
+ this.entries.clear();
66
+ }
67
+ }
68
+ exports.RateLimiter = RateLimiter;
69
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/middleware/rate-limiter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,MAAM,cAAc,GAAoB;IACtC,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,MAAM,EAAE,WAAW;CAC9B,CAAC;AAEF,MAAa,WAAW;IACd,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,MAAM,CAAkB;IACxB,eAAe,CAAiC;IAExD,YAAY,SAAmC,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,2CAA2C;QAC3C,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,aAAa;YACb,MAAM,QAAQ,GAAmB;gBAC/B,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;aACpC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC;gBACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK;YAChD,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AA/DD,kCA+DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxburst/mcp-server",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "MCP Server for VoxBurst - Enable AI agents to manage social media posts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -45,7 +45,7 @@
45
45
  ],
46
46
  "repository": {
47
47
  "type": "git",
48
- "url": "https://github.com/voxburst/voxburst.git",
48
+ "url": "https://github.com/fortheanprojects/voxburst.git",
49
49
  "directory": "packages/mcp-server"
50
50
  },
51
51
  "publishConfig": {