MCP server exposing Minder's read-only operations via streaming HTTP transport. This server allows LLM-based tools to interact with Minder for security policy management, repository monitoring, and compliance evaluation.
Primary commands (operate on entire project):
task build- Build everything (Go binary + UI)task lint- Lint everything (Go + UI)task fmt- Format everything (Go + UI)task test- Run all teststask check- Run lint + test + buildtask run- Run server locally
Specific targets:
task build:ui- Build TypeScript dashboard onlytask lint:go/task lint:ui- Lint specific codebasetask fmt:go/task fmt:ui- Format specific codebasetask lint:go:fix- Auto-fix Go lint issuestask dev- Run server with auto-rebuild (requiresair)task dev:ui- Run UI dev server with hot reload
IMPORTANT: You MUST use the Taskfile for building and testing this code base.
cmd/minder-mcp/- Entry pointinternal/config/- Environment configurationinternal/logging/- Structured JSON logging with sloginternal/minder/- gRPC client wrapper + token refreshinternal/middleware/- Auth token handlinginternal/tools/- MCP tool implementationsinternal/resources/- MCP resource handlers (compliance dashboard)ui/compliance-dashboard/- TypeScript frontend for MCP Apps dashboard
- Names:
minder_<action>_<resource>(snake_case) - All tools are read-only
- Use
mcp.WithTitleAnnotation()for display titles - Use
mcp.WithReadOnlyHintAnnotation(true)for all tools - Use
mcp.Enum()for constrained values - Use
mcp.Title()for parameter display names
The ui/compliance-dashboard/ directory contains a TypeScript frontend served as an MCP resource:
- Uses
@modelcontextprotocol/ext-appsSDK for iframe ↔ host communication - Built with Vite into a single HTML file embedded in the Go binary via
go:embed - Resource URI:
ui://minder/compliance-dashboard
When modifying the dashboard:
- Run
task lint:uiandtask fmt:uibefore committing - Use
task dev:uifor hot-reload development - The
task buildcommand automatically builds UI first - HTML output goes to
internal/resources/dist/index.html(not committed to git)
- Never use
git add -A - Add specific files when staging