A Model Context Protocol (MCP) server that provides access to IBM OpenPages REST API V2 (version 9.1). This server enables AI assistants to interact with IBM OpenPages GRC (Governance, Risk, and Compliance) platform.
┌─────────────────────────────────────────────────────────────────┐
│ AI Platforms (MCP Clients) │
├─────────────────┬─────────────────┬─────────────────────────────┤
│ Claude Desktop │ Watsonx │ Langflow │
│ │ Orchestrate │ (Python MCP Client) │
└────────┬────────┴────────┬────────┴────────┬────────────────────┘
│ │ │
│ MCP Protocol (stdio/JSON-RPC) │
│ │ │
└─────────────────┼─────────────────┘
│
▼
┌─────────────────────────────────┐
│ IBM OpenPages MCP Server │
│ (Node.js/TypeScript) │
│ │
│ • 18 MCP Tools │
│ • Authentication Handler │
│ • Error Management │
│ • Request/Response Mapping │
└────────────┬────────────────────┘
│
│ HTTPS/REST API
│
▼
┌─────────────────────────────────┐
│ IBM OpenPages Platform │
│ REST API V2 (v9.1) │
│ │
│ • GRC Objects (CRUD) │
│ • Query & Search │
│ • Workflows │
│ • Configuration │
│ • Associations │
└─────────────────────────────────┘
- MCP Server: Implements Model Context Protocol, exposing 18 tools for OpenPages operations
- AI Platforms: Connect via native MCP protocol (stdio communication)
- OpenPages API: Backend GRC platform accessed via REST API V2
- Authentication: Supports Basic Auth, Bearer Token, and API Key methods
This MCP server exposes the following IBM OpenPages capabilities:
- Get Object: Retrieve detailed information about GRC objects
- Create Object: Create new GRC objects (Issues, Risks, Controls, etc.)
- Update Object: Modify existing GRC objects
- Delete Object: Soft delete GRC objects
- Query: Execute SQL-like queries on GRC content
- Search: Global search across all GRC content with ranking
- Get Object Types: List all available GRC object types
- Get Object Type: Get detailed schema for a specific type
- Get Folders: Access folder hierarchy
- Get Folder Resources: List contents of folders
- Get Workflows: List workflow definitions
- Get Workflow Instance: Get workflow status
- Transition Workflow: Move objects through workflow states
- Tags: Manage and retrieve tags
- Currencies: Access currency configurations
- Profiles: Get user profile information
- Processes: Monitor long-running processes
- Get Associations: Retrieve parent/child relationships between objects
- Clone this repository
- Install dependencies:
npm install- Build the TypeScript code:
npm run buildConfigure the server using environment variables:
# Required: OpenPages server URL
export OPENPAGES_BASE_URL="https://your-server.com/opgrc/api"
# Authentication Option 1: Basic Auth
export OPENPAGES_USERNAME="your-username"
export OPENPAGES_PASSWORD="your-password"
# Authentication Option 2: Bearer Token
export OPENPAGES_BEARER_TOKEN="your-jwt-token"This server uses the Model Context Protocol (MCP) standard and can be integrated with multiple AI platforms using the same native MCP protocol.
All platforms use the same MCP configuration format:
{
"mcpServers": {
"openpages": {
"command": "node",
"args": ["/path/to/mcp-openpages-server/dist/index.js"],
"env": {
"OPENPAGES_BASE_URL": "https://your-server.com/opgrc/api",
"OPENPAGES_USERNAME": "your-username",
"OPENPAGES_PASSWORD": "your-password"
}
}
}
}Configuration file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the MCP configuration above to this file.
MCP Native Integration:
If Watsonx Orchestrate supports MCP protocol, use the same configuration as Claude Desktop. Consult IBM Watsonx documentation for the configuration file location.
Alternative: If MCP is not yet supported, see MCP_NATIVE_INTEGRATION.md for Python MCP client implementation.
MCP Native Integration:
Use the Python MCP client provided in MCP_NATIVE_INTEGRATION.md to connect Langflow to the MCP server. This allows Langflow to use all 18 MCP tools natively.
Example:
from mcp_client import create_openpages_tools
tools, client = create_openpages_tools()
# Use tools in your Langflow componentsAny application that supports the Model Context Protocol can connect to this server using the standard MCP configuration.
For platforms that don't support MCP yet, a REST API wrapper is available:
npm run rest # Starts REST API on port 3000See INTEGRATION_GUIDE.md for REST API details.
Get a GRC Object by ID or path.
Parameters:
id(required): Object ID or pathinclude_associations: Include parent/child associations (none/both/parent/child)include_workflow: Include workflow information (boolean)
Example:
Get object with ID 12345 including all associations
Create a new GRC Object.
Parameters:
type_definition_id(required): Object type (e.g., "SOXIssue")name(required): Object namedescription: Object descriptionprimary_parent_id: Parent object ID or pathfields: Array of field objects with id/name and value
Example:
Create a new SOXIssue named "Security Vulnerability" with description "Critical security issue found"
Update an existing GRC Object.
Parameters:
id(required): Object ID or pathname: Updated namedescription: Updated descriptionfields: Array of fields to update
Soft delete a GRC Object.
Parameters:
id(required): Object ID or path
Execute SQL-like queries on GRC content.
Parameters:
statement(required): SQL-like query (e.g., "SELECT [Name] FROM [SOXBusEntity]")offset: Pagination offset (default: 0)limit: Maximum resultscase_insensitive: Case-insensitive string comparison (boolean)
Example:
Query all business entities: SELECT [Name], [Description] FROM [SOXBusEntity] WHERE [Name] LIKE '%Finance%'
Global search across GRC content.
Parameters:
q(required): Search termstypes: Comma-delimited list of object types to searchrange: Result range (e.g., "0-9")
Example:
Search for "audit findings" in SOXIssue and SOXRisk types
List all GRC Object Types.
Parameters:
include_field_definitions: Include field definitions (boolean)
Get detailed information about a specific Object Type.
Parameters:
type_id(required): Object Type ID or system nameinclude_field_definitions: Include field definitions (boolean)
Get the root folder resource.
Get specific folder information.
Parameters:
folder_id(required): Folder ID
Get all resources in a folder.
Parameters:
folder_id(required): Folder IDinclude_containees: Resource types (folder/grcobject/both)offset: Pagination offsetlimit: Maximum results per page
Get workflow process definitions.
Parameters:
object_type: Filter by object type
Get workflow instance data.
Parameters:
id(required): Workflow instance ID
Transition a GRC object through workflow.
Parameters:
id(required): Workflow instance IDtransition(required): Transition action name
Get object associations.
Parameters:
id(required): Object ID or pathassociation_type: Filter by parent/child
Get system tags.
Parameters:
only_enabled: Return only enabled tags (boolean)
Get configured currencies.
Parameters:
only_enabled: Return only enabled currencies (boolean)
Get all user profiles.
Get process instances.
Parameters:
process_type_id: Filter by process typestatus: Filter by statuscreated_by: Filter by creator
Create a new SOXRisk object named "Data Breach Risk" with high severity in the IT Security folder
Query all open issues created in the last 30 days with high priority
Search for all controls related to "access management" in the SOXControl type
Get the workflow status for issue ID 12345 and transition it to "In Review" state
This MCP server implements the following IBM OpenPages REST API V2 endpoints:
- ✅ Contents (GRC Objects) - CRUD operations
- ✅ Query Service - SQL-like queries
- ✅ Search Service - Global search
- ✅ Types - Object type metadata
- ✅ Folders - Folder management
- ✅ Workflows - Workflow operations
- ✅ Configuration - Tags, Currencies, Profiles
- ✅ Associations - Object relationships
- ✅ Processes - Long-running processes
- This server requires network access to your IBM OpenPages instance
- Authentication credentials must be properly configured
- Some operations require specific permissions in OpenPages
- The server supports OpenPages version 9.1 (may work with other versions)
- Store credentials securely using environment variables
- Use HTTPS for all OpenPages connections
- Consider using bearer tokens instead of basic authentication
- Limit MCP server access to trusted AI assistants only
- Review OpenPages audit logs regularly
- Verify
OPENPAGES_BASE_URLis correct - Check network connectivity to OpenPages server
- Ensure SSL certificates are valid
- Verify username/password or bearer token
- Check user permissions in OpenPages
- Ensure account is not locked
- Check OpenPages version compatibility
- Review error messages in responses
- Consult OpenPages documentation for specific error codes
To run in development mode:
npm run devTo build:
npm run buildMIT
For issues related to:
- MCP Server: Open an issue in this repository
- IBM OpenPages API: Consult IBM OpenPages documentation
- MCP Protocol: See Model Context Protocol documentation
- MCP_NATIVE_INTEGRATION.md - MCP native integration for Watsonx Orchestrate and Langflow
- QUICKSTART.md - 5-minute quick start guide
- USAGE_GUIDE.md - Comprehensive usage examples and best practices
- INTEGRATION_GUIDE.md - Alternative REST API integration (if MCP not supported)
- CHANGELOG.md - Version history and roadmap