MCP OpsBridge
Allows interaction with GitHub repositories, including searching issues, retrieving repository statistics, and creating pull requests.
Enables querying events, creating events, and finding free time slots on Google Calendar.
Provides database operations for PostgreSQL, such as executing queries, listing tables, and describing table schemas.
Facilitates sending messages, listing channels, and retrieving thread conversations on Slack.
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., "@MCP OpsBridge show me today's calendar events"
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 OpsBridge
Production MCP (Model Context Protocol) server exposing 30 DevOps tools for AI agents with a user approval system that prevents unauthorized write/destructive operations.
What It Does
Exposes 29 tools + 1 approve_action tool across 4 services, guarded by a risk-based permission gate:
Service | Tools | Read (Auto) | Write (Gated) | Destructive (Double Approval) |
GitHub | 7 | All 7 | — | — |
Calendar | 8 | 4 ( | 3 ( | 1 ( |
Database | 9 | 3 ( | 2 auto + 1 gated ( | 3 ( |
Slack | 5 | 3 ( | 2 ( | — |
Related MCP server: mcp-github-server
User Approval System
The permission gate intercepts medium+ risk tool calls and returns pending_approval instead of executing. The agent presents a structured request to the user, who confirms via the approve_action tool.
Low risk → Auto-execute (reads)
Medium/High → Single approval required
Critical → Double approval required (two separate confirms)
Timeout → Stale approvals auto-expire after 5 minutes
Architecture
┌──────────────────────────────────────────────────┐
│ CLIENTS │
│ Claude Desktop (stdio) │ Custom Client (HTTP) │
└────────────┬─────────────────────┬───────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────┐
│ MCP SERVER │
│ ┌────────────────────────────────────────────┐ │
│ │ Transport: stdio | Streamable HTTP │ │
│ │ Rate Limiter: 100 req/min user, 1000/hr IP│ │
│ │ Permission Gate: Risk → Pending/Execute │ │
│ │ Validation: Zod schemas on all inputs │ │
│ └────────────────────────────────────────────┘ │
└────────────┬─────────────────────┬───────────────┘
│ │
▼ ▼
┌──────────────────────────────────────────────────┐
│ EXTERNAL APIs │
│ GitHub │ Google Calendar │ PostgreSQL │ Slack │
└──────────────────────────────────────────────────┘Quick Start
Local Development
npm install
npm run dev # stdio mode (default)
TRANSPORT=http PORT=3099 npm run dev # HTTP modeWith Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"opsbridge": {
"command": "npx",
"args": ["tsx", "src/cli.ts"],
"env": {
"GITHUB_TOKEN": "ghp_...",
"DATABASE_URL": "postgresql://...",
"SLACK_TOKEN": "xoxb-...",
"CALENDAR_TOKEN": "ya29..."
}
}
}
}With Docker
cp .env.example .env
# Edit .env with your tokens
docker compose up -dEnvironment Variables
Variable | Required | Description |
| No* | GitHub token (*required for private repos; public repos work without) |
| No* | PostgreSQL connection string (*required for DB tools) |
| No* | Slack bot token ( |
| No* | Google Calendar OAuth token (*required for Calendar tools) |
| No |
|
| No | HTTP port (default: 3002) |
Security
Permission gate: Risk-based approval for write/destructive operations; critical ops require double approval
Read-only database: PostgreSQL session set to
READ ONLY+ write keyword blocklistRate limiting: LRU cache, 100 requests/minute per user, 1000/hour per IP
Scoped tokens: Each service requires its own token
Input validation: All tool inputs validated with Zod schemas
No secrets in code: All tokens loaded from environment variables
5-minute approval timeout: Stale pending approvals auto-expire
Development
npm run build # Compile TypeScript
npm run dev # Start dev server (stdio)
npm test # Run Vitest (71 tests)
npm run lint # Type check
npm run format # Prettier formatTech Stack
TypeScript 5.5+
@modelcontextprotocol/sdkv1.29 (MCP protocol)Zod (input validation)
@octokit/rest(GitHub API)pg(PostgreSQL)lru-cache(rate limiting + approval store)Vitest (testing)
License
MIT
Available Tools
30 toolsapprove_actionA
Confirm or deny a pending action that requires user approval. Use this to respond to pending_approval or pending_approval_2 responses.
Inputs: decision (required), approval_id (required), reason.
calendar_add_attendeeC
Add an attendee to an existing event (requires approval)
Inputs: email (required), event_id (required), calendar_id.
calendar_create_eventB
Create a calendar event with optional attendees (requires approval)
Inputs: summary (required), end_time (required), start_time (required), attendees, +2 more.
calendar_delete_eventA
Delete a calendar event (double approval required — irreversible)
Inputs: event_id (required), calendar_id.
calendar_find_free_slotsB
Find mutually available time slots across calendars
Inputs: time_max (required), time_min (required), calendar_ids, duration_minutes.
calendar_get_event_detailsA
Get detailed information about a single event including attendees and description
Inputs: event_id (required), calendar_id.
calendar_list_calendarsA
List all calendars accessible by the authenticated user
Inputs: no named parameters.
calendar_query_eventsA
List events in a date range from Google Calendar
Inputs: time_max (required), time_min (required), calendar_id, max_results.
calendar_update_eventA
Update an existing calendar event (requires approval)
Inputs: event_id (required), summary, end_time, start_time, +2 more.
db_delete_rowsA
Delete rows from a table matching a WHERE clause (requires approval)
Inputs: table (required), where (required), params (required).
db_describe_tableB
Show columns and types for a table
Inputs: table (required), schema.
db_drop_tableA
Drop a table — permanently removes table and data (double approval required)
Inputs: table (required), if_exists.
db_execute_queryA
Execute a read-only SQL query against PostgreSQL
Inputs: query (required), params.
db_insert_rowA
Insert a new row into a table (auto-approved, logged)
Inputs: data (required), table (required).
db_list_tablesB
List all tables in a database schema
Inputs: schema.
db_migrate_schemaA
Execute a schema migration (ALTER/CREATE/DROP) — structural change (double approval required)
Inputs: query (required).
db_truncate_tableA
Truncate a table — removes all rows (double approval required)
Inputs: table (required), cascade.
db_update_rowsA
Update rows in a table matching a WHERE clause (auto-approved, logged)
Inputs: data (required), table (required), where (required), params (required).
github_get_commitsB
Get commit history for a branch
Inputs: repo (required), limit, branch.
github_get_file_contentsB
Get contents of a file or directory from a repository
Inputs: path (required), repo (required), branch.
github_get_pull_requestsB
Get pull requests in a repository with diff statistics
Inputs: repo (required), limit, state.
github_get_repo_statsB
Get repository statistics: stars, forks, open issues, recent commits
Inputs: repo (required).
github_list_branchesB
List all branches in a repository
Inputs: repo (required), limit.
github_list_reposA
List repositories for the authenticated user with metadata
Inputs: sort, type, limit.
github_search_issuesC
Search issues in a GitHub repository by query, state, and label
Inputs: repo (required), query (required), limit, state.
slack_get_channel_historyC
Get recent messages from a Slack channel
Inputs: channel (required), limit, cursor.
slack_get_threadB
Retrieve messages in a thread
Inputs: ts (required), channel (required), limit.
slack_list_channelsC
List accessible Slack channels
Inputs: limit, cursor.
slack_send_messageB
Send a message to a Slack channel (requires approval)
Inputs: text (required), channel (required), thread_ts.
slack_send_thread_replyA
Send a reply in a Slack thread (requires approval)
Inputs: text (required), channel (required), thread_ts (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 30 tools
Every tool is clearly namespaced by service (github_, calendar_, db_, slack_) and performs a distinct action. No two tools have overlapping purposes; even similar actions like calendar_query_events and calendar_get_event_details are clearly differentiated.
All tool names follow a consistent snake_case pattern of domain_verb_noun (e.g., github_search_issues, db_execute_query, slack_send_message). The standalone approve_action still fits the verb_noun convention. No naming style mixing.
At 30 tools, the server exceeds the 25+ threshold for 'too many'. While the tools are grouped by service, the overall count is heavy for a single MCP server and could overwhelm agents. Splitting into separate domain servers would be more appropriate.
Calendar, database, and Slack domains have full lifecycle coverage (CRUD and actions). However, the GitHub domain is read-only—no create/update/merge operations—which is a notable gap for an ops bridge. Also missing some actions like Slack message deletion or calendar availability beyond free slots.
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Hosted MCP server to manage a restaurant menu from AI agents - 39 tools over the DuckHub API.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA high-performance Go-based MCP server that provides a microservice architecture for orchestrating diverse tools through gRPC and HTTP/REST APIs. Enables seamless integration of language-agnostic tools including ML capabilities, web search, calculations, and human interaction for intelligent agent workflows.2-
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server providing 18 tools for comprehensive GitHub interaction, including repository management, issues, pull requests, code search, and CI/CD status, with Redis caching and rate limit handling.16 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
- FlicenseNot gradedqualityDmaintenanceA modular MCP server exposing tools for integrating with services like GitHub, Redash, Jenkins, Figma, Jira, Confluence, Teams, Datadog, PagerDuty, Slack, and Presto, enabling users to manage these platforms through natural language via an MCP client.-