Click on "Install 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., "@SERVICElist all integrated MCP tools"
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.
____ _____ ______ _____ ____ _____
/ ___|| ____| _ \ \ / /_ _/ ___| ____|
\___ \| _| | |_) \ \ / / | | | | _|
___) | |___| _ < \ V / | | |___| |___
|____/|_____|_| \_\ \_/ |___\____|_____|
MCP Hub & Notification Center๐ npm version
๐ License: MIT
๐ Node.js
๐ GitHub CI
The only MCP server your AI agent needs.
AI agents today juggle a dozen MCP servers: one for GitHub, one for the filesystem, one for search, one for Slack. Every restart, every new project, every new agent has to re-configure all of them. SERVICE solves this. It's a persistent 24/7 background daemon that aggregates all your downstream MCP servers into one unified connection โ and layers on a real-time notification gateway so your agents can receive events from X/Twitter, Slack, Email, and webhooks the moment they happen.
One connection. All your tools. Always on.
Why SERVICE?
๐ Single MCP endpoint for everything โ Claude Desktop, Cursor, Copilot, and any MCP client connect to one URL (
http://localhost:3333/mcp) and instantly get all tools from all your downstream servers, namespaced cleanly (github__create_issue,filesystem__read_file, etc.)โก Real-time push, not polling โ integrations like Slack, Email, X/Twitter, and webhooks stream events to your agents the moment they arrive via SSE, so agents can react in real-time without burning tokens on polling loops
๐ Local-first and private โ all data lives in
~/.service/service.db(SQLite), credentials are AES-256-GCM encrypted, nothing leaves your machine unless you configure it to๐งฉ Plugin-style integrations โ add new integrations via a CLI wizard or the REST API; no rebuild required
Related MCP server: ntfy-me-mcp
Architecture
AI Agent (Claude Desktop / Cursor / Copilot / any MCP client)
โ
โ Single MCP connection (Streamable HTTP)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SERVICE DAEMON โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ MCP Hub ยท port 3333 โ โ
โ โ Aggregates & proxies tools from all downstream MCPs โ โ
โ โ Namespaced tools: github__create_issue, etc. โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Notification Gateway ยท port 3334 โ โ
โ โ 24/7 listener for all integrations โ โ
โ โ SQLite persistence + SSE push to agents โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Integration System (plugin-based) โ โ
โ โ X/Twitter ยท Slack ยท Email ยท Webhooks ยท HTTP-poll โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Interactive TUI Dashboard (Ink v6) โ โ
โ โ Notification Center ยท Integration Manager ยท โ โ
โ โ MCP Manager ยท Full keyboard navigation โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโ โโโโโโโโโโโโโโโโโโโโ
โผ โผ
Downstream MCPs (stdio) External Platforms
github, filesystem, memory, X/Twitter, Slack, Email,
brave-search, any MCP server Webhook, HTTP-poll, customQuickstart
# 1. Install globally
npm install -g service-mcp
# 2. Start the daemon
service start
# 3. Add your AI client config (see below)
# 4. Add integrations interactively
service integration add
# 5. Watch it live
service dashboardPorts:
3333โ MCP Hub (agents connect here) ยท3334โ Admin API + SSE stream
Connect Your AI Client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"service": {
"url": "http://localhost:3333/mcp"
}
}
}Cursor
Edit your Cursor MCP settings (~/.cursor/mcp.json or via Settings โ MCP):
{
"mcpServers": {
"service": {
"url": "http://localhost:3333/mcp"
}
}
}Any stdio-compatible client
{
"mcpServers": {
"service": {
"command": "npx",
"args": ["service-mcp", "mcp-server"]
}
}
}CLI Reference
Daemon Lifecycle
Command | Description |
| Start the SERVICE daemon in the background |
| Gracefully stop the daemon |
| Show daemon status (uptime, ports, integrations, MCPs) |
Integration Management
Command | Description |
| List all configured integrations and their status |
| Add a new integration via interactive wizard |
| Permanently remove an integration |
| Re-enable a disabled integration |
| Disable without removing |
MCP Connection Management
Command | Description |
| List all downstream MCP connections |
| Add a downstream MCP server (interactive wizard if no args) |
| Disconnect and remove a downstream MCP |
Utilities
Command | Description |
| Open the interactive TUI dashboard (full-screen Ink v6 app) |
| Generate shell completion script (bash/zsh/fish) |
| Check for and install newer versions from npm |
| Show help for all commands |
| Show installed version |
Interactive TUI Dashboard
The service dashboard command launches a full-screen, keyboard-driven terminal UI built on Ink v6 (React for CLI โ the same framework powering Claude Code and Gemini CLI). It provides complete management of notifications, integrations, and MCP connections without leaving the terminal.
Navigation
Key | Action |
| Cycle between panes (Live Feed โ Integrations โ MCPs โ System) |
| Navigate lists |
| Open detail view for selected item |
| Go back to previous screen |
| Quit dashboard |
| Show/hide keyboard shortcut help overlay |
| Refresh current pane |
Notification Center
Manage all notifications in real-time:
Real-time updates: New notifications appear instantly via SSE push โ no polling
Visual indicators:
โunread (bold) vsโread (dimmed)Mark as read:
Spacemarks selected notification,Amarks all as readFilter:
utoggles unread-only viewSearch:
/opens inline full-text search (FTS5)Detail view:
Entershows full notification body, source, type, and timestamp
Integration Manager
View, configure, and manage all integrations:
Status badges: ๐ข active / ๐ด error / โธ disabled (color-coded)
Detail view: Shows config fields with secrets redacted as
โขโขโขโขโขโขEnable/Disable:
e/dkeys toggle integration stateRemove:
xkey with confirmation dialogAdd new:
aopens in-TUI multi-step form with type selection, schema-driven fields, and password masking for secret fields
MCP Connection Manager
Manage all downstream MCP server connections:
Status badges: ๐ข connected / ๐ด error / โณ connecting, with tool count display
Detail view: Full command + args, status, and scrollable tool list
Reconnect:
rkey triggers reconnect for disconnected MCPsRemove:
xkey with confirmation dialogAdd new:
aopens in-TUI form for name, command, and args
MCP Tool Reference
All built-in SERVICE tools are prefixed with service__. Downstream MCP tools are namespaced as {mcpName}__toolName (e.g. github__create_issue).
Notifications
Tool | Parameters | Description |
|
| Get recent notifications with optional filters |
| โ | Count of unread notifications |
|
| Mark a specific notification as read |
|
| Full-text search across notification history |
Agent Memory
Tool | Parameters | Description |
|
| Save a persistent key-value note |
|
| Retrieve a note by key |
| โ | List all saved note keys |
|
| Delete a note by key |
MCP Management
Tool | Parameters | Description |
|
| Add a downstream MCP at runtime |
|
| Remove a downstream MCP connection |
| โ | List all active downstream MCP connections |
System
Tool | Parameters | Description |
| โ | Daemon health: uptime, version, integration count |
| โ | Formatted guide of all available tools |
Platform Tools (Auto-registered from Integrations)
When integrations are active, their tools are automatically registered and available to your agents:
Integration | Tools |
X / Twitter |
|
Slack |
|
| |
HTTP-poll |
|
Integration Setup
Webhook
The simplest integration โ receives HTTP POST requests and converts them to notifications.
service integration add webhook --name my-webhook
# Returns webhook URL: http://localhost:3334/webhooks/<integration-id>Send events from any external system:
curl -X POST http://localhost:3334/webhooks/<id> \
-H "Content-Type: application/json" \
-d '{"title": "Deploy Complete", "body": "v2.1.0 deployed to production"}'X / Twitter
Requires a Twitter API v2 bearer token. Optional: keyword tracking.
service integration add x
# Wizard prompts for:
# bearer_token โ Twitter API v2 bearer token
# track_keywords โ (optional) comma-separated keywords to monitorSlack
Requires a Slack Bot Token with Socket Mode enabled.
service integration add slack
# Wizard prompts for:
# bot_token โ xoxb-... (Bot User OAuth Token)
# app_token โ xapp-... (App-Level Token for Socket Mode)Scopes required: channels:read, chat:write, reactions:write, channels:history
Email (SMTP + IMAP)
Monitors your inbox via IMAP and sends email via SMTP. Works with Gmail, Outlook, Fastmail, and any standard mail server.
service integration add email
# Wizard prompts for:
# imap_host, imap_port โ e.g. imap.gmail.com:993
# smtp_host, smtp_port โ e.g. smtp.gmail.com:587
# user, password โ your email credentials (stored encrypted)Tip for Gmail: Enable "App Passwords" in your Google Account security settings.
HTTP Poll
Polls a URL on a schedule and creates a notification whenever the content changes.
service integration add http-poll
# Wizard prompts for:
# url โ endpoint to poll
# interval_seconds โ polling interval (e.g. 60)
# method โ GET or POSTAdmin REST API
SERVICE exposes a full REST API on port 3334 for programmatic management and automation:
Endpoint | Method | Description |
|
| Health check โ returns |
|
| Full daemon status (uptime, version, counts) |
|
| List notifications ( |
|
| Mark a notification as read |
|
| List all configured integrations |
|
| Create a new integration |
|
| Remove an integration |
|
| List all available integration types |
|
| List downstream MCP connections |
|
| Add a downstream MCP server |
|
| Remove a downstream MCP |
|
| SSE stream โ real-time notification events |
|
| Inbound webhook receiver |
SSE Event Stream
Subscribe to real-time events:
curl -N http://localhost:3334/eventsEvents are JSON-encoded NotificationEvent objects pushed as they arrive.
Data Storage
All data is stored locally on your machine. Nothing is sent to external servers unless you configure an integration.
Path | Purpose |
| SQLite database โ notifications, integrations, notes |
| Daemon configuration |
| Daemon PID file |
| Runtime state (connected agents, uptime) |
| Rotating log files |
| Auto-generated AES-256-GCM encryption key for credentials |
Credentials stored in integrations are encrypted at rest using AES-256-GCM. The encryption key is generated once on first run and stored at
~/.service/.encryption_key.
Examples
See the examples/ directory for ready-to-use configs:
File | Description |
Full Claude Desktop configuration | |
Cursor editor MCP config | |
Sample downstream MCP connections (github, filesystem, brave) | |
Shell script for sending webhook events |
Requirements
Requirement | Version |
Node.js | โฅ 20.0.0 |
npm | โฅ 9.0.0 |
OS | macOS, Linux, Windows (WSL2) |
Development
# Clone and install
git clone https://github.com/baiehclaca/service-mcp.git
cd service-mcp
npm install
# Build TypeScript
npm run build
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Development mode (watch + auto-reload)
npm run dev
# Lint
npm run lintAdding a Custom Integration
Every integration implements the IntegrationAdapter interface:
interface IntegrationAdapter {
id: string
name: string
description: string
configSchema: JSONSchema // Fields the wizard will prompt for
connect(config: Record<string, string>): Promise<void>
disconnect(): Promise<void>
onEvent(handler: (event: NotificationEvent) => void): void
getTools(): MCPTool[] // Tools exposed to agents
}Register your adapter in src/integrations/index.ts โ no rebuild of the core daemon is needed.
License
MIT โ ยฉ 2024 service-mcp contributors
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/baiehclaca/service'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
