Skip to main content
Glama
nanpuhaha

voidtools-everything-mcp

by nanpuhaha
README.md
# voidtools-everything-mcp

Local MCP server for searching a voidtools Everything 1.5a index from Codex, Claude, and other MCP clients.

This server uses the Everything HTTP Server and exposes read-only MCP tools. It does not download, open, modify, delete, rebuild, or reindex files.

## Requirements

- Windows with Everything 1.5a running.
- Everything HTTP Server enabled.
- Node.js 20.11 or newer.

## Recommended Everything Settings

In Everything:

1. Open Tools > Options > HTTP Server.
2. Enable HTTP Server.
3. Note the port. The official default URL is `http://127.0.0.1`, while this machine is currently serving Everything HTTP on `http://127.0.0.1:8011`.
4. Disable file download unless you explicitly need browser downloads.
5. Keep the HTTP Server off public networks.

## Local Development Install

```powershell
git clone <this-repository-url>
cd voidtools-everything-mcp
npm install
npm run build
```

During local development, configure your MCP client to run the built local file with `node`. MCP clients start this process on demand and communicate with it over stdio; you do not need to keep this server running manually.

## Configuration

| Variable | Default | Description |
| --- | --- | --- |
| `EVERYTHING_BASE_URL` | `http://127.0.0.1` | Everything HTTP Server URL |
| `EVERYTHING_DEFAULT_COUNT` | `20` | Default returned result count |
| `EVERYTHING_MAX_COUNT` | `100` | Maximum returned result count |
| `EVERYTHING_TIMEOUT_MS` | `5000` | HTTP timeout in milliseconds |

## Local MCP Client Example

```json
{
  "mcpServers": {
    "everything": {
      "command": "node",
      "args": [
        "C:\\Users\\KU\\project\\Everything-SDK\\dist\\index.js"
      ],
      "env": {
        "EVERYTHING_BASE_URL": "http://127.0.0.1:8011"
      }
    }
  }
}
```

Use an absolute path in `args`. Many MCP clients launch the command directly without a shell, so variables such as `%USERPROFILE%`, `$env:USERPROFILE`, or `~` may not be expanded inside `args`. If your MCP client explicitly documents environment-variable expansion in command arguments, you can use it; otherwise the absolute path is the safest option.

If you move this repository to `C:\Users\KU\project\voidtools-everything-mcp`, update the path like this:

```json
{
  "mcpServers": {
    "everything": {
      "command": "node",
      "args": [
        "C:\\Users\\KU\\project\\voidtools-everything-mcp\\dist\\index.js"
      ],
      "env": {
        "EVERYTHING_BASE_URL": "http://127.0.0.1:8011"
      }
    }
  }
}
```

## npm Package Usage

After this package is published to npm, MCP clients can run it with `npx` instead of a local path:

```json
{
  "mcpServers": {
    "everything": {
      "command": "npx",
      "args": [
        "-y",
        "voidtools-everything-mcp"
      ],
      "env": {
        "EVERYTHING_BASE_URL": "http://127.0.0.1:8011"
      }
    }
  }
}
```

With this setup, the MCP client starts `npx` only when it needs the MCP server. `npx` downloads or reuses the package from the npm cache, runs the package binary locally, and the process exits when the MCP client disconnects.

## Publishing

This package is set up for npm Trusted Publishing from GitHub Actions. The workflow lives at `.github/workflows/publish.yml` and publishes when a `v*` tag is pushed.

### One-time npm setup

1. Push this repository to GitHub.
2. Create the package name on npm, or publish the first version manually once with `npm publish --access public`.
3. Open the package page on npmjs.com.
4. Go to package settings and find **Trusted Publisher**.
5. Choose **GitHub Actions**.
6. Fill in:
   - Organization or user: your GitHub username or organization.
   - Repository: the GitHub repository name.
   - Workflow filename: `publish.yml`.
   - Environment name: leave blank unless you add a GitHub deployment environment.
   - Allowed actions: `npm publish`.

Trusted Publishing uses GitHub Actions OIDC, so you do not need to create an `NPM_TOKEN` secret.

### Release a new version

```powershell
npm version patch
git push
git push origin --tags
```

The pushed `v*` tag starts the publish workflow. The workflow installs dependencies, runs tests, typechecks, builds, shows `npm pack --dry-run`, and then runs `npm publish --access public`.

For a minor or major release, use `npm version minor` or `npm version major`.

## Tools

### `everything_search`

Searches the Everything index and returns bounded file/folder paths.

Input:

```json
{
  "query": "invoice ext:pdf",
  "count": 20,
  "sort": "date_modified",
  "ascending": false,
  "matchPath": true
}
```

### `everything_health`

Checks whether the Everything HTTP Server is reachable.

## Development

```powershell
npm test
npm run typecheck
npm run build
```

## Security Notes

- Keep Everything HTTP Server bound to localhost for personal agent usage.
- Do not expose the HTTP Server to a public network.
- Add authentication, path allowlists, and audit logging before any remote deployment.
- Add a separate allowlisted file-reading tool only if an agent truly needs file contents.

## License

MIT

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one checks server health, the other performs searches. No overlap or ambiguity.

Naming Consistency5/5

Both tools follow the consistent pattern 'everything_<action>', using snake_case and the same prefix for clear grouping.

Tool Count4/5

Two tools is minimal but appropriate for a simple read-only search interface with a health check. Just above the threshold for being too few.

Completeness4/5

The set covers the essential operations: verifying connectivity and searching. Missing advanced search features but adequate for basic usage.

Maintenance

ActivityStale
ResponsivenessNo issues