Multi-Tool MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Multi-Tool MCP Serversearch my Obsidian vault for notes about network security"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server
A custom Model Context Protocol (MCP) server that provides Claude Code and other MCP clients with secure access to filesystem, system information, Obsidian vault, SQLite database, and UniFi network controller tools.
Features
Filesystem Tools - Read, write, list, and search files within allowed paths
System Tools - Get system info, run whitelisted commands, view processes and disk usage
Obsidian Tools - List notes, read content, search text, and find backlinks in your vault
Database Tools - Query SQLite databases with read-only access
UniFi Tools - Query and manage UniFi Dream Machine networks, including Threat Management (CyberSecure)
Related MCP server: Obsidian MCP Server
Security
HTTPS with TLS certificates (Let's Encrypt supported)
Bearer token authentication for all MCP requests
Path restrictions for filesystem operations
Command whitelist for system operations
Read-only database access with query filtering
API key authentication for UniFi integration
Requirements
Node.js 18+ (for native fetch support)
npm or yarn
TLS certificates (self-signed for development, Let's Encrypt for production)
Optional: UniFi Dream Machine with API key
Installation
Clone the repository:
git clone https://github.com/your-username/mcp-server.git cd mcp-serverInstall dependencies:
npm installConfigure environment:
cp .env.example .env # Edit .env with your settingsGenerate TLS certificates (for development):
mkdir -p certs openssl req -x509 -newkey rsa:4096 -keyout certs/server.key -out certs/server.crt -days 365 -nodes -subj "/CN=localhost"Build and run:
npm run build npm start
Configuration
Copy .env.example to .env and configure:
Variable | Required | Description |
| Yes | Authentication token for MCP clients |
| No | Server port (default: 8443) |
| No | Use HTTPS (default: true) |
| No | Path to SSL certificate |
| No | Path to SSL private key |
| No | Comma-separated paths for filesystem access |
| No | Path to Obsidian vault |
| No | Path to SQLite database |
| No | UniFi controller IP/hostname |
| No | UniFi API key |
| No | UniFi site name (default: "default") |
Usage
Development
npm run dev # Run with tsx (hot reload)Production
npm run build # Compile TypeScript
npm start # Run compiled serverSystemd Service
Create /etc/systemd/system/mcp-server.service:
[Unit]
Description=MCP Server
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/mcp-server
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetThen:
sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-serverConnecting Clients
Claude Code (CLI)
claude mcp add --transport http my-mcp https://your-server.example.com:8443/mcp \
--header "Authorization: Bearer YOUR_MCP_TOKEN"Or add to your project's .mcp.json:
{
"mcpServers": {
"my-mcp": {
"url": "https://your-server.example.com:8443/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}Claude Desktop
Add to your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"my-mcp": {
"url": "https://your-server.example.com:8443/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}Restart Claude Desktop after saving.
Available Tools
See docs/tools-reference.md for complete tool documentation.
Tool Categories
Category | Tools | Description |
Filesystem | 4 | File read/write/list/search |
System | 4 | System info and commands |
Obsidian | 4 | Vault notes and search |
Database | 3 | SQLite queries |
UniFi | 19 | Network management and security |
Total: 34 tools
Project Structure
mcp-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # Express + MCP setup
│ ├── auth.ts # Token authentication
│ └── tools/
│ ├── index.ts # Tool registry
│ ├── filesystem.ts # File operations
│ ├── system.ts # System commands
│ ├── obsidian.ts # Obsidian vault
│ ├── database.ts # SQLite queries
│ └── unifi.ts # UniFi controller
├── docs/ # Documentation
├── certs/ # TLS certificates (not in repo)
├── dist/ # Compiled output (not in repo)
├── .env # Configuration (not in repo)
└── .env.example # Example configurationAPI Endpoints
The server provides two ways to access tools:
REST API (Simple)
Direct tool access without MCP protocol handshake. Best for scripts, automation, and testing.
Endpoint | Method | Auth | Description |
| GET | No | Health check |
| GET | Yes | List all available tools with schemas |
| GET | Yes | Get info for a specific tool |
| POST | Yes | Execute a tool (args in request body) |
Example - Single request to call a tool:
curl -X POST https://your-server.example.com:8443/api/tools/unifi_get_network_health \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Response format:
{
"success": true,
"tool": "unifi_get_network_health",
"data": { ... }
}MCP Protocol (Full)
Standard MCP protocol with session management. Required for Claude Code and Claude Desktop.
Endpoint | Method | Auth | Description |
| GET | Yes | Server info |
| POST | Yes | MCP protocol messages |
| DELETE | Yes | Close session |
License
ISC
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides a standardized interface for AI assistants to interact with Obsidian vaults through a local REST API, enabling reading, writing, searching, and managing notes.67MIT
- FlicenseNot gradedqualityBmaintenanceProvides secure, direct file system access to Obsidian vault files, enabling search, read, write, and discovery of notes without requiring the Obsidian app.23-
- AlicenseAqualityDmaintenanceExposes local file I/O, a restricted shell whitelist, and SQLite helpers for safe integration with AI clients like Cursor and Claude Desktop.7MIT
- AlicenseNot gradedqualityBmaintenanceExposes local file system operations to AI assistants via Streamable HTTP with security features like auth, path whitelisting, and audit logging.286 npm2MIT