MCP Hub
Back to servers

Multi-Tool MCP Server

A multi-purpose MCP server providing secure authenticated access to filesystem operations, system information, Obsidian vaults, SQLite databases, and comprehensive UniFi network management.

Updated
Dec 31, 2025

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)

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

  1. Clone the repository:

    git clone https://github.com/Shawn-Falconbury/mcp-server.git
    cd mcp-server
    
  2. Install dependencies:

    npm install
    
  3. Configure environment:

    cp .env.example .env
    # Edit .env with your settings
    
  4. Generate 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"
    
  5. Build and run:

    npm run build
    npm start
    

Configuration

Copy .env.example to .env and configure:

VariableRequiredDescription
MCP_TOKENYesAuthentication token for MCP clients
MCP_PORTNoServer port (default: 8443)
USE_HTTPSNoUse HTTPS (default: true)
SSL_CERT_PATHNoPath to SSL certificate
SSL_KEY_PATHNoPath to SSL private key
ALLOWED_PATHSNoComma-separated paths for filesystem access
OBSIDIAN_VAULT_PATHNoPath to Obsidian vault
DB_PATHNoPath to SQLite database
UNIFI_HOSTNoUniFi controller IP/hostname
UNIFI_API_KEYNoUniFi API key
UNIFI_SITENoUniFi site name (default: "default")

Usage

Development

npm run dev    # Run with tsx (hot reload)

Production

npm run build  # Compile TypeScript
npm start      # Run compiled server

Systemd 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.target

Then:

sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-server

Connecting Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "my-mcp-server": {
      "type": "http",
      "url": "https://your-server:8443/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_TOKEN"
      }
    }
  }
}

Available Tools

See docs/tools-reference.md for complete tool documentation.

Tool Categories

CategoryToolsDescription
Filesystem4File read/write/list/search
System4System info and commands
Obsidian4Vault notes and search
Database3SQLite queries
UniFi17Network management and security

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 configuration

API Endpoints

EndpointMethodAuthDescription
/healthGETNoHealth check
/mcpPOSTYesMCP protocol endpoint

License

ISC

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

Reviews

No reviews yet

Sign in to write a review