@search-docs/mcp-server 1.0.13 → 1.0.15
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/__tests__/helpers/test-setup.d.ts +33 -0
- package/dist/__tests__/helpers/test-setup.d.ts.map +1 -0
- package/dist/__tests__/helpers/test-setup.js +106 -0
- package/dist/__tests__/helpers/test-setup.js.map +1 -0
- package/dist/__tests__/helpers/types.d.ts +22 -0
- package/dist/__tests__/helpers/types.d.ts.map +1 -0
- package/dist/__tests__/helpers/types.js +5 -0
- package/dist/__tests__/helpers/types.js.map +1 -0
- package/dist/__tests__/mcp-server-basic.test.d.ts +16 -0
- package/dist/__tests__/mcp-server-basic.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-server-basic.test.js +113 -0
- package/dist/__tests__/mcp-server-basic.test.js.map +1 -0
- package/dist/__tests__/server-lifecycle.test.d.ts +15 -0
- package/dist/__tests__/server-lifecycle.test.d.ts.map +1 -0
- package/dist/__tests__/server-lifecycle.test.js +171 -0
- package/dist/__tests__/server-lifecycle.test.js.map +1 -0
- package/dist/__tests__/server-state-transition-v2.test.d.ts +7 -0
- package/dist/__tests__/server-state-transition-v2.test.d.ts.map +1 -0
- package/dist/__tests__/server-state-transition-v2.test.js +182 -0
- package/dist/__tests__/server-state-transition-v2.test.js.map +1 -0
- package/dist/__tests__/server-state.test.d.ts +11 -0
- package/dist/__tests__/server-state.test.d.ts.map +1 -0
- package/dist/__tests__/server-state.test.js +123 -0
- package/dist/__tests__/server-state.test.js.map +1 -0
- package/dist/__tests__/state.test.d.ts +5 -0
- package/dist/__tests__/state.test.d.ts.map +1 -0
- package/dist/__tests__/state.test.js +114 -0
- package/dist/__tests__/state.test.js.map +1 -0
- package/dist/server-manager.d.ts +1 -1
- package/dist/server-manager.d.ts.map +1 -1
- package/dist/server-manager.js +68 -15
- package/dist/server-manager.js.map +1 -1
- package/dist/server-state-transition.test.d.ts +9 -0
- package/dist/server-state-transition.test.d.ts.map +1 -0
- package/dist/server-state-transition.test.js +267 -0
- package/dist/server-state-transition.test.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +91 -243
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +32 -1
- package/dist/server.test.js.map +1 -1
- package/dist/state.d.ts +42 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +96 -0
- package/dist/state.js.map +1 -0
- package/dist/tools/__tests__/index-status.test.d.ts +5 -0
- package/dist/tools/__tests__/index-status.test.d.ts.map +1 -0
- package/dist/tools/__tests__/index-status.test.js +123 -0
- package/dist/tools/__tests__/index-status.test.js.map +1 -0
- package/dist/tools/get-document.d.ts +10 -0
- package/dist/tools/get-document.d.ts.map +1 -0
- package/dist/tools/get-document.js +73 -0
- package/dist/tools/get-document.js.map +1 -0
- package/dist/tools/index-status.d.ts +10 -0
- package/dist/tools/index-status.d.ts.map +1 -0
- package/dist/tools/index-status.js +51 -0
- package/dist/tools/index-status.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/init.d.ts +10 -0
- package/dist/tools/init.d.ts.map +1 -0
- package/dist/tools/init.js +71 -0
- package/dist/tools/init.js.map +1 -0
- package/dist/tools/search.d.ts +10 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +92 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/server-control.d.ts +14 -0
- package/dist/tools/server-control.d.ts.map +1 -0
- package/dist/tools/server-control.js +121 -0
- package/dist/tools/server-control.js.map +1 -0
- package/dist/tools/system-status.d.ts +10 -0
- package/dist/tools/system-status.d.ts.map +1 -0
- package/dist/tools/system-status.js +68 -0
- package/dist/tools/system-status.js.map +1 -0
- package/dist/tools/types.d.ts +17 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +36 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -3
package/dist/server.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* search-docs MCP Server
|
|
4
|
+
* Claude Code統合用のMCPサーバ
|
|
5
|
+
*/
|
|
2
6
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
7
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
-
import { z } from 'zod';
|
|
5
8
|
import { Command } from 'commander';
|
|
6
|
-
import {
|
|
7
|
-
import { ConfigLoader } from '@search-docs/types';
|
|
9
|
+
import { createRequire } from 'module';
|
|
8
10
|
import * as path from 'path';
|
|
11
|
+
import * as fs from 'fs/promises';
|
|
12
|
+
import { detectSystemState } from './state.js';
|
|
9
13
|
import { ServerManager } from './server-manager.js';
|
|
10
|
-
import {
|
|
14
|
+
import { registerInitTool, registerServerStartTool, registerServerStopTool, registerSystemStatusTool, registerSearchTool, registerGetDocumentTool, registerIndexStatusTool, } from './tools/index.js';
|
|
11
15
|
// package.jsonからバージョンを読み込む
|
|
12
16
|
const require = createRequire(import.meta.url);
|
|
13
17
|
const packageJson = require('../package.json');
|
|
@@ -23,31 +27,16 @@ function debugLog(message) {
|
|
|
23
27
|
if (isDebugMode) {
|
|
24
28
|
console.error(`[mcp-server] ${message}`);
|
|
25
29
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
'H3 (項)',
|
|
36
|
-
];
|
|
37
|
-
return labels[depth] || `depth-${depth}`;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* コンテンツのプレビューを取得(行ベース)
|
|
41
|
-
*/
|
|
42
|
-
function getPreviewContent(content, maxLines = 5) {
|
|
43
|
-
const lines = content.split('\n');
|
|
44
|
-
if (lines.length <= maxLines) {
|
|
45
|
-
return content;
|
|
30
|
+
// Always write to debug file for troubleshooting
|
|
31
|
+
try {
|
|
32
|
+
const debugFile = '/tmp/mcp-server-debug.log';
|
|
33
|
+
const timestamp = new Date().toISOString();
|
|
34
|
+
const logMessage = `[${timestamp}] [mcp-server] ${message}\n`;
|
|
35
|
+
require('fs').appendFileSync(debugFile, logMessage);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Ignore file write errors
|
|
46
39
|
}
|
|
47
|
-
const previewLines = lines.slice(0, maxLines);
|
|
48
|
-
const remaining = lines.length - maxLines;
|
|
49
|
-
previewLines.push(`... (残り${remaining}行)`);
|
|
50
|
-
return previewLines.join('\n');
|
|
51
40
|
}
|
|
52
41
|
/**
|
|
53
42
|
* コマンドライン引数を解析
|
|
@@ -72,62 +61,48 @@ async function main() {
|
|
|
72
61
|
// コマンドライン引数の解析
|
|
73
62
|
const { projectDir } = parseArgs();
|
|
74
63
|
// プロジェクトディレクトリを決定
|
|
75
|
-
// 明示的に指定されていない場合は、カレントディレクトリから設定ファイルを探索
|
|
76
64
|
const cwd = projectDir || process.cwd();
|
|
77
65
|
debugLog(`Working directory: ${cwd}`);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
debugLog(`Server URL: ${serverUrl}`);
|
|
93
|
-
// SearchDocsClientの初期化
|
|
94
|
-
const client = new SearchDocsClient({ baseUrl: serverUrl });
|
|
95
|
-
// ServerManager初期化
|
|
96
|
-
const serverManager = new ServerManager();
|
|
97
|
-
// プロセス終了時のクリーンアップ
|
|
98
|
-
process.on('SIGINT', () => {
|
|
99
|
-
debugLog('Received SIGINT, cleaning up...');
|
|
100
|
-
serverManager.cleanup();
|
|
101
|
-
process.exit(0);
|
|
102
|
-
});
|
|
103
|
-
process.on('SIGTERM', () => {
|
|
104
|
-
debugLog('Received SIGTERM, cleaning up...');
|
|
105
|
-
serverManager.cleanup();
|
|
106
|
-
process.exit(0);
|
|
107
|
-
});
|
|
108
|
-
// 接続確認
|
|
109
|
-
try {
|
|
110
|
-
await client.healthCheck();
|
|
111
|
-
debugLog('Connection to search-docs server established');
|
|
112
|
-
}
|
|
113
|
-
catch (_error) {
|
|
114
|
-
debugLog('Server is not running, attempting to start...');
|
|
66
|
+
// システム状態を判定
|
|
67
|
+
let systemState = await detectSystemState(cwd);
|
|
68
|
+
debugLog('='.repeat(60));
|
|
69
|
+
debugLog(`System state detected: ${systemState.state}`);
|
|
70
|
+
debugLog(`Project root: ${systemState.projectRoot}`);
|
|
71
|
+
debugLog(`Config exists: ${systemState.config ? 'YES' : 'NO'}`);
|
|
72
|
+
debugLog(`Config path: ${systemState.configPath || '(none)'}`);
|
|
73
|
+
// CONFIGURED_SERVER_DOWNかつインデックスが存在する場合、サーバを自動起動
|
|
74
|
+
debugLog(`Checking auto-start condition: state === CONFIGURED_SERVER_DOWN && config exists`);
|
|
75
|
+
debugLog(` - state === CONFIGURED_SERVER_DOWN: ${systemState.state === 'CONFIGURED_SERVER_DOWN'}`);
|
|
76
|
+
debugLog(` - config exists: ${!!systemState.config}`);
|
|
77
|
+
if (systemState.state === 'CONFIGURED_SERVER_DOWN' && systemState.config) {
|
|
78
|
+
const indexPath = path.join(systemState.projectRoot, systemState.config.storage.indexPath);
|
|
79
|
+
debugLog(`Index path to check: ${indexPath}`);
|
|
115
80
|
try {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
81
|
+
await fs.access(indexPath);
|
|
82
|
+
// インデックスディレクトリが存在する → 自動起動を試みる
|
|
83
|
+
debugLog('✓ Index directory exists, attempting auto-start...');
|
|
84
|
+
const serverManager = new ServerManager();
|
|
85
|
+
try {
|
|
86
|
+
debugLog(`Auto-start params: projectRoot=${systemState.projectRoot}, port=${systemState.config.server.port}, configPath=${systemState.configPath}`);
|
|
87
|
+
await serverManager.startServer(systemState.projectRoot, systemState.config.server.port, systemState.configPath);
|
|
88
|
+
// 自動起動成功、状態を再判定
|
|
89
|
+
systemState = await detectSystemState(cwd);
|
|
90
|
+
debugLog(`System state after auto-start: ${systemState.state}`);
|
|
91
|
+
}
|
|
92
|
+
catch (startError) {
|
|
93
|
+
// 自動起動失敗は致命的ではない、手動起動を促す
|
|
94
|
+
debugLog(`Auto-start failed: ${startError.message}`);
|
|
95
|
+
}
|
|
121
96
|
}
|
|
122
|
-
catch (
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
console.error('[mcp-server] Error:', startError.message);
|
|
126
|
-
console.error('[mcp-server] Please ensure @search-docs/cli is installed:');
|
|
127
|
-
console.error('[mcp-server] npm install -g @search-docs/cli');
|
|
128
|
-
throw startError;
|
|
97
|
+
catch (error) {
|
|
98
|
+
// インデックスディレクトリが存在しない → 自動起動しない
|
|
99
|
+
debugLog(`✗ Index directory does not exist, skipping auto-start: ${error.message}`);
|
|
129
100
|
}
|
|
130
101
|
}
|
|
102
|
+
else {
|
|
103
|
+
debugLog('✗ Auto-start condition not met, skipping auto-start');
|
|
104
|
+
}
|
|
105
|
+
debugLog('='.repeat(60));
|
|
131
106
|
// MCPサーバの初期化
|
|
132
107
|
const server = new McpServer({
|
|
133
108
|
name: 'search-docs',
|
|
@@ -137,175 +112,48 @@ async function main() {
|
|
|
137
112
|
tools: {},
|
|
138
113
|
},
|
|
139
114
|
});
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
resultText += `${index + 1}. ${result.documentPath} > ${heading}\n`;
|
|
178
|
-
// メタデータ(1行にまとめる)
|
|
179
|
-
const depthLabel = getDepthLabel(result.depth);
|
|
180
|
-
const sectionPath = result.sectionNumber.join('-');
|
|
181
|
-
const metaParts = [
|
|
182
|
-
`Level: ${depthLabel}`,
|
|
183
|
-
`Section: ${sectionPath}`,
|
|
184
|
-
`Line: ${result.startLine}-${result.endLine}`,
|
|
185
|
-
`Score: ${result.score.toFixed(4)}`,
|
|
186
|
-
];
|
|
187
|
-
// indexStatusが'updating'または'outdated'の場合のみ表示
|
|
188
|
-
if (result.indexStatus === 'updating' || result.indexStatus === 'outdated') {
|
|
189
|
-
metaParts.push(`Status: ${result.indexStatus}`);
|
|
190
|
-
}
|
|
191
|
-
resultText += metaParts.join(' | ') + '\n\n';
|
|
192
|
-
// コンテンツ(引用として明確に)
|
|
193
|
-
resultText += '```markdown\n';
|
|
194
|
-
const preview = getPreviewContent(result.content, previewLines);
|
|
195
|
-
resultText += preview + '\n';
|
|
196
|
-
resultText += '```\n\n';
|
|
197
|
-
// セクションID(get_documentで取得するため)
|
|
198
|
-
resultText += `(セクションID: ${result.id})\n\n`;
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
return {
|
|
202
|
-
content: [
|
|
203
|
-
{
|
|
204
|
-
type: 'text',
|
|
205
|
-
text: resultText,
|
|
206
|
-
},
|
|
207
|
-
],
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
211
|
-
throw new Error(`検索エラー: ${error.message}`);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
// get_document ツール
|
|
215
|
-
server.registerTool('get_document', {
|
|
216
|
-
description: '文書の内容を取得します。パス指定で文書全体、またはセクションIDで特定セクションを取得できます。pathとsectionIdのどちらか一方は必須です。',
|
|
217
|
-
inputSchema: {
|
|
218
|
-
path: z.string().optional().describe('文書パス(sectionIdを指定しない場合は必須)'),
|
|
219
|
-
sectionId: z.string().optional().describe('セクションID(検索結果から取得。pathを指定しない場合は必須)'),
|
|
220
|
-
},
|
|
221
|
-
}, async (args) => {
|
|
222
|
-
const { path: documentPath, sectionId } = args;
|
|
223
|
-
// どちらか一方は必須
|
|
224
|
-
if (!documentPath && !sectionId) {
|
|
225
|
-
throw new Error('pathまたはsectionIdのどちらか一方を指定してください');
|
|
226
|
-
}
|
|
227
|
-
try {
|
|
228
|
-
const response = await client.getDocument({ path: documentPath, sectionId });
|
|
229
|
-
if (!response.document && !response.section) {
|
|
230
|
-
throw new Error(`Document or section not found`);
|
|
231
|
-
}
|
|
232
|
-
let resultText = '';
|
|
233
|
-
// セクション取得の場合
|
|
234
|
-
if (sectionId && response.section) {
|
|
235
|
-
resultText += `セクション: ${response.section.heading || '(no heading)'}\n`;
|
|
236
|
-
resultText += `文書: ${response.section.documentPath}\n`;
|
|
237
|
-
const depthLabel = getDepthLabel(response.section.depth);
|
|
238
|
-
const sectionPath = response.section.sectionNumber.join('-');
|
|
239
|
-
resultText += `Level: ${depthLabel} | Section: ${sectionPath} | Line: ${response.section.startLine}-${response.section.endLine}\n\n`;
|
|
240
|
-
resultText += `内容:\n${'='.repeat(60)}\n`;
|
|
241
|
-
resultText += response.section.content;
|
|
242
|
-
resultText += `\n${'='.repeat(60)}`;
|
|
243
|
-
}
|
|
244
|
-
else if (response.document) {
|
|
245
|
-
// 文書全体取得の場合
|
|
246
|
-
resultText += `文書: ${response.document.path}\n`;
|
|
247
|
-
if (response.document.metadata.title) {
|
|
248
|
-
resultText += `タイトル: ${response.document.metadata.title}\n`;
|
|
249
|
-
}
|
|
250
|
-
resultText += `作成日: ${new Date(response.document.metadata.createdAt).toLocaleString()}\n`;
|
|
251
|
-
resultText += `更新日: ${new Date(response.document.metadata.updatedAt).toLocaleString()}\n\n`;
|
|
252
|
-
resultText += `内容:\n${'='.repeat(60)}\n`;
|
|
253
|
-
resultText += response.document.content;
|
|
254
|
-
resultText += `\n${'='.repeat(60)}`;
|
|
255
|
-
}
|
|
256
|
-
return {
|
|
257
|
-
content: [
|
|
258
|
-
{
|
|
259
|
-
type: 'text',
|
|
260
|
-
text: resultText,
|
|
261
|
-
},
|
|
262
|
-
],
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
catch (error) {
|
|
266
|
-
throw new Error(`文書取得エラー: ${error.message}`);
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
// index_status ツール
|
|
270
|
-
server.registerTool('index_status', {
|
|
271
|
-
description: 'インデックスの状態を確認します。総文書数、セクション数、Dirtyセクション数などを表示します。',
|
|
272
|
-
inputSchema: {},
|
|
273
|
-
}, async () => {
|
|
274
|
-
try {
|
|
275
|
-
const response = await client.getStatus();
|
|
276
|
-
let statusText = '📊 インデックス状態\n\n';
|
|
277
|
-
statusText += `サーバ情報:\n`;
|
|
278
|
-
statusText += ` バージョン: ${response.server.version}\n`;
|
|
279
|
-
statusText += ` 起動時間: ${(response.server.uptime / 1000).toFixed(1)}秒\n`;
|
|
280
|
-
statusText += ` PID: ${response.server.pid}\n\n`;
|
|
281
|
-
statusText += `インデックス情報:\n`;
|
|
282
|
-
statusText += ` 総文書数: ${response.index.totalDocuments}件\n`;
|
|
283
|
-
statusText += ` 総セクション数: ${response.index.totalSections}件\n`;
|
|
284
|
-
statusText += ` Dirtyセクション: ${response.index.dirtyCount}件\n`;
|
|
285
|
-
if (response.worker) {
|
|
286
|
-
statusText += `\nワーカー情報:\n`;
|
|
287
|
-
statusText += ` 実行中: ${response.worker.running ? 'Yes' : 'No'}\n`;
|
|
288
|
-
statusText += ` 処理中: ${response.worker.processing}件\n`;
|
|
289
|
-
statusText += ` キュー: ${response.worker.queue}件\n`;
|
|
290
|
-
}
|
|
291
|
-
return {
|
|
292
|
-
content: [
|
|
293
|
-
{
|
|
294
|
-
type: 'text',
|
|
295
|
-
text: statusText,
|
|
296
|
-
},
|
|
297
|
-
],
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
catch (error) {
|
|
301
|
-
throw new Error(`ステータス取得エラー: ${error.message}`);
|
|
302
|
-
}
|
|
303
|
-
});
|
|
115
|
+
// システム状態を再検出する関数
|
|
116
|
+
const refreshSystemState = async () => {
|
|
117
|
+
const newState = await detectSystemState(cwd);
|
|
118
|
+
// systemStateオブジェクトのプロパティを更新
|
|
119
|
+
Object.assign(systemState, newState);
|
|
120
|
+
debugLog(`System state refreshed: ${systemState.state}`);
|
|
121
|
+
};
|
|
122
|
+
// ツール登録コンテキスト
|
|
123
|
+
const context = { server, systemState, refreshSystemState };
|
|
124
|
+
// 状態に応じてツールを登録
|
|
125
|
+
switch (systemState.state) {
|
|
126
|
+
case 'NOT_CONFIGURED':
|
|
127
|
+
// 未設定状態: init, get_system_status のみ
|
|
128
|
+
debugLog('Registering tools for NOT_CONFIGURED state');
|
|
129
|
+
registerInitTool(context);
|
|
130
|
+
registerSystemStatusTool(context);
|
|
131
|
+
break;
|
|
132
|
+
case 'CONFIGURED_SERVER_DOWN':
|
|
133
|
+
// 設定済み・サーバ停止状態: init, server_start, server_stop, get_system_status
|
|
134
|
+
debugLog('Registering tools for CONFIGURED_SERVER_DOWN state');
|
|
135
|
+
registerInitTool(context);
|
|
136
|
+
registerServerStartTool(context);
|
|
137
|
+
registerServerStopTool(context);
|
|
138
|
+
registerSystemStatusTool(context);
|
|
139
|
+
break;
|
|
140
|
+
case 'RUNNING':
|
|
141
|
+
// 稼働中: 全ツール
|
|
142
|
+
debugLog('Registering all tools for RUNNING state');
|
|
143
|
+
registerInitTool(context);
|
|
144
|
+
registerServerStartTool(context);
|
|
145
|
+
registerServerStopTool(context);
|
|
146
|
+
registerSystemStatusTool(context);
|
|
147
|
+
registerSearchTool(context);
|
|
148
|
+
registerGetDocumentTool(context);
|
|
149
|
+
registerIndexStatusTool(context);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
304
152
|
// サーバの起動
|
|
305
153
|
const transport = new StdioServerTransport();
|
|
306
154
|
debugLog('Starting MCP server...');
|
|
307
155
|
await server.connect(transport);
|
|
308
|
-
debugLog(
|
|
156
|
+
debugLog(`MCP server started (state: ${systemState.state})`);
|
|
309
157
|
}
|
|
310
158
|
main().catch((error) => {
|
|
311
159
|
console.error('[mcp-server] Server error:', error);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.test.js
CHANGED
|
@@ -19,7 +19,19 @@ describe('search-docs MCP Server E2E Tests', () => {
|
|
|
19
19
|
});
|
|
20
20
|
// サーバーが準備完了するまで待機
|
|
21
21
|
await tester.waitUntilReady();
|
|
22
|
-
|
|
22
|
+
// search-docsサーバが起動していない場合は起動
|
|
23
|
+
// (CONFIGURED_SERVER_DOWN状態でインデックスが存在しない場合)
|
|
24
|
+
const statusResult = await tester.callTool('get_system_status', {});
|
|
25
|
+
if (statusResult.success) {
|
|
26
|
+
const content = statusResult.result?.content?.[0]?.text || '';
|
|
27
|
+
if (content.includes('サーバ停止中') || content.includes('サーバを起動してください')) {
|
|
28
|
+
// サーバを起動
|
|
29
|
+
await tester.callTool('server_start', {});
|
|
30
|
+
// 起動完了を待機
|
|
31
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, 30000); // タイムアウトを30秒に延長
|
|
23
35
|
afterEach(async () => {
|
|
24
36
|
// テスト環境をクリーンアップ
|
|
25
37
|
if (tester) {
|
|
@@ -161,5 +173,24 @@ describe('search-docs MCP Server E2E Tests', () => {
|
|
|
161
173
|
expect(result.error).toBeDefined();
|
|
162
174
|
});
|
|
163
175
|
});
|
|
176
|
+
describe('get_system_status ツール', () => {
|
|
177
|
+
test('システム状態を取得できる', async () => {
|
|
178
|
+
const result = await tester.callTool('get_system_status', {});
|
|
179
|
+
expect(result.success).toBe(true);
|
|
180
|
+
expect(result.result).toBeDefined();
|
|
181
|
+
const content = result.result?.content?.[0]?.text;
|
|
182
|
+
expect(content).toContain('search-docs システム状態');
|
|
183
|
+
expect(content).toContain('状態:');
|
|
184
|
+
});
|
|
185
|
+
test('稼働中状態の詳細情報を含む', async () => {
|
|
186
|
+
const result = await tester.callTool('get_system_status', {});
|
|
187
|
+
expect(result.success).toBe(true);
|
|
188
|
+
const content = result.result?.content?.[0]?.text;
|
|
189
|
+
// RUNNING状態の場合の情報
|
|
190
|
+
expect(content).toContain('サーバURL:');
|
|
191
|
+
expect(content).toContain('総文書数:');
|
|
192
|
+
expect(content).toContain('総セクション数:');
|
|
193
|
+
});
|
|
194
|
+
});
|
|
164
195
|
});
|
|
165
196
|
//# sourceMappingURL=server.test.js.map
|
package/dist/server.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../src/server.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACvE,OAAO,EAAE,eAAe,EAAuB,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAsB3C,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,MAA2B,CAAC;IAEhC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAEvD,gBAAgB;QAChB,MAAM,GAAG,MAAM,eAAe,CAAC;YAC7B,UAAU;YACV,IAAI,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;SACpC,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../src/server.test.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* システム状態管理
|
|
3
|
+
*/
|
|
4
|
+
import { SearchDocsClient } from '@search-docs/client';
|
|
5
|
+
import { type SearchDocsConfig } from '@search-docs/types';
|
|
6
|
+
/**
|
|
7
|
+
* システム状態の種類
|
|
8
|
+
*/
|
|
9
|
+
export type SystemState = 'NOT_CONFIGURED' | 'CONFIGURED_SERVER_DOWN' | 'RUNNING';
|
|
10
|
+
/**
|
|
11
|
+
* システム状態情報
|
|
12
|
+
*/
|
|
13
|
+
export interface SystemStateInfo {
|
|
14
|
+
/** システム状態 */
|
|
15
|
+
state: SystemState;
|
|
16
|
+
/** 設定情報(設定ファイルが存在する場合) */
|
|
17
|
+
config?: SearchDocsConfig;
|
|
18
|
+
/** 設定ファイルのパス(設定ファイルが存在する場合) */
|
|
19
|
+
configPath?: string;
|
|
20
|
+
/** プロジェクトルート */
|
|
21
|
+
projectRoot: string;
|
|
22
|
+
/** サーバURL(設定ファイルが存在する場合) */
|
|
23
|
+
serverUrl?: string;
|
|
24
|
+
/** クライアントインスタンス(サーバが稼働中の場合) */
|
|
25
|
+
client?: SearchDocsClient;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* システム状態を判定
|
|
29
|
+
*
|
|
30
|
+
* @param cwd - カレントワーキングディレクトリ
|
|
31
|
+
* @returns システム状態情報
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectSystemState(cwd: string): Promise<SystemStateInfo>;
|
|
34
|
+
/**
|
|
35
|
+
* システム状態に応じたエラーメッセージを生成
|
|
36
|
+
*
|
|
37
|
+
* @param state - システム状態
|
|
38
|
+
* @param action - 実行しようとしたアクション名
|
|
39
|
+
* @returns エラーメッセージ
|
|
40
|
+
*/
|
|
41
|
+
export declare function getStateErrorMessage(state: SystemState, action: string): string;
|
|
42
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,SAAS,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6D7E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB/E"}
|