@kongyo2/mcp-request-context 1.0.2 → 1.0.3

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.
@@ -3,7 +3,6 @@ import fastifyStatic from '@fastify/static';
3
3
  import fastifyWebsocket from '@fastify/websocket';
4
4
  import fastifyCors from '@fastify/cors';
5
5
  import { join, dirname } from 'path';
6
- import { promises as fs } from 'fs';
7
6
  import { fileURLToPath } from 'url';
8
7
  import open from 'open';
9
8
  import { WebSocket } from 'ws';
@@ -12,23 +11,19 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
12
11
  export class DashboardServer {
13
12
  app;
14
13
  storage;
15
- projectPath;
16
14
  options;
15
+ ownsStorage;
17
16
  clients = new Set();
18
17
  heartbeatInterval;
19
18
  HEARTBEAT_INTERVAL_MS = 30000;
20
- constructor(projectPath, options = {}) {
21
- this.projectPath = projectPath;
19
+ constructor(options = {}) {
22
20
  this.options = options;
23
- this.storage = new ContextStorage(projectPath);
21
+ // 外部からストレージが渡された場合はそれを使用、なければ新規作成
22
+ this.storage = options.storage ?? new ContextStorage();
23
+ this.ownsStorage = !options.storage;
24
24
  this.app = fastify({ logger: false });
25
25
  }
26
26
  async start() {
27
- // Initialize storage
28
- const initResult = await this.storage.start();
29
- if (initResult.isErr()) {
30
- throw new Error(`Failed to initialize storage: ${initResult.error.message}`);
31
- }
32
27
  // Setup storage event listeners
33
28
  this.setupStorageEvents();
34
29
  // Register plugins
@@ -68,14 +63,12 @@ export class DashboardServer {
68
63
  await this.app.listen({ port, host: '127.0.0.1' });
69
64
  // Start heartbeat
70
65
  this.startHeartbeat();
71
- // Save session info
72
66
  const dashboardUrl = `http://localhost:${port}`;
73
- await this.saveSession(dashboardUrl, port);
74
67
  // Open browser if requested
75
68
  if (this.options.autoOpen) {
76
69
  await open(dashboardUrl);
77
70
  }
78
- console.log(`Dashboard running at: ${dashboardUrl}`);
71
+ console.error(`Dashboard running at: ${dashboardUrl}`);
79
72
  return dashboardUrl;
80
73
  }
81
74
  setupStorageEvents() {
@@ -100,27 +93,23 @@ export class DashboardServer {
100
93
  timestamp: new Date().toISOString()
101
94
  });
102
95
  });
103
- this.storage.on('change', async () => {
104
- const result = await this.storage.getAllRequests();
105
- if (result.isOk()) {
106
- this.broadcast({
107
- type: 'request-updated',
108
- data: result.value,
109
- timestamp: new Date().toISOString()
110
- });
111
- }
96
+ this.storage.on('request-updated', () => {
97
+ const requests = this.storage.getAllRequests();
98
+ this.broadcast({
99
+ type: 'request-updated',
100
+ data: requests,
101
+ timestamp: new Date().toISOString()
102
+ });
112
103
  });
113
104
  }
114
- async sendInitialData(socket) {
115
- const result = await this.storage.getAllRequests();
116
- if (result.isOk()) {
117
- const message = {
118
- type: 'initial',
119
- data: result.value,
120
- timestamp: new Date().toISOString()
121
- };
122
- socket.send(JSON.stringify(message));
123
- }
105
+ sendInitialData(socket) {
106
+ const requests = this.storage.getAllRequests();
107
+ const message = {
108
+ type: 'initial',
109
+ data: requests,
110
+ timestamp: new Date().toISOString()
111
+ };
112
+ socket.send(JSON.stringify(message));
124
113
  }
125
114
  registerApiRoutes() {
126
115
  // Health check
@@ -128,24 +117,16 @@ export class DashboardServer {
128
117
  return { status: 'ok', timestamp: new Date().toISOString() };
129
118
  });
130
119
  // Get all requests
131
- this.app.get('/api/requests', async (_, reply) => {
132
- const result = await this.storage.getAllRequests();
133
- if (result.isErr()) {
134
- return reply.code(500).send({ error: result.error.message });
135
- }
136
- return result.value;
120
+ this.app.get('/api/requests', async () => {
121
+ return this.storage.getAllRequests();
137
122
  });
138
123
  // Get pending requests
139
- this.app.get('/api/requests/pending', async (_, reply) => {
140
- const result = await this.storage.getPendingRequests();
141
- if (result.isErr()) {
142
- return reply.code(500).send({ error: result.error.message });
143
- }
144
- return result.value;
124
+ this.app.get('/api/requests/pending', async () => {
125
+ return this.storage.getPendingRequests();
145
126
  });
146
127
  // Get single request
147
128
  this.app.get('/api/requests/:id', async (request, reply) => {
148
- const result = await this.storage.getRequest(request.params.id);
129
+ const result = this.storage.getRequest(request.params.id);
149
130
  if (result.isErr()) {
150
131
  const code = result.error.code === 'NOT_FOUND' ? 404 : 500;
151
132
  return reply.code(code).send({ error: result.error.message });
@@ -159,7 +140,7 @@ export class DashboardServer {
159
140
  if (!response || typeof response !== 'string') {
160
141
  return reply.code(400).send({ error: 'Response is required' });
161
142
  }
162
- const result = await this.storage.answerRequest({
143
+ const result = this.storage.answerRequest({
163
144
  requestId: id,
164
145
  response
165
146
  });
@@ -171,7 +152,7 @@ export class DashboardServer {
171
152
  });
172
153
  // Cancel a request
173
154
  this.app.post('/api/requests/:id/cancel', async (request, reply) => {
174
- const result = await this.storage.cancelRequest(request.params.id);
155
+ const result = this.storage.cancelRequest(request.params.id);
175
156
  if (result.isErr()) {
176
157
  const code = result.error.code === 'NOT_FOUND' ? 404 : 500;
177
158
  return reply.code(code).send({ error: result.error.message });
@@ -180,20 +161,13 @@ export class DashboardServer {
180
161
  });
181
162
  // Delete a request
182
163
  this.app.delete('/api/requests/:id', async (request, reply) => {
183
- const result = await this.storage.deleteRequest(request.params.id);
164
+ const result = this.storage.deleteRequest(request.params.id);
184
165
  if (result.isErr()) {
185
166
  const code = result.error.code === 'NOT_FOUND' ? 404 : 500;
186
167
  return reply.code(code).send({ error: result.error.message });
187
168
  }
188
169
  return { success: true };
189
170
  });
190
- // Project info
191
- this.app.get('/api/project', async () => {
192
- return {
193
- projectPath: this.projectPath,
194
- storagePath: this.storage.getStoragePath()
195
- };
196
- });
197
171
  }
198
172
  broadcast(message) {
199
173
  const messageStr = JSON.stringify(message);
@@ -222,22 +196,6 @@ export class DashboardServer {
222
196
  }
223
197
  }, this.HEARTBEAT_INTERVAL_MS);
224
198
  }
225
- async saveSession(url, port) {
226
- const sessionPath = join(this.projectPath, '.mcp-request-context', 'dashboard-session.json');
227
- const session = {
228
- url,
229
- port,
230
- pid: process.pid,
231
- startedAt: new Date().toISOString()
232
- };
233
- try {
234
- await fs.mkdir(dirname(sessionPath), { recursive: true });
235
- await fs.writeFile(sessionPath, JSON.stringify(session, null, 2), 'utf-8');
236
- }
237
- catch (error) {
238
- console.error('Failed to save session:', error);
239
- }
240
- }
241
199
  async stop() {
242
200
  if (this.heartbeatInterval) {
243
201
  clearInterval(this.heartbeatInterval);
@@ -251,16 +209,11 @@ export class DashboardServer {
251
209
  }
252
210
  }
253
211
  this.clients.clear();
254
- await this.storage.stop();
255
- await this.app.close();
256
- // Remove session file
257
- const sessionPath = join(this.projectPath, '.mcp-request-context', 'dashboard-session.json');
258
- try {
259
- await fs.unlink(sessionPath);
260
- }
261
- catch {
262
- // Ignore
212
+ // 自分が作成したストレージのみ停止
213
+ if (this.ownsStorage) {
214
+ this.storage.stop();
263
215
  }
216
+ await this.app.close();
264
217
  }
265
218
  getStorage() {
266
219
  return this.storage;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAA4B,MAAM,SAAS,CAAC;AACnD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAY1D,MAAM,OAAO,eAAe;IAClB,GAAG,CAAkB;IACrB,OAAO,CAAiB;IACxB,WAAW,CAAS;IACpB,OAAO,CAAmB;IAC1B,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,iBAAiB,CAAkB;IAC1B,qBAAqB,GAAG,KAAK,CAAC;IAE/C,YAAY,WAAmB,EAAE,UAA4B,EAAE;QAC7D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,qBAAqB;QACrB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,mBAAmB;QACnB,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;SAC1C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE;YACrC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC/B,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAE1C,qBAAqB;QACrB,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;gBACjD,MAAM,UAAU,GAAwB;oBACtC,MAAM,EAAE,MAA8B;oBACtC,OAAO,EAAE,IAAI;iBACd,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAE5B,MAA+B,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;oBAC/C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,oBAAoB;gBACpB,IAAI,CAAC,eAAe,CAAC,MAA8B,CAAC,CAAC;gBAErD,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClC,CAAC,CAAC;gBAED,MAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,MAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,eAAe;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACvC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAEnD,kBAAkB;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,oBAAoB;QACpB,MAAM,YAAY,GAAG,oBAAoB,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAE3C,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QACrD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,OAAuB,EAAE,EAAE;YAC7D,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,OAAuB,EAAE,EAAE;YAC9D,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,OAAuB,EAAE,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,MAAM,CAAC,KAAK;oBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,MAAiB;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,OAAO,GAAc;gBACzB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACvD,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAA6B,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACrF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAGV,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACtD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAElC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC9C,SAAS,EAAE,EAAE;gBACb,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAA6B,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC7F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,GAAG,CAAC,MAAM,CAA6B,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACxF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YACtC,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;aAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,OAAkB;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACpD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxB,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChC,SAAS;gBACX,CAAC;gBACD,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC3B,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,IAAY;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAqB;YAChC,GAAG;YACH,IAAI;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAEvB,sBAAsB;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,20 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { resolve } from 'path';
3
2
  import { RequestContextMCPServer } from './server.js';
4
- import { DashboardServer } from './dashboard/server.js';
5
3
  function parseArgs() {
6
4
  const args = process.argv.slice(2);
7
5
  const result = {
8
- projectPath: process.cwd(),
9
- dashboard: false,
10
- open: true
6
+ noOpen: false
11
7
  };
12
8
  for (let i = 0; i < args.length; i++) {
13
9
  const arg = args[i] ?? '';
14
- if (arg === '--dashboard' || arg === '-d') {
15
- result.dashboard = true;
16
- }
17
- else if (arg === '--port' || arg === '-p') {
10
+ if (arg === '--port' || arg === '-p') {
18
11
  const nextArg = args[i + 1] ?? '';
19
12
  if (nextArg && !nextArg.startsWith('-')) {
20
13
  result.port = parseInt(nextArg, 10);
@@ -22,15 +15,12 @@ function parseArgs() {
22
15
  }
23
16
  }
24
17
  else if (arg === '--no-open') {
25
- result.open = false;
18
+ result.noOpen = true;
26
19
  }
27
20
  else if (arg === '--help' || arg === '-h') {
28
21
  printHelp();
29
22
  process.exit(0);
30
23
  }
31
- else if (arg && !arg.startsWith('-')) {
32
- result.projectPath = resolve(arg);
33
- }
34
24
  }
35
25
  return result;
36
26
  }
@@ -39,26 +29,19 @@ function printHelp() {
39
29
  MCP Request Context - LLM agents request context from humans
40
30
 
41
31
  Usage:
42
- mcp-request-context [project-path] [options]
32
+ mcp-request-context [options]
43
33
 
44
34
  Options:
45
- --dashboard, -d Start the dashboard server instead of MCP server
46
35
  --port, -p <port> Dashboard port (default: 5100)
47
36
  --no-open Don't auto-open browser for dashboard
48
37
  --help, -h Show this help message
49
38
 
50
39
  Examples:
51
- # Start MCP server for current directory
40
+ # Start MCP server with integrated dashboard (browser auto-opens)
52
41
  mcp-request-context
53
42
 
54
- # Start MCP server for specific project
55
- mcp-request-context /path/to/project
56
-
57
- # Start dashboard server
58
- mcp-request-context --dashboard
59
-
60
- # Start dashboard on custom port without auto-opening browser
61
- mcp-request-context --dashboard --port 5200 --no-open
43
+ # Start on custom port without auto-opening browser
44
+ mcp-request-context --port 5200 --no-open
62
45
 
63
46
  MCP Configuration:
64
47
  Add to your MCP settings:
@@ -66,7 +49,7 @@ MCP Configuration:
66
49
  "mcpServers": {
67
50
  "request-context": {
68
51
  "command": "npx",
69
- "args": ["-y", "mcp-request-context", "/path/to/project"]
52
+ "args": ["-y", "@kongyo2/mcp-request-context"]
70
53
  }
71
54
  }
72
55
  }
@@ -74,39 +57,24 @@ MCP Configuration:
74
57
  }
75
58
  async function main() {
76
59
  const args = parseArgs();
77
- if (args.dashboard) {
78
- // Start dashboard server
79
- const dashboard = new DashboardServer(args.projectPath, {
80
- port: args.port ?? 5100,
81
- autoOpen: args.open
82
- });
83
- const handleShutdown = async () => {
84
- console.log('\nShutting down dashboard...');
85
- await dashboard.stop();
86
- process.exit(0);
87
- };
88
- process.on('SIGINT', handleShutdown);
89
- process.on('SIGTERM', handleShutdown);
90
- try {
91
- const url = await dashboard.start();
92
- console.log(`\nDashboard running at: ${url}`);
93
- console.log('Press Ctrl+C to stop\n');
94
- }
95
- catch (error) {
96
- console.error('Failed to start dashboard:', error);
97
- process.exit(1);
98
- }
60
+ // MCP + Dashboard 統合サーバーを起動
61
+ const server = new RequestContextMCPServer({
62
+ port: args.port,
63
+ autoOpen: !args.noOpen // デフォルトでブラウザを開く
64
+ });
65
+ const handleShutdown = async () => {
66
+ console.error('\nShutting down...');
67
+ await server.stop();
68
+ process.exit(0);
69
+ };
70
+ process.on('SIGINT', handleShutdown);
71
+ process.on('SIGTERM', handleShutdown);
72
+ try {
73
+ await server.initialize();
99
74
  }
100
- else {
101
- // Start MCP server
102
- const server = new RequestContextMCPServer(args.projectPath);
103
- try {
104
- await server.initialize();
105
- }
106
- catch (error) {
107
- console.error('Failed to start MCP server:', error);
108
- process.exit(1);
109
- }
75
+ catch (error) {
76
+ console.error('Failed to start server:', error);
77
+ process.exit(1);
110
78
  }
111
79
  }
112
80
  main().catch((error) => {
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":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAOtD,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAY;QACtB,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACpC,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bb,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IAEzB,4BAA4B;IAC5B,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;QACzC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAE,gBAAgB;KACzC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,13 +1,18 @@
1
1
  import { ContextStorage } from './core/storage.js';
2
+ export interface MCPServerOptions {
3
+ port?: number;
4
+ autoOpen?: boolean;
5
+ }
2
6
  export declare class RequestContextMCPServer {
3
7
  private server;
4
8
  private storage;
5
- private projectPath;
9
+ private dashboard;
6
10
  private dashboardUrl?;
7
- constructor(projectPath: string);
11
+ constructor(options?: MCPServerOptions);
8
12
  initialize(): Promise<void>;
9
- private registerTools;
13
+ private setupHandlers;
10
14
  stop(): Promise<void>;
11
15
  getStorage(): ContextStorage;
16
+ getDashboardUrl(): string | undefined;
12
17
  }
13
18
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA+BnD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,WAAW,EAAE,MAAM;IAsBzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DjC,OAAO,CAAC,aAAa;IAwDf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,UAAU,IAAI,cAAc;CAG7B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,OAAO,GAAE,gBAAqB;IA2CpC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+CjC,OAAO,CAAC,aAAa;IAqBf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,UAAU,IAAI,cAAc;IAI5B,eAAe,IAAI,MAAM,GAAG,SAAS;CAGtC"}
package/dist/server.js CHANGED
@@ -1,8 +1,9 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
3
4
  import { ContextStorage } from './core/storage.js';
4
- import { toMCPResponse } from './core/types.js';
5
- import { RequestContextInputSchema, REQUEST_CONTEXT_TOOL_NAME, REQUEST_CONTEXT_TOOL_TITLE, REQUEST_CONTEXT_TOOL_DESCRIPTION, REQUEST_CONTEXT_ANNOTATIONS, requestContextHandler, GetContextResponseInputSchema, GET_CONTEXT_RESPONSE_TOOL_NAME, GET_CONTEXT_RESPONSE_TOOL_TITLE, GET_CONTEXT_RESPONSE_TOOL_DESCRIPTION, GET_CONTEXT_RESPONSE_ANNOTATIONS, getContextResponseHandler } from './tools/index.js';
5
+ import { registerTools, handleToolCall } from './tools/index.js';
6
+ import { DashboardServer } from './dashboard/server.js';
6
7
  import { readFileSync, existsSync } from 'fs';
7
8
  import { join, dirname } from 'path';
8
9
  import { fileURLToPath } from 'url';
@@ -10,11 +11,17 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
10
11
  export class RequestContextMCPServer {
11
12
  server;
12
13
  storage;
13
- projectPath;
14
+ dashboard;
14
15
  dashboardUrl;
15
- constructor(projectPath) {
16
- this.projectPath = projectPath;
17
- this.storage = new ContextStorage(projectPath);
16
+ constructor(options = {}) {
17
+ // 共有ストレージを作成
18
+ this.storage = new ContextStorage();
19
+ // ダッシュボードを同じストレージで初期化
20
+ this.dashboard = new DashboardServer({
21
+ storage: this.storage,
22
+ port: options.port ?? 5100,
23
+ autoOpen: options.autoOpen ?? true // デフォルトでブラウザを開く
24
+ });
18
25
  // Get version from package.json
19
26
  let version = '1.0.0';
20
27
  try {
@@ -27,43 +34,49 @@ export class RequestContextMCPServer {
27
34
  catch {
28
35
  // Use default version
29
36
  }
30
- this.server = new McpServer({
37
+ // Get all registered tools
38
+ const tools = registerTools();
39
+ // Create tools capability object with each tool name
40
+ const toolsCapability = tools.reduce((acc, tool) => {
41
+ acc[tool.name] = {};
42
+ return acc;
43
+ }, {});
44
+ this.server = new Server({
31
45
  name: 'mcp-request-context',
32
46
  version
47
+ }, {
48
+ capabilities: {
49
+ tools: toolsCapability
50
+ }
33
51
  });
34
52
  }
35
53
  async initialize() {
36
- // Initialize storage
37
- const initResult = await this.storage.initialize();
38
- if (initResult.isErr()) {
39
- throw new Error(`Failed to initialize storage: ${initResult.error.message}`);
40
- }
41
- // Start storage watcher
42
- const startResult = await this.storage.start();
43
- if (startResult.isErr()) {
44
- throw new Error(`Failed to start storage: ${startResult.error.message}`);
45
- }
46
- // Try to get dashboard URL from session file
54
+ // ダッシュボードを先に起動
47
55
  try {
48
- const sessionPath = join(this.projectPath, '.mcp-request-context', 'dashboard-session.json');
49
- if (existsSync(sessionPath)) {
50
- const sessionData = JSON.parse(readFileSync(sessionPath, 'utf-8'));
51
- this.dashboardUrl = sessionData.url;
52
- }
56
+ this.dashboardUrl = await this.dashboard.start();
57
+ console.error(`Dashboard started at: ${this.dashboardUrl}`);
53
58
  }
54
- catch {
55
- // Dashboard not running
59
+ catch (error) {
60
+ console.error('Failed to start dashboard:', error);
61
+ throw error;
56
62
  }
57
- // Register tools
58
- this.registerTools();
63
+ // Create context for tools
64
+ const context = {
65
+ projectPath: process.cwd(),
66
+ storage: this.storage,
67
+ dashboardUrl: this.dashboardUrl
68
+ };
69
+ // Register handlers
70
+ this.setupHandlers(context);
59
71
  // Connect to stdio transport
60
72
  const transport = new StdioServerTransport();
61
- await this.server.connect(transport);
62
- // Handle transport close
73
+ // Handle client disconnection
63
74
  transport.onclose = async () => {
64
75
  await this.stop();
65
76
  process.exit(0);
66
77
  };
78
+ await this.server.connect(transport);
79
+ // Monitor stdin for client disconnection
67
80
  process.stdin.on('end', async () => {
68
81
  await this.stop();
69
82
  process.exit(0);
@@ -73,54 +86,29 @@ export class RequestContextMCPServer {
73
86
  await this.stop();
74
87
  process.exit(1);
75
88
  });
76
- console.error(`MCP Request Context server initialized for: ${this.projectPath}`);
77
- if (this.dashboardUrl) {
78
- console.error(`Dashboard available at: ${this.dashboardUrl}`);
79
- }
89
+ console.error(`MCP Request Context server initialized`);
90
+ console.error(`Dashboard URL: ${this.dashboardUrl}`);
80
91
  }
81
- registerTools() {
82
- // Register request_context tool
83
- this.server.registerTool(REQUEST_CONTEXT_TOOL_NAME, {
84
- title: REQUEST_CONTEXT_TOOL_TITLE,
85
- description: REQUEST_CONTEXT_TOOL_DESCRIPTION,
86
- inputSchema: RequestContextInputSchema,
87
- annotations: REQUEST_CONTEXT_ANNOTATIONS
88
- }, async (args) => {
92
+ setupHandlers(context) {
93
+ // Tool list handler
94
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
95
+ tools: registerTools()
96
+ }));
97
+ // Tool call handler
98
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
89
99
  try {
90
- return await requestContextHandler(args, this.storage, this.dashboardUrl);
100
+ return await handleToolCall(request.params.name, request.params.arguments || {}, context);
91
101
  }
92
102
  catch (error) {
93
103
  const message = error instanceof Error ? error.message : String(error);
94
- const response = {
95
- success: false,
96
- message: `Tool execution failed: ${message}`
97
- };
98
- return toMCPResponse(response, true);
99
- }
100
- });
101
- // Register get_context_response tool
102
- this.server.registerTool(GET_CONTEXT_RESPONSE_TOOL_NAME, {
103
- title: GET_CONTEXT_RESPONSE_TOOL_TITLE,
104
- description: GET_CONTEXT_RESPONSE_TOOL_DESCRIPTION,
105
- inputSchema: GetContextResponseInputSchema,
106
- annotations: GET_CONTEXT_RESPONSE_ANNOTATIONS
107
- }, async (args) => {
108
- try {
109
- return await getContextResponseHandler(args, this.storage, this.dashboardUrl);
110
- }
111
- catch (error) {
112
- const message = error instanceof Error ? error.message : String(error);
113
- const response = {
114
- success: false,
115
- message: `Tool execution failed: ${message}`
116
- };
117
- return toMCPResponse(response, true);
104
+ throw new McpError(ErrorCode.InternalError, message);
118
105
  }
119
106
  });
120
107
  }
121
108
  async stop() {
122
109
  try {
123
- await this.storage.stop();
110
+ await this.dashboard.stop();
111
+ this.storage.stop();
124
112
  await this.server.close();
125
113
  }
126
114
  catch (error) {
@@ -130,5 +118,8 @@ export class RequestContextMCPServer {
130
118
  getStorage() {
131
119
  return this.storage;
132
120
  }
121
+ getDashboardUrl() {
122
+ return this.dashboardUrl;
123
+ }
133
124
  }
134
125
  //# sourceMappingURL=server.js.map
@@ -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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAO1D,MAAM,OAAO,uBAAuB;IAC1B,MAAM,CAAS;IACf,OAAO,CAAiB;IACxB,SAAS,CAAkB;IAC3B,YAAY,CAAU;IAE9B,YAAY,UAA4B,EAAE;QAExC,aAAa;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QAEpC,sBAAsB;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAE,gBAAgB;SACrD,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC9D,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,2BAA2B;QAC3B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAE9B,qDAAqD;QACrD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA4B,CAAC,CAAC;QAEjC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,IAAI,EAAE,qBAAqB;YAC3B,OAAO;SACR,EAAE;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,eAAe;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,eAAe;QACf,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAgB;YAC3B,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;QAEF,oBAAoB;QACpB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,8BAA8B;QAC9B,SAAS,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAErC,yCAAyC;QACzC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IAEO,aAAa,CAAC,OAAoB;QACxC,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,aAAa,EAAE;SACvB,CAAC,CAAC,CAAC;QAEJ,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,IAAI,CAAC;gBACH,OAAO,MAAM,cAAc,CACzB,OAAO,CAAC,MAAM,CAAC,IAAI,EACnB,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAC9B,OAAO,CACR,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}