Skip to main content
Glama
README.md
<div align="center">

# โšก Omni-MCP

**๐Ÿ”Œ The Universal MCP Resource Server**

_Mount any folder, URL, or database. Feed any AI. Zero code required._

[![Node.js](https://img.shields.io/badge/Node.js-โ‰ฅ18-339933?logo=node.js)](https://nodejs.org)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

</div>

---

## ๐Ÿš€ Highlights

- **๐Ÿ“‚ Folder Mounting** โ€” Mount any directory with one command; `.txt` / `.md` files become instantly readable
- **๐ŸŒ Web Scraping** โ€” Provide a URL, auto-convert to Markdown, cached and persisted
- **๐Ÿ—„๏ธ SQLite Adapter** โ€” Mount a database, auto-expose its schema, safely run SELECT queries
- **๐Ÿ“Ÿ TUI Dashboard** โ€” Ink-powered terminal UI with real-time status, mounts, and AI activity
- **๐Ÿ’พ Persistent Config** โ€” Mount once, automatically restored on restart

---

## ๐Ÿ› ๏ธ Quick Start

### 1. Install

```bash
git clone https://github.com/DEM-YU/omni-mcp.git
cd omni-mcp
npm install
```

### 2. Connect to Your AI Client

<details>
<summary>๐ŸŒŒ <b>Antigravity</b> (<code>~/.gemini/antigravity/mcp_config.json</code>)</summary>

```json
{
  "mcpServers": {
    "omni-mcp": {
      "command": "npx",
      "args": ["tsx", "/path/to/omni-mcp/src/index.ts"],
      "cwd": "/path/to/omni-mcp"
    }
  }
}
```

</details>

<details>
<summary>๐Ÿง  <b>Claude Desktop</b> (<code>claude_desktop_config.json</code>)</summary>

```json
{
  "mcpServers": {
    "omni-mcp": {
      "command": "npx",
      "args": ["tsx", "/path/to/omni-mcp/src/index.ts"],
      "cwd": "/path/to/omni-mcp"
    }
  }
}
```

</details>

### 3. Start Talking

Once connected, just tell your AI:

```
"Mount the folder /Users/me/research as a knowledge base"
"Scrape this page: https://example.com"
"Mount the database /path/to/data.db and query all users"
```

---

## ๐Ÿ“‚ Supported Sources

### Local Folders

| Tool             | Description                                         |
| ---------------- | --------------------------------------------------- |
| `mount_folder`   | Mount a local folder, exposing `.txt` / `.md` files |
| `add_new_source` | Alias for `mount_folder`                            |
| `unmount_folder` | Unmount a previously mounted folder                 |

### Web Pages

| Tool        | Description                                                           |
| ----------- | --------------------------------------------------------------------- |
| `mount_url` | Fetch a web page, convert to Markdown, cache and expose as a resource |

### SQLite Databases

| Tool           | Description                                                |
| -------------- | ---------------------------------------------------------- |
| `mount_sqlite` | Mount a SQLite database (read-only), auto-expose schema    |
| `query_sqlite` | Safely execute SELECT queries, returns JSON (max 100 rows) |

### General

| Tool          | Description                                        |
| ------------- | -------------------------------------------------- |
| `list_mounts` | List all mounted folders, web pages, and databases |

---

## ๐Ÿ“Ÿ TUI Dashboard

A live terminal dashboard renders on stderr at startup:

- **Status Indicator** โ€” Server online / starting
- **๐Ÿ“‚ Folders** โ€” Mounted folder tree
- **๐ŸŒ Web Pages** โ€” Mounted URL list
- **๐Ÿ—„๏ธ Databases** โ€” Connected database list
- **โšก Live Activity** โ€” Flashes in real-time when AI reads a resource

> ๐Ÿ’ก TUI renders to `stderr`; MCP JSON-RPC flows through `stdout/stdin` โ€” zero interference.

---

## ๐Ÿ“ Project Structure

```
omni-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts          # MCP Server + all tool handlers
โ”‚   โ”œโ”€โ”€ events.ts         # Event bus (Server โ†” Dashboard)
โ”‚   โ””โ”€โ”€ dashboard.tsx     # Ink TUI dashboard
โ”œโ”€โ”€ test-resources/       # Sample files for testing
โ”œโ”€โ”€ config.json           # Auto-generated persistence (gitignored)
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tsconfig.json
โ””โ”€โ”€ README.md
```

---

## ๐Ÿ“„ License

MIT ยฉ Brooks

---

<div align="center">

**Built with ๐Ÿงก for the AI-native developer workflow.**

_If Omni-MCP saved you from copy-pasting, give it a โญ_

</div>

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation3/5

Most tools have distinct purposes, but there is notable overlap between 'add_new_source' and 'mount_folder', which are explicitly described as aliases for the same operation. This duplication could cause confusion or misselection by an agent, though other tools like 'mount_sqlite', 'mount_url', and 'query_sqlite' are clearly differentiated.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout, such as 'mount_folder', 'list_mounts', and 'query_sqlite'. The only deviation is 'add_new_source', which breaks the pattern but is explained as an alias for 'mount_folder', maintaining overall readability and predictability.

Tool Count5/5

With 7 tools, the count is well-scoped for a server focused on mounting and querying various data sources. Each tool serves a clear purpose in the workflow, from mounting folders, URLs, and databases to listing and unmounting, without feeling excessive or insufficient for the domain.

Completeness4/5

The tool set provides comprehensive coverage for mounting and accessing different resource types (folders, URLs, SQLite databases), with operations for listing and unmounting. A minor gap is the lack of a tool to unmount URLs or SQLite databases specifically, but agents can likely infer or work around this using existing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues