Skip to main content
Glama

OpsMCP

MCP (Model Context Protocol) server that exposes eight typed tools so an AI agent can operate GitHub, Postgres, deploy status, and a sandboxed local filesystem. Credentials stay in the server process; tool inputs are treated as untrusted.

Live: https://tanmays0.github.io/ops-mcp/
GitHub: https://github.com/tanmays0/ops-mcp

Artifact

Location

MCP server (stdio)

uv run python -m ops_mcp

Eight tools

registered in src/ops_mcp/server.py

Companion UI

site/ → GitHub Pages (catalog, setup, simulated playground)

Seeded demo database

docker compose up -d → Postgres users / orders / products

Automated tests

uv run pytest (path sandbox, SQL guard, GitHub mocks, Postgres)

CI

GitHub Actions workflow .github/workflows/ci.yml

Pages deploy

.github/workflows/pages.yml

Container image

Dockerfile

Agent wiring example

.cursor/mcp.json.example

Architecture

Agent (stdio) → FastMCP server
                  ├── tools/       domain tools
                  ├── security/    path sandbox, SQL allowlist, redaction, rate limit
                  ├── adapters/    GitHub HTTP, Postgres
                  └── config.py    Pydantic Settings (env / .env)

Related MCP server: MCP ToolHub

Tools

Tool

System

Behavior

github_list_issues

GitHub API

List issues/PRs by repo, state, labels

github_create_issue

GitHub API

Create issue; default dry_run=true

github_pr_diff_summary

GitHub API

PR file list and diff stats (no patches)

postgres_query_readonly

Postgres

Parameterized SELECT only

postgres_explain

Postgres

EXPLAIN (FORMAT TEXT) only (no ANALYZE)

deploy_status

GitHub Actions

Latest workflow run for a branch

fs_search

Local FS

Literal search under allowlisted roots

fs_read_file

Local FS

Read file with sandbox and size limit

Safety

Control

Implementation

Filesystem

Resolve-then-compare allowlist after symlink resolution

SQL

sqlglot AST: single SELECT / WITH…SELECT; DDL/DML/multi-statement rejected before connect

GitHub writes

dry_run=true unless explicitly disabled

Secrets

SecretStr for token and DSN; log redaction; never returned in tool payloads

Outbound HTTP

Token-bucket rate limit

Stack

Python 3.12 · FastMCP · httpx · psycopg · sqlglot · Pydantic Settings · pytest · Docker

Run

git clone https://github.com/tanmays0/ops-mcp.git
cd ops-mcp
uv sync
docker compose up -d
cp .env.example .env
uv run pytest
uv run python -m ops_mcp

Populate .env from .env.example (OPS_MCP_FS_ROOTS, OPS_MCP_DATABASE_URL, OPS_MCP_GITHUB_TOKEN). MCP client config: copy .cursor/mcp.json.example to .cursor/mcp.json with absolute paths. Secrets load from .env only (.env and .cursor/mcp.json are gitignored).

Configuration

Variable

Purpose

OPS_MCP_FS_ROOTS

Colon-separated allowlisted directories

OPS_MCP_FS_MAX_READ_BYTES

Max bytes for fs_read_file

OPS_MCP_DATABASE_URL

Postgres DSN

OPS_MCP_GITHUB_TOKEN

GitHub fine-grained or classic PAT

OPS_MCP_HTTP_RATE_PER_SECOND

Outbound API rate

OPS_MCP_LOG_LEVEL

Log level

Verification flows

Documented end-to-end flows: DEMO.md.

Spec

Project principles: .specify/memory/constitution.md
Requirements: specs/001-ops-mcp-server/spec.md

Available Tools

8 tools
deploy_statusDeploy StatusB

Latest GitHub Actions workflow run for a branch (read-only).

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
branchNomain

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description does the safety disclosure itself by saying `read-only` and by specifying it returns only the `latest` run. It does not mention authentication, rate limits, or what happens when no workflow run exists, but the read-only behavior is the most important trait.

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?

One short sentence conveys the resource, scope, and safety profile with no filler. The most important information is front-loaded.

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?

For a small read-only status lookup, the description and input schema together cover the necessary invocation details, and the output schema covers return values. It would be more complete with a note about when no runs exist, but nothing critical is missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only gives context for `branch`. `owner` and `repo` are left to their self-evident names and the schema has no descriptions, so an agent receives little added semantic help.

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

Purpose4/5

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

The description names the exact resource (`GitHub Actions workflow run`) and the scope (`for a branch`), and the `(read-only)` qualifier separates it from sibling GitHub mutation tools. It lacks an explicit verb like 'gets' or 'returns', which keeps it from a 5.

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

Usage Guidelines2/5

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

No guidance is given on when to choose this tool over siblings such as github_list_issues or github_pr_diff_summary, nor any exclusions for when it should not be used. The only hint is the title and the read-only label, which are implicit rather than stated.

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

fs_read_fileFs Read FileA

Read a file under allowlisted roots with a hard size limit.

Symlink and .. escapes fail closed. Content is UTF-8 decoded with replacement characters; truncated is true when the file exceeded the cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
max_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers: it discloses symlink/.. escape fail-closed behavior, UTF-8 decoding with replacement characters, and the 'truncated' flag when the file exceeds the cap. This is exactly the kind of edge-case behavior an agent needs to know before calling the tool. No annotation contradiction.

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?

Three sentences, each earning its place: the first states the core operation and constraint, the second covers security behavior, the third covers encoding and truncation. Front-loaded with the primary purpose. No fluff or repetition.

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?

The description covers the key behavioral aspects: security (fail-closed), encoding (UTF-8 replacement), and size cap (truncated flag). The output schema exists, so return values are documented elsewhere. Minor gap: it doesn't specify what happens on non-existent files or permission errors, but the fail-closed language partially covers this. For a 2-param read tool with an output schema, this is nearly complete.

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 description coverage is 0%, so the description must compensate. It explains the 'max_bytes' cap implicitly via 'hard size limit' and 'truncated' flag, but it doesn't explicitly state that max_bytes is the cap parameter or describe the path format (relative vs absolute, allowlist details). The description adds some meaning beyond the bare schema (the size cap behavior), but the path parameter semantics are left to the schema's bare type string. 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?

The description states a specific verb ('Read') and resource ('a file under allowlisted roots') with a hard size limit. It clearly distinguishes itself from siblings like fs_search (which searches) and the github/postgres tools. The scope constraint 'under allowlisted roots' adds precision beyond the tool name.

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 when to use this tool: when you need to read a file's content under the allowlisted roots. It doesn't explicitly name alternatives or exclusions, but the sibling list makes the distinction clear (fs_search is for searching, not reading). The 'hard size limit' and 'fail closed' behavior give implicit guidance on constraints. Missing explicit 'use fs_search instead when...' guidance, but context is clear enough.

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

github_create_issueGithub Create IssueA

Create a GitHub issue. Defaults to dry_run=True (no remote write).

Set dry_run=False only when the user explicitly confirms creation. Never returns credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
repoYes
ownerYes
titleYes
labelsNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries full behavioral disclosure. It reveals the dry_run default (no remote write) and the guarantee that credentials are never returned, which are important behavioral traits. However, it does not explain what happens on failure, whether the operation is idempotent, or what the successful response contains, leaving gaps for an agent to infer.

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 four short sentences, front-loaded with the core purpose, and every sentence adds meaningful content: the action, the dry_run default, the confirmation requirement, and the credential guarantee. There is no fluff or redundancy, making it highly concise and well-structured.

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?

The description is sufficient for a simple create operation. The output schema (present but not shown) likely covers return details, so the description need not explain them. It covers the critical safety behavior (dry_run) and credential handling. Missing error handling and edge cases, but given the existence of an output schema and the simplicity of the tool, it is reasonably complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It adds value for the dry_run parameter by explaining its default and the condition for setting it false, but it says nothing about owner, repo, title, body, or labels. While some names are self-explanatory, the description does not fully cover the parameter semantics expected at 0% coverage.

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 tool's action ('Create') and resource ('GitHub issue'), making it unambiguous and distinct from sibling tools like github_list_issues, which focuses on listing. The statement is direct and sufficient for an agent to understand what the tool does.

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 provides explicit usage guidance, particularly around the dry_run parameter: it defaults to true and instructs to set it false only upon explicit user confirmation. This is a clear when-to-use rule. While it does not explicitly name alternatives or when not to use this tool, the distinction from listing issues is obvious from the purpose statement.

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

github_list_issuesGithub List IssuesA

List GitHub issues/PRs for a repo by state and labels.

Requires OPS_MCP_GITHUB_TOKEN. Returns number, title, state, labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
stateNoopen
labelsNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the required OPS_MCP_GITHUB_TOKEN and the returned fields (number, title, state, labels), which is useful. However, it does not mention pagination, rate limits, or the read-only nature explicitly, leaving some behavioral gaps.

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?

Two sentences with no filler: the core action is front-loaded, followed by the operational prerequisite and a compact summary of the return fields. Every sentence earns its place.

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

Completeness3/5

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

With an output schema present, return values need less explanation. The description provides the key prerequisite and filter behavior, but because parameter coverage is 0%, details like per_page pagination and state value options are left undocumented. This is adequate for a simple list tool but has clear gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the input schema's lack of field documentation. It only mentions 'state and labels' as filters, leaving owner, repo, and per_page without added meaning, and does not clarify accepted state values or labels formatting.

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 opens with a specific verb and resource: 'List GitHub issues/PRs for a repo by state and labels.' It clearly distinguishes this tool from siblings like github_create_issue and github_pr_diff_summary by naming the listing behavior and the filter dimensions.

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 gives clear context for when the tool is appropriate: when a repo's issues or PRs need to be listed by state and labels. It does not explicitly name alternatives or exclusions, but no sibling performs the same listing function, so the context is sufficient.

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

github_pr_diff_summaryGithub Pr Diff SummaryC

Summarize a PR's changed files and diff stats without full patches.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
ownerYes
pull_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the burden. It mentions 'without full patches' but does not disclose potential rate limits, authentication requirements, or that the tool only returns metadata and not file contents. The behavior is partially transparent but incomplete.

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

Conciseness4/5

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

The description is a single sentence that is concise and front-loaded with the main action. However, it lacks a period at the end, which is minor. It earns high marks for brevity but could add a second sentence for usage guidance.

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?

The output schema exists but its content is not shown, so the description must explain what the tool returns, but it only says 'summary' without specifying the format. Given that parameters are undocumented and no annotations exist, the description is insufficient for reliable invocation, especially for an API-specific tool.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no details about the parameters owner, repo, or pull_number beyond their names. The input schema only gives types and requiredness, with no descriptions, so an agent must guess what values are valid (e.g., pull_number is an integer but no range or format is given).

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

Purpose4/5

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

The description clearly states the function: summarizing a PR's changed files and diff stats without full patches. It distinguishes itself from tools that might fetch full diffs or list issues, though it does not explicitly name sibling alternatives.

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?

The description implies when to use it: when you need a summary rather than full patches. However, it does not explicitly contrast with sibling tools like github_list_issues or other code tools, so the usage context is inferred rather than explicit.

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

postgres_explainPostgres ExplainA

EXPLAIN (FORMAT TEXT) a SELECT without ANALYZE / executing side effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden and does state the key trait: it runs EXPLAIN without ANALYZE and without executing side effects. It omits details like connection/auth, but the safety-critical distinction is present.

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 front-loaded sentence with no filler. Every phrase contributes: the command variant, the query type, and the no-execution guarantee.

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

Completeness3/5

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

The core behavior and no-side-effect guarantee are clear, and an output schema covers return values. However, because the schema has zero property descriptions, the optional params field is left completely unexplained, leaving a real completeness gap for a tool with two parameters.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain both parameters. It only implies that sql holds a SELECT statement and says nothing about params, such as whether params supplies bind values for placeholders like $1 or how they are passed. This is a significant gap.

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 names a specific operation (EXPLAIN with FORMAT TEXT) and the target resource (a SELECT). It also differentiates itself from executing the query by explicitly noting no ANALYZE / executing side effects, so an agent can distinguish it from postgres_query_readonly.

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 'without ANALYZE / executing side effects' phrase gives clear context that this tool is for obtaining query plans rather than running the query. It does not explicitly name postgres_query_readonly as the execution alternative or list exclusions, but the intended use is evident.

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

postgres_query_readonlyPostgres Query ReadonlyA

Run a parameterized SELECT against Postgres (DDL/DML rejected first).

Requires OPS_MCP_DATABASE_URL. Multi-statement and write SQL fail closed before any connection is opened.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
paramsNo
max_rowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so very well. It discloses the required environment variable, the fail-closed behavior, the rejection of DDL/DML and multi-statement SQL, and that this all happens before any connection is opened.

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

Conciseness4/5

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

The description is short and front-loaded, with the core action in the first line. There is minor redundancy between 'DDL/DML rejected first' and 'write SQL fail closed', but overall every sentence contributes useful safety or setup information.

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

Completeness3/5

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

The behavioral and safety aspects are well covered, and an output schema exists for return values. However, the tool has three parameters and zero schema descriptions, so the missing param semantics and row-limit behavior leave the definition merely adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only hints at parameterization without explaining the expected placeholder syntax, the shape of params, or the meaning of max_rows. This is a meaningful gap for an agent trying to call the tool correctly.

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 names a specific verb and resource: 'Run a parameterized SELECT against Postgres', and explicitly states that DDL/DML are rejected. This clearly separates it from write tools and from the sibling postgres_explain, which is for EXPLAIN output rather than general read-only querying.

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 makes it clear this tool is for read-only SELECT queries and explicitly rejects DDL/DML, multi-statement, and write SQL. It does not name an alternative tool such as postgres_explain, so it misses the explicit 'use this when, use that when' comparison, but the boundaries are otherwise clear.

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.

  1. 8 tool updatesv0.1.0
    • First observeddeploy_status
    • First observedfs_read_file
    • First observedfs_search
    • First observedgithub_create_issue
    • First observedgithub_list_issues
    • First observedgithub_pr_diff_summary
    • First observedpostgres_explain
    • First observedpostgres_query_readonly

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct resource and action: filesystem search/read, GitHub issues/PR summary, Postgres query/explain, and deployment status. Even the PR-related tools are clearly separated by list vs. diff-summary purpose.

Naming Consistency3/5

Names use consistent resource prefixes (fs_, github_, postgres_, deploy_) and many follow verb_noun, but github_pr_diff_summary and deploy_status are noun phrases without a verb, and postgres_query_readonly mixes verb/noun with an adjective. The pattern is readable but not uniform.

Tool Count5/5

Eight tools is a reasonable, focused set for an ops-oriented server spanning filesystem inspection, GitHub workflows, and read-only Postgres access. Each tool has a clear purpose and none feel redundant or superfluous.

Completeness4/5

The tool surface covers the main read-only investigation workflows: file lookup, GitHub issue triage and PR diff summaries, Postgres querying/explaining, and deployment status. Minor gaps exist such as no directory listing, no GitHub PR list endpoint, and no database schema introspection, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Connects AI assistants to GitHub repositories, pull requests, issues, commits, and code search while enabling repository visibility controls, CI/CD monitoring, sandboxed local filesystem access, and code quality/security analysis.
    13
    1
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    Enables coding agents to perform workspace-confined file operations, read-only Git inspection, and structured shell commands, while requiring out-of-band human approval for mutations and external executions and maintaining an audit trail.
    14
    3
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI coding agents to safely execute commands, run tests, and modify project files inside disposable, policy-enforced Docker sandboxes that are isolated from the host machine and its credentials.
    15
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to investigate incidents by safely querying PostgreSQL, triaging GitHub issues, retrieving ERP order data, and sending Slack alerts, with AST-validated SQL and human-in-the-loop safeguards.
    -