Skip to main content
Glama
Karun9107

devops-assistant-mcp

by Karun9107

DevOps Assistant MCP Server (Modular)

A professional-grade Model Context Protocol (MCP) server built with TypeScript. It acts as a multi-functional "DevOps Assistant" that allows AI models to securely query local databases and manage Docker infrastructure through a standardized interface.

🚀 Features

  • Modern Architecture: Built using the latest @modelcontextprotocol/sdk (v1.3+).

  • Multi-Service Integration: Single entry point for Database, System, and Docker management.

  • Docker Management: Directly interact with the local Docker socket to inspect containers and debug logs.

  • Modular Design: Separation of concerns between configuration, server orchestration, and service-specific tool logic.

  • Type-Safe: Full TypeScript implementation with Zod schema validation for all tool inputs.

Related MCP server: Database MCP

🛠️ Tools Provided

🗄️ Database Tools

  • query_database: Execute SQL queries on the local MySQL instance to analyze data or system records.

🐳 Docker Tools

  • list_containers: List all local Docker containers and their current status (Running, Stopped, etc.).

  • get_container_logs: Retrieve the last 50 lines of logs from a specific container for real-time debugging.

⚙️ System Tools

  • get_system_time: Utility tool to retrieve the server's current time for log synchronization.

📋 Prerequisites

  • Node.js (v18+)

  • Docker Desktop (or OrbStack)

  • MCP Client (e.g., VS Code with "Continue" or "Roo Code", or the MCP Inspector)

🚦 Quick Start

1. Start the Sample Database

Run the MySQL container using Docker:

docker run -d \
  --name mcp-app-db \
  -e MYSQL_ROOT_PASSWORD=mypassword \
  -e MYSQL_DATABASE=mcp_learning \
  -p 3306:3306 \
  mysql:latest

2. Install Dependencies

npm install

3. Seed the Database

Populate the database with sample user data:

npm run seed

4. Build and Test

Compile the TypeScript code and run the MCP Inspector:

npm run build
npx @modelcontextprotocol/inspector node dist/index.js

🏗️ Project Structure

  • src/config.ts: Centralized configuration for all services.

  • src/tools/database.ts: SQL query logic.

  • src/tools/docker.ts: Docker socket integration logic.

  • src/tools/system.ts: General utility tools.

  • src/index.ts: The main orchestrator and entry point.

📄 License

ISC

Available Tools

4 tools
get_container_logsA

Retrieve the last 50 lines of logs from a specific Docker container.

ParametersJSON Schema
NameRequiredDescriptionDefault
containerIdYesThe ID or Name of the container

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

States specific behavior of retrieving last 50 lines, but lacks details on whether container must be running, permissions, or if logs are followed. No annotations provided to supplement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no superfluous words, front-loaded with key action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with one parameter and no output schema; description covers purpose and scope adequately. Minor gap: does not mention return format (lines).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already describes containerId at 100% coverage, so description adds no extra parameter meaning beyond the 'last 50 lines' context which is not parameter-specific.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Retrieve' and resource 'logs from a specific Docker container', with detail 'last 50 lines'. Clearly distinguishes from siblings like get_system_time and list_containers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for retrieving container logs but provides no explicit guidance on when to use versus alternatives or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_system_timeA

Returns the current system time from the MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, but description fully discloses behavior: it returns system time. Simple read operation with no side effects, accurately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, zero wasted words, perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and a self-explanatory output (current time), the description is fully complete. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4. Description adds no parameter info, but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns current system time. The verb 'returns' and resource 'current system time' are specific. Sibling tools are about containers and databases, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when/when-not guidance, but the tool's unique purpose (returning time) makes it obvious when to use it. Context implies it's distinct from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_containersA

List all local Docker containers and their current status (running, stopped, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoWhether to show all containers or just running ones

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. It discloses the tool lists local containers and status, but does not mention prerequisites like Docker daemon running, authentication, or performance implications. Adequate for a simple read-only tool but could add more context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loaded with action and resource; every word is necessary. Concise and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 parameter, no output schema), the description is nearly complete. It explains the tool's function and parameter. Could mention return format but covers essential information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with description for the boolean parameter 'all'. The tool description adds no extra meaning beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool lists all local Docker containers and shows their status, using specific verb and resource. It is distinct from siblings like get_container_logs which focus on logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing container status, but does not explicitly state when to use vs. alternatives. However, siblings are clearly different functions, making context clear without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_databaseA

Execute a SQL query on the local MySQL database.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesThe full SQL query to execute

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only says 'Execute a SQL query', which could imply either read or write operations. It fails to disclose important behaviors like mutation potential, error handling, or query limits, leaving the agent without critical safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that communicates the core purpose without any extraneous information. It is efficiently front-loaded and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having only one parameter and no output schema, the description omits crucial context such as return format (rows, error messages) and whether queries can be read-only or mutating. This leaves the agent with insufficient information to predict behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter 'sql' is fully described in the schema. The tool description adds no extra meaning beyond 'Execute a SQL query', not specifying syntax details or constraints. This meets the baseline for high schema coverage but provides no added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Execute') and the resource ('SQL query on the local MySQL database'), making the tool's purpose unambiguous. It is distinct from sibling tools like get_container_logs, which are unrelated to database queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool's purpose is clear, and there are no overlapping sibling tools, so an agent can easily infer when to use it. However, the description lacks explicit guidance on when not to use it or alternatives (e.g., for read-only queries vs modifications).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • First observedget_container_logs
    • First observedget_system_time
    • First observedlist_containers
    • First observedquery_database

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct operation: container logs, system time, container listing, and database query. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (get_, list_, query_), with clear actions and targets.

Tool Count5/5

With 4 tools, the set is well-scoped for basic DevOps monitoring tasks, each tool earning its place without redundancy.

Completeness2/5

Major gaps exist for a 'DevOps assistant': missing container management (start/stop/restart), deployment, database schema exploration, and system monitoring beyond time.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with MySQL databases through the Model Context Protocol, allowing users to execute SQL queries and check connection status. It provides tools for seamless database management and built-in SQL query examples.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a natural language interface for querying and managing PostgreSQL, MySQL, MariaDB, MSSQL, and SQLite databases using the Model Context Protocol. Users can explore database schemas and visualize query results through an integrated web dashboard.
    37
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Docker containers, images, networks, volumes, and Compose services through the Model Context Protocol. It supports system operations, command execution within containers, and integration with Docker Hub and GitHub Container Registry.
    130
    2
    MIT

Latest Blog Posts

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/Karun9107/devops-assistant-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server