Omni-MCP
<div align="center">
# โก Omni-MCP
**๐ The Universal MCP Resource Server**
_Mount any folder, URL, or database. Feed any AI. Zero code required._
[](https://nodejs.org)
[](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
Scored across 7 tools
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.
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.
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.
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.