Install
$ agentstack add skill-wyre-technology-msp-claude-plugins-security ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
CIPP Security — Conditional Access & Named Locations
Read-only access to a tenant's Conditional Access policy graph and named-location list. Use as input to security posture reviews and to detect tenants drifting from MSP baseline policies. CIPP doesn't expose CA write operations through MCP — apply policy changes via CIPP standards or the CIPP UI.
Tools
cipp_list_conditional_access_policies
cipp_list_conditional_access_policies(tenantFilter='contoso.onmicrosoft.com')
Returns every CA policy with displayName, state (enabled / disabled / enabledForReportingButNotEnforced), conditions (users, apps, locations, platforms, sign-in risk), and grantControls (MFA, compliant device, terms of use, etc).
cipp_list_named_locations
cipp_list_named_locations(tenantFilter='contoso.onmicrosoft.com')
Returns named locations: IP ranges (trusted/untrusted) and country-based locations. These are the building blocks CA policies reference for location-based controls.
What to look for in a CA review
| Finding | Why it matters | |---------|----------------| | Zero policies in enabled state | Tenant has no CA enforcement at all — a baseline enabledForReportingButNotEnforced doesn't block anything | | MFA not required for "All cloud apps" | A baseline policy is missing or scoped too narrowly | | Policies excluding the entire admin role | Common configuration mistake; admins should require more MFA, not less | | Trusted location includes home/coffee-shop IPs | Named-location bloat creates exception paths for attackers | | legacy authentication not blocked | Basic auth bypasses MFA entirely; should be blocked tenant-wide | | Reporting-only policies older than 30 days | Should have been promoted to enabled or removed |
Workflow patterns
Tenant CA baseline check
policies = cipp_list_conditional_access_policies(tenantFilter)
enabled = [p for p in policies if p['state'] == 'enabled']
mfa_for_all_apps = any(
p for p in enabled
if 'mfa' in p.get('grantControls', {}).get('builtInControls', [])
and 'All' in p.get('conditions', {}).get('applications', {}).get('includeApplications', [])
)
If mfa_for_all_apps is false, the tenant lacks the baseline "MFA for everything" policy that every MSP should ship as a standard.
Portfolio drift detection
Run cipp_list_conditional_access_policies per tenant and compare the policy fingerprint (display names + state + grant controls) against the MSP's golden baseline. Flag tenants where any baseline policy is missing or disabled.
Caveats
- CA write operations (create/edit/delete) are not exposed via MCP. Use CIPP standards (
cipp_run_standards_checkand the standards UI) to deploy policy templates across tenants, or do it manually via the CIPP web UI. - Named locations are a trust amplifier — review them as carefully as policies. A misconfigured trusted IP range can quietly exempt entire networks from MFA.
enabledForReportingButNotEnforcedlooks like coverage in dashboards but enforces nothing. Always checkstate == 'enabled'for actual enforcement.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: wyre-technology
- Source: wyre-technology/msp-claude-plugins
- License: Apache-2.0
- Homepage: https://mcp.wyre.ai/getting-started/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.