Maester MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAESTER_PWSH | No | PowerShell executable (default pwsh) | pwsh |
| AZURE_CLIENT_ID | No | App registration client ID | |
| AZURE_TENANT_ID | No | Entra tenant ID | |
| MAESTER_DRIFT_ROOT | No | Baseline folder for -DriftRoot drift detection | |
| MAESTER_TESTS_PATH | No | Tests folder (default ~/maester-tests) | ~/maester-tests |
| AZURE_CLIENT_SECRET | No | App registration client secret | |
| MAESTER_RESULTS_PATH | No | Where result JSON/MD/HTML files are written | |
| AZURE_USE_MANAGED_IDENTITY | No | Set to 'true' for Azure-hosted (no secret) | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_maester_testsA | Run Maester 2.2 security tests against your Microsoft 365 / Entra tenant. Returns a pass/fail summary and results file paths. Scope with tags and services. Takes 2–10 min depending on breadth. |
| audit_ai_agentsA | Audit the organisation's AI attack surface using Maester's AIAgent checks (MT.1113–MT.1122): risky Copilot Studio agent sharing, missing agent authentication, risky HTTP config, AI-driven email exfiltration, MCP server tools that need review, hard-coded credentials in topics, dormant/orphaned agents, plus high agent-risk sign-ins. Requires the Dataverse service. Use this to let an AI agent police the org's other agents and MCP servers. |
| get_security_posture_summaryA | Parse a results file into a structured summary: overall pass rate, per-category breakdown, critical/high failures sorted first, and top failures. Good first call after run_maester_tests. |
| get_failed_testsA | List all failed tests from a results file with descriptions and remediation, optionally filtered by category tag. |
| get_test_detailA | Get full details — description, result, remediation, help URL, severity — for one test by ID. |
| run_ca_whatifA | Simulate a user sign-in against all Conditional Access policies via the Graph evaluate API. Returns which policies apply, block, or grant. |
| merge_tenant_resultsA | Merge multiple per-tenant Maester result files into a single multi-tenant HTML report (for MSPs / multi-tenant orgs). Wraps Merge-MtMaesterResult + Get-MtHtmlReport. |
| list_available_tagsA | List every test tag available in the installed test suite via Get-MtTestInventory. Use these to scope run_maester_tests. |
| update_maester_testsA | Update the Maester module and test files to the latest versions, and report the resulting module version. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool serves a distinct purpose: running tests, auditing AI agents, analyzing results at different granularities, simulating CA, merging results, listing tags, and updating the module. Even overlapping functions like run_maester_tests and audit_ai_agents are clearly differentiated by scope and description.
All tool names follow a consistent verb_noun pattern: run_, audit_, get_, list_, merge_, update_. No mixed conventions or vague verbs.
9 tools is well-scoped for a security testing and results analysis server. Each tool covers a necessary step in the workflow without redundancy, and the count is within the ideal 3–15 range.
The tool set covers the full lifecycle: installing/updating tests, listing available tags, running tests (including a specialized AI audit), simulating CA policies, parsing results, fetching failures and details, and merging multi-tenant outputs. No obvious gaps for the stated domain.