index.ts•5.99 kB
#!/usr/bin/env node
/**
* Enhanced Filesystem Security MCP Server
* 完全版: Phase 1-3 全機能統合(49ツール対応)
*/
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ErrorCode,
ListToolsRequestSchema,
McpError,
} from '@modelcontextprotocol/sdk/types.js';
// Phase 1: セキュリティ機能(実在するモジュールのみ)
import { FileEncryption } from './security/encryption.js';
import { FileIntegrity } from './security/integrity.js';
// Phase 3: 高度機能(実在するモジュールのみ)
import { IntelligentClassifier } from './classification/classifier.js';
import { PermissionManager } from './permissions/permission-manager.js';
import { AdvancedSearchEngine } from './search/advanced-search.js';
import { VersionManager } from './versioning/version-manager.js';
// 設定ファイル
import { ALL_TOOLS } from './config/tool-definitions.js';
import { ToolHandlers } from './config/tool-handlers.js';
import { logger } from './utils/logger.js';
class EnhancedFilesystemSecurityServer {
private server: Server;
// Phase 1: セキュリティ機能(実装済み)
private encryption: FileEncryption;
private integrity: FileIntegrity;
// Phase 3: 高度機能(実装済み)
private versionManager: VersionManager;
private classifier: IntelligentClassifier;
private searchEngine: AdvancedSearchEngine;
private permissionManager: PermissionManager;
// ツールハンドラー
private toolHandlers: ToolHandlers;
constructor() {
this.server = new Server(
{
name: 'enhanced-filesystem-security',
version: '3.0.0',
},
{
capabilities: {
tools: {},
},
}
);
// 実装済みインスタンス初期化
this.encryption = new FileEncryption();
this.integrity = new FileIntegrity();
this.versionManager = new VersionManager();
this.classifier = new IntelligentClassifier();
this.searchEngine = new AdvancedSearchEngine();
this.permissionManager = new PermissionManager();
// ツールハンドラー初期化(実装済み機能のみ)
this.toolHandlers = new ToolHandlers({
// Phase 1: セキュリティ機能
encryption: this.encryption,
integrity: this.integrity,
secureOps: null, // 未実装
// Phase 2: 実用機能(全て未実装)
compression: null,
duplicateDetector: null,
fileWatcher: null,
syncManager: null,
// Phase 3: 高度機能
versionManager: this.versionManager,
classifier: this.classifier,
searchEngine: this.searchEngine,
permissionManager: this.permissionManager,
});
this.setupToolHandlers();
// エラーハンドリング
this.server.onerror = (error) => {
logger.error('MCP Server Error', { error });
console.error('[MCP Error]', error);
};
process.on('SIGINT', async () => {
logger.info('Enhanced Filesystem Security Server を終了しています...');
await this.server.close();
process.exit(0);
});
}
private setupToolHandlers() {
// 全ツール定義を登録
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: ALL_TOOLS
}));
// ツール実行ハンドラー
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
try {
const { name, arguments: args } = request.params;
logger.info(`ツール実行開始: ${name}`, { arguments: args });
// 統合ハンドラーを使用
const result = await this.toolHandlers.handleToolCall(name, args);
return this.createResponse(result);
} catch (error) {
logger.error(`ツール実行エラー: ${request.params.name}`, { error });
if (error instanceof McpError) {
throw error;
}
throw new McpError(
ErrorCode.InternalError,
`ツール実行中にエラーが発生しました: ${error instanceof Error ? error.message : String(error)}`
);
}
});
}
/**
* レスポンス作成ヘルパー
*/
private createResponse(result: any) {
if (result.success) {
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: true,
message: result.message,
data: result.data,
timestamp: result.timestamp
}, null, 2)
}
]
};
} else {
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: false,
message: result.message,
error: result.error?.message || 'Unknown error',
timestamp: result.timestamp
}, null, 2)
}
],
isError: true
};
}
}
/**
* サーバー開始
*/
async run() {
const transport = new StdioServerTransport();
await this.server.connect(transport);
logger.info('Enhanced Filesystem Security MCP Server が開始されました');
logger.info('実装済みツール: Phase 1 (9ツール) + Phase 3 (21ツール) = 30ツール');
logger.info('Phase 2の19ツールは今後の実装予定です');
// 実装済みツール分類の内訳
logger.info('実装済み - セキュリティ機能: 暗号化(4), 整合性(5)');
logger.info('実装済み - 高度機能: バージョン管理(6), 分類(5), 検索(6), 権限管理(6)');
logger.info('未実装 - 実用機能: 圧縮(4), 重複検出(4), 監視(6), 同期(5)');
}
}
const server = new EnhancedFilesystemSecurityServer();
server.run().catch((error) => {
logger.error('サーバー開始エラー', { error });
console.error('Failed to run server:', error);
process.exit(1);
});