A collection of Dagger modules for platform engineering tasks including Terraform management, Databricks integration, AI agents, and database operations. Built using Dagger SDK for Python with LLM integration capabilities.
This is a collection of Dagger-based example pipelines, not a standalone MCP server. No explicit MCP tool registration, server initialization, or transport mechanism is visible in the provided source. Tools are inferred from async function definitions across multiple Python modules (main.py files in different Dagger examples). While individual functions have docstrings and some parameter annotations, they are Python functions decorated with @function/@object_type, not registered as MCP tools via tool definitions. Schemas are inferred from Python type hints (dagger.Secret, dagger.Directory, str) rather than formally declared JSON Schemas. Parameter descriptions exist but are often terse (10-50 chars), below the production baseline of ~72 chars. Error handling is absent, no recovery guidance or error categorization. Tools lack destructive/read-only annotations. This is educational example code, not a production MCP server.
Create a code suggestion for a PR using GitHub API.
Orchestrator Agent to Debug Unit Tests and propose fixes via GitHub PR suggestions.
Get the PR number and commit ID.
Run all unit tests and return the results.
Structure LLM Response into a ProposedCodeChange object using Azure OpenAI.
Runs `terraform apply` to apply the planned changes using Azure authentication. This function first ensures Terraform is initialized, then executes the apply step. The execution is done inside a container, securely injecting the necessary secrets.
Not an MCP server. Tools are Python async functions with @function/@object_type decorators, not registered as MCP tools. No visible MCP initialize/tool registration protocol. Cannot verify MCP-compliant tool definition format.
Input schemas not formally declared. Inferred from Python type hints (dagger.Secret, dagger.Directory, str) rather than JSON Schema.
Parameter descriptions are terse (10 - 50 chars). Baseline is ~72 chars. Examples: 'The GitHub repository in the format owner/repo' (52 chars for 'repo' param), 'The assignment to complete' (27 chars). LLMs need richer context about expected formats, constraints, and when to use each parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Ask an LLM a question based on a SQL table's contents.
Comments on the latest pull request authored by the authenticated user in the specified GitHub repository.
Executes Databricks operations using credentials and analyzes the results with an LLM.
Creates an Alpine container with Databricks CLI configured for OAuth M2M authentication. Deploys an asset bundle.
Creates an Alpine container with Databricks CLI configured for OAuth M2M authentication. Runs an asset bundle.
Runs `terraform plan` using Azure credentials stored as secrets. This function executes Terraform inside a container, securely passing in Azure authentication credentials. It returns the Terraform plan output for review.
Send a query to a PostgreSQL service and return the response.
Executes a Terraform job using credentials and a directory of Terraform configurations, then comments the AI-analyzed result on a GitHub PR.
No output schemas documented. Tools return str or inferred types (PrMetadataResult, ProposedCodeChange referenced in params but not defined in visible code). LLMs cannot plan downstream tool calls without knowing return fields.
No error handling guidance. No recovery suggestions, error classification, or actionable error messages. If a tool fails, the LLM has no context for retry, user escalation, or compensation.
Secrets passed as parameters (dagger.Secret type). While Dagger SDK handles Secret injection, in an MCP context this violates the pattern of server-side secret injection. Secrets should never appear as tool parameters visible to the agent.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools like 'terraform_agent', 'apply', 'databricks_asset_bundle_deploy' and 'CreatePrSuggestion' (WRITE ops) must be explicitly marked so agents know the action is irreversible.
GetPrMetadata, RunUnitTests, FixMyTestsAgent have no input parameters but descriptions reference 'PR Metadata' and 'Unit Tests' without specifying how the tool discovers which PR/repo/tests to operate on. Parameters are missing.
Naming uses PascalCase (GetPrMetadata, CreatePrSuggestion, FixMyTestsAgent) instead of snake_case verb_noun convention. LLMs parse tool names to infer intent, 'CreatePrSuggestion' is ambiguous (create what? a suggestion for what?). Should be 'create_pr_suggestion'.
Composite tools combine multiple concerns. 'terraform_agent' executes Terraform AND analyzes result AND comments on PR (3 concerns). 'databricks_agent' runs operations AND analyzes with LLM (2 concerns). Split into separate tools for composability.
Type 'dagger.Directory', 'dagger.Service', 'dagger.Secret' are SDK-specific. In MCP context, these would be converted to standard types (file path string, service URI, or managed secrets). No conversion logic visible.