Skip to main content
Glama
libra850
by libra850

search_files

Search files and directories within an Obsidian vault using path and pattern parameters to locate specific content.

Instructions

Obsidianボルト内のファイルとディレクトリを検索します

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchPathNo検索を開始するパス(vault相対パス、省略時はルート)
patternNo検索パターン(ファイル名の一部、省略時は全て)

Implementation Reference

  • Core implementation of the search_files tool handler. Recursively traverses directories from the specified searchPath, matches file/directory names against the pattern, collects results with relative paths and types, sorts directories first then alphabetically.
    async searchFiles(searchPath: string = '', pattern: string = ''): Promise<{ path: string; type: 'file' | 'directory' }[]> { const basePath = path.join(this.config.vaultPath, searchPath); if (!FileUtils.validatePath(this.config.vaultPath, searchPath)) { throw new Error('無効なパスです'); } const results: { path: string; type: 'file' | 'directory' }[] = []; const processDirectory = async (dirPath: string, relativePath: string = '') => { try { const entries = await fs.readdir(dirPath, { withFileTypes: true }); for (const entry of entries) { const fullPath = path.join(dirPath, entry.name); const entryRelativePath = path.join(relativePath, entry.name); if (entry.isDirectory()) { if (!pattern || entry.name.includes(pattern)) { results.push({ path: entryRelativePath, type: 'directory' }); } await processDirectory(fullPath, entryRelativePath); } else if (entry.isFile()) { if (!pattern || entry.name.includes(pattern)) { results.push({ path: entryRelativePath, type: 'file' }); } } } } catch (error) { // ディレクトリ読み込みエラーは無視 } }; await processDirectory(basePath, searchPath); return results.sort((a, b) => { if (a.type !== b.type) { return a.type === 'directory' ? -1 : 1; } return a.path.localeCompare(b.path); }); }
  • src/server.ts:146-164 (registration)
    Registration of the search_files tool in the MCP server's list_tools handler, defining the tool name, description, and input schema for parameters searchPath and pattern.
    { name: 'search_files', description: 'Obsidianボルト内のファイルとディレクトリを検索します', inputSchema: { type: 'object', properties: { searchPath: { type: 'string', description: '検索を開始するパス(vault相対パス、省略時はルート)', default: '', }, pattern: { type: 'string', description: '検索パターン(ファイル名の一部、省略時は全て)', default: '', }, }, }, },
  • Dispatch handler in the MCP server's CallToolRequestSchema that invokes the ObsidianHandler.searchFiles method with parsed arguments and formats the JSON response.
    case 'search_files': const searchResults = await this.obsidianHandler.searchFiles( (args.searchPath as string) || '', (args.pattern as string) || '' ); return { content: [ { type: 'text', text: JSON.stringify(searchResults, null, 2), }, ], };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/libra850/obsidian-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server