access-rules-create-access-rule
Creates a new access rule config for the given group_id.
Drive Opal's access platform from an agent: raise and approve access requests, edit who owns and reviews a resource, and pull the event log — all through the Opal API.
LABSCO SUMMARY
Read and write live behind the same connection here, and the write side reaches the settings that govern access itself — reviewers, reviewer stages, visibility, group membership. That makes the token choice the real decision: a read-only token turns this into an inventory and audit surface over apps, resources, groups and events, while a full-access one lets an agent approve a request or change who reviews a resource. Generate the narrower token first and widen it only for the flows that need it.
The Opal Security API exposed as tools, generated from its SDK. It covers the objects access management runs on — apps, resources, groups, bundles, owners, requests, tags and reviews — with reads and writes on each.
An Opal API token, generated in the Opal dashboard as an Admin under Settings, API Tokens — choose read-only when the agent should only look, and full-access only when it needs to create or change things, and set an expiry. The token is shown once and can be revoked from the same page. Node.js v20 or greater; it starts as npx -y --package opal-mcp -- mcp start --bearer-auth <YOUR_API_TOKEN>, or from the API_TOKEN environment variable. SERVER_URL defaults to https://api.opal.dev/v1, PORT to 32000 and LOG_LEVEL to info, and a Docker image and standalone binaries are provided as alternatives. MIT.
One command plus a key — npm add opal-mcp, then supply credentials
USE CASES
List the pending requests, read the one in question with its context, and approve it in the same conversation.
Read the resource, list its users and their access status, and check the tags and scoped role permissions attached to it.
Find the group, add the user, and confirm what that membership grants by reading the resources the group carries.
Create the bundle, add the resources and groups that make up the role, and set who can see it.
Read the current reviewers and stages on the resource or group, then set the ones that should be approving.
List the reviews already run, create the next one, and pull the event log for the period it covers.
List the connected apps and read the sync errors recorded since the last successful sync, rather than guessing why an object looks wrong.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
access-rules-create-access-ruleCreates a new access rule config for the given group_id.
access-rules-get-access-ruleReturns a list of access rule config given the group_id of the access rule.
access-rules-update-access-ruleUpdates the access rule config for the given group_id.
apps-get-appReturns an App object.
apps-get-appsReturns a list of App objects.
apps-get-sync-errorsReturns a list of recent sync errors that have occurred since the last successful sync.
bundles-add-bundle-groupAdds a group to a bundle.
bundles-add-bundle-resourceAdds a resource to a bundle.
bundles-create-bundleCreates a bundle.
bundles-delete-bundleDeletes a bundle.
bundles-get-bundleReturns a Bundle object.
bundles-get-bundle-groupsReturns a list of Group objects in a given bundle.
bundles-get-bundle-resourcesReturns a list of Resource objects in a given bundle.
bundles-get-bundle-visibilityGets the visibility of the bundle.
bundles-get-bundlesReturns a list of Bundle objects.
bundles-remove-bundle-groupRemoves a group from a bundle.
bundles-remove-bundle-resourceRemoves a resource from a bundle.
bundles-set-bundle-visibilitySets the visibility of the bundle.
bundles-update-bundleUpdates a bundle.
configuration-templates-create-configuration-templateCreates a configuration template.
configuration-templates-delete-configuration-templateDeletes a configuration template.
configuration-templates-get-configuration-templatesReturns a list of ConfigurationTemplate objects.
configuration-templates-update-configuration-templateUpdate a configuration template.
events-eventsReturns a list of Event objects.
group-bindings-create-group-bindingCreates a group binding.
group-bindings-delete-group-bindingDeletes a group binding.
group-bindings-get-group-bindingReturns a GroupBinding object.
group-bindings-get-group-bindingsReturns a list of GroupBinding objects.
group-bindings-update-group-bindingsBulk updates a list of group bindings.
groups-add-group-containing-groupCreates a new containing group.
groups-add-group-resourceAdds a resource to a group.
groups-add-group-userAdds a user to this group.
groups-create-groupCreates an Opal group or imports a remote group.
groups-delete-groupDeletes a group.
groups-delete-group-userRemoves a user's access from this group.
groups-get-groupReturns a Group object.
groups-get-group-containing-groupGets a specific containing group for a group.
groups-get-group-containing-groupsGets the list of groups that the group gives access to.
groups-get-group-message-channelsGets the list of audit and reviewer message channels attached to a group.
groups-get-group-on-call-schedulesGets the list of on call schedules attached to a group.
groups-get-group-resourcesGets the list of resources that the group gives access to.
groups-get-group-reviewer-stagesGets the list of reviewer stages for a group.
groups-get-group-reviewersGets the list of owner IDs of the reviewers for a group.
groups-get-group-tagsReturns all tags applied to the group.
groups-get-group-usersGets the list of users for this group.
groups-get-group-visibilityGets the visibility of this group.
groups-get-groupsReturns a list of groups for your organization.
groups-remove-group-containing-groupRemoves a containing group from a group.
groups-set-group-message-channelsSets the list of audit message channels attached to a group.
groups-set-group-on-call-schedulesSets the list of on call schedules attached to a group.
groups-set-group-resourcesSets the list of resources that the group gives access to.
groups-set-group-reviewer-stagesSets the list of reviewer stages for a group.
groups-set-group-reviewersSets the list of reviewers for a group.
groups-set-group-visibilitySets the visibility of this group.
groups-update-group-userUpdates a user's access level or duration in this group.
groups-update-groupsBulk updates a list of groups.
idp-group-mappings-delete-idp-group-mappingsDeletes an IdpGroupMapping object.
idp-group-mappings-get-idp-group-mappingsReturns the configured set of available IdpGroupMapping objects for an Okta app.
idp-group-mappings-update-idp-group-mappingsUpdates the list of available IdpGroupMapping objects for an Okta app.
message-channels-create-message-channelCreates a MessageChannel objects.
message-channels-get-message-channelGets a MessageChannel object.
message-channels-get-message-channelsReturns a list of MessageChannel objects.
non-human-identities-get-nhisReturns a list of non-human identities for your organization.
on-call-schedules-create-on-call-scheduleCreates a OnCallSchedule objects.
on-call-schedules-get-on-call-scheduleGets a OnCallSchedule object.
on-call-schedules-get-on-call-schedulesReturns a list of OnCallSchedule objects.
owners-create-ownerCreates an owner.
owners-delete-ownerDeletes an owner.
owners-get-ownerReturns an Owner object.
owners-get-owner-from-nameReturns an Owner object. Does not support owners with / in their name, use /owners?name=... instead.
owners-get-owner-usersGets the list of users for this owner, in escalation priority order if applicable.
owners-get-ownersReturns a list of Owner objects.
owners-set-owner-usersSets the list of users for this owner. If escalation is enabled, the order of this list is the escalation priority order of the users. If the owner has a source group, adding or removing users from this list won't be possible.
owners-update-ownersBulk updates a list of owners.
requests-approve-requestApprove an access request
requests-create-requestCreate an access request
requests-get-requestReturns a request by ID.
requests-get-requestsReturns a list of requests for your organization that is visible by the admin.
requests-get-requests-relayReturns a paginated list of requests using Relay-style cursor pagination.
resources-add-resource-nhiGives a non-human identity access to this resource.
resources-add-resource-userAdds a user to this resource.
resources-create-resourceCreates a resource. See here for details about importing resources.
resources-delete-resourceDeletes a resource.
resources-delete-resource-nhiRemoves a non-human identity's direct access from this resource.
resources-delete-resource-userRemoves a user's direct access from this resource.
resources-get-resourceRetrieves a resource.
resources-get-resource-message-channelsGets the list of audit message channels attached to a resource.
resources-get-resource-nhisGets the list of non-human identities with access to this resource.
resources-get-resource-reviewer-stagesGets the list reviewer stages for a resource.
resources-get-resource-reviewersGets the list of owner IDs of the reviewers for a resource.
resources-get-resource-scoped-role-permissionsReturns all the scoped role permissions that apply to the given resource. Only OPAL_SCOPED_ROLE resource type supports this field.
resources-get-resource-tagsReturns all tags applied to the resource.
resources-get-resource-userReturns information about a specific user's access to a resource.
resources-get-resource-usersGets the list of users for this resource.
resources-get-resource-visibilityGets the visibility of this resource.
resources-get-resourcesReturns a list of resources for your organization.
resources-resource-user-access-status-retrieveGet user's access status to a resource.
resources-set-resource-message-channelsSets the list of audit message channels attached to a resource.
resources-set-resource-reviewer-stagesSets the list of reviewer stages for a resource.
resources-set-resource-reviewersSets the list of reviewers for a resource.
resources-set-resource-scoped-role-permissionsSets all the scoped role permissions on an OPAL_SCOPED_ROLE resource.
resources-set-resource-visibilitySets the visibility of this resource.
resources-update-resource-userUpdates a user's access level or duration on this resource.
resources-update-resourcesBulk updates a list of resources.
sessions-sessionsReturns a list of Session objects.
tags-add-group-tagApplies a tag to a group.
tags-add-resource-tagApplies a tag to a resource.
tags-add-user-tagApplies a tag to a user.
tags-create-tagCreates a tag with the given key and value.
tags-delete-tag-by-IDUNSTABLE. May be removed at any time. Deletes a tag with the given id.
tags-get-tagGets a tag with the given key and value.
tags-get-tag-by-IDUNSTABLE. May be removed at any time. Gets a tag with the given id.
tags-get-tagsReturns a list of tags created by your organization.
tags-remove-group-tagRemoves a tag from a group.
tags-remove-resource-tagRemoves a tag from a resource.
tags-remove-user-tagRemoves a tag from a user.
uars-create-uarStarts a User Access Review.
uars-get-UA-rsReturns a list of UAR objects.
uars-get-uarRetrieves a specific UAR.
users-get-user-tagsReturns all tags applied to the user.
users-get-usersReturns a list of users for your organization.
users-userRetrieves detailed user information from Opal. This endpoint is designed to fetch user details by either user ID (UUID) or email address. The endpoint follows a strict precedence rule where user_id takes priority over email if both are provided.
Key Implementation Notes:
Authentication:
BEFORE YOU INSTALL
122 tools when we connected. getGroupReviewers, setGroupReviewers, getGroupReviewerStages, setGroupReviewerStages, getRequestsRelay and resourceUserAccessStatusRetrieve are deprecated but still registered; getTagByID and deleteTagByID are marked unstable.
Both documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 122 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npm add opal-mcp{
"mcpServers": {
"OpalMcp": {
"command": "npx",
"args": [
"-y",
"--package",
"opal-mcp",
"--",
"mcp",
"start",
"--bearer-auth",
"<YOUR_API_TOKEN>"
]
}
}
}