Skip to main content
Glama
peterparker57

everything-mcp-server

README.md
# Everything MCP Server

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)

A Model Context Protocol (MCP) server that provides instant file search capabilities using Everything's native SDK. This server integrates Everything's powerful search engine with AI tooling, enabling lightning-fast file system searches through the MCP interface.

## Features

- šŸ” **Instant File Search**: Leverage Everything's instant indexing for near-instantaneous file searches
- šŸŽÆ **Advanced Filtering**: Search by path, extension, size, date modified, and more
- šŸ”„ **Duplicate Detection**: Find duplicate files across your system
- šŸ“„ **Content Search**: Search within file contents (requires Everything content indexing)
- ⚔ **High Performance**: Direct API access through native SDK integration
- šŸ›”ļø **Read-Only**: Safe, non-destructive file system access

## Tools Provided

### 1. `search_files`
Basic file search with regex and case sensitivity options.

**Parameters:**
- `query` (string): Search query for file names
- `maxResults` (number, optional): Maximum results to return (default: 100)
- `matchCase` (boolean, optional): Enable case-sensitive search
- `matchWholeWord` (boolean, optional): Match whole words only
- `regex` (boolean, optional): Enable regular expression search

### 2. `search_files_advanced`
Advanced search with comprehensive filtering options.

**Parameters:**
- `query` (string): Search query for file names
- `path` (string, optional): Limit search to specific path
- `extension` (string, optional): Filter by file extension (e.g., 'txt', 'pdf')
- `size` (string, optional): Filter by file size (e.g., '>1mb', '<100kb', '1gb..2gb')
- `dateModified` (string, optional): Filter by date modified (e.g., 'today', 'yesterday', 'thisweek', '2024')
- `maxResults` (number, optional): Maximum results to return (default: 100)
- `matchCase` (boolean, optional): Enable case-sensitive search
- `matchWholeWord` (boolean, optional): Match whole words only
- `regex` (boolean, optional): Enable regular expression search
- `sortBy` (enum, optional): Sort results by field (name_asc, name_desc, path_asc, path_desc, size_asc, size_desc, date_asc, date_desc)

### 3. `find_duplicates`
Find duplicate files by filename.

**Parameters:**
- `filename` (string): Filename to search for duplicates
- `path` (string, optional): Limit search to specific path
- `maxResults` (number, optional): Maximum results to return (default: 50)

### 4. `search_content`
Search for text content within files.

**Parameters:**
- `content` (string): Text content to search for within files
- `fileTypes` (string, optional): Limit to specific file types (e.g., 'txt;doc;pdf')
- `path` (string, optional): Limit search to specific path
- `maxResults` (number, optional): Maximum results to return (default: 50)

## Prerequisites

1. **Everything Application**: Must be installed and running
   - Download from: [https://www.voidtools.com/](https://www.voidtools.com/)
   - Ensure it's running in the background for API access

2. **Node.js**: Version 18+ with ES module support

3. **Windows OS**: Required for Everything SDK compatibility

## Installation

1. Clone the repository:
```bash
git clone https://github.com/peterparker57/everything-mcp-server.git
cd everything-mcp-server
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
npm run build
```

## Configuration

Add the server to your MCP settings file:

```json
{
  "mcpServers": {
    "everything": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": ["path/to/everything-mcp-server/build/index.js"],
      "disabled": false,
      "env": {},
      "alwaysAllow": [
        "search_files",
        "search_files_advanced",
        "find_duplicates",
        "search_content"
      ]
    }
  }
}
```

## Usage Examples

### Basic File Search
```
Search for: "msbuild.exe"
Options: Case sensitive, max 50 results
```

### Advanced Search with Filters
```
Query: "*.pdf"
Path: "C:\\Documents"
Size: ">1mb"
Date Modified: "thisweek"
Sort: "size_desc"
```

### Find Duplicates
```
Filename: "config.json"
Path: "C:\\Projects" (optional)
```

### Content Search
```
Content: "function main"
File Types: "js;ts;py"
Path: "C:\\Code" (optional)
```

## Architecture

### Technology Stack
- **Language**: TypeScript
- **Framework**: MCP SDK (@modelcontextprotocol/sdk)
- **FFI Library**: koffi (for native DLL integration)
- **Module System**: ES modules
- **Target**: Everything SDK (Windows file search utility)

### Key Components
1. **Main Server** (`src/index.ts`): Core MCP server implementation
2. **Everything SDK**: Native Windows DLLs for file search
3. **Build System**: TypeScript compilation to ES modules
4. **Configuration**: Package.json with ES module support

## Development

### Building
```bash
npm run build
```

### Testing
Start the server directly to test:
```bash
node build/index.js
```

### Project Structure
```
everything-mcp-server/
ā”œā”€ā”€ src/
│   └── index.ts          # Main server implementation
ā”œā”€ā”€ EverythingSDK/        # Everything native SDK files
│   └── dll/
│       ā”œā”€ā”€ Everything32.dll
│       └── Everything64.dll
ā”œā”€ā”€ build/                # Compiled JavaScript output
ā”œā”€ā”€ package.json          # Project configuration
ā”œā”€ā”€ tsconfig.json         # TypeScript configuration
└── README.md            # This file
```

## Troubleshooting

### "Everything search client is not running"
- Start Everything application
- Ensure it's not running in portable mode without service

### "Connection closed" MCP error
- Check that build directory exists and contains index.js
- Verify Node.js path in MCP configuration
- Ensure Everything application is running

### ES Module errors
- Verify package.json has `"type": "module"`
- Check import statements use .js extensions
- Ensure koffi is imported as default export

## Performance Notes

- Everything indexes files instantly, searches are near-instantaneous
- Content search requires Everything to have content indexing enabled
- Large result sets are automatically limited (configurable per tool)
- Direct API access provides better performance than command-line interface

## Security Considerations

- Server provides read-only file system access through Everything
- No file modification capabilities
- Respects Everything's own security and indexing settings
- Content search limited to files Everything has indexed

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [Everything](https://www.voidtools.com/) by voidtools for the amazing file search utility
- [Model Context Protocol](https://modelcontextprotocol.io/) for the MCP framework
- [koffi](https://github.com/Koromix/koffi) for the excellent FFI library

## Related Projects

- [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) - TypeScript SDK for Model Context Protocol
- [Everything](https://www.voidtools.com/) - The file search utility this server integrates with

---

**Note**: This is a Windows-specific MCP server that requires the Everything application to be installed and running. For cross-platform file search solutions, consider other MCP servers or file search tools.