Model Context Protocol (MCP)
Unizo offers an MCP server that integrates public cloud infrastructure platforms with any LLM provider supporting the MCP protocol. This enables your AI agent to perform resource management, analyze infrastructure patterns, and automate cloud operations across AWS, Azure, Google Cloud, and other providers via a single MCP server.
Supported Tools & Use Cases
The following tools are available in the Public Cloud (Infra) MCP Server:
| Tool Name | Description |
|---|---|
| infra_list_connectors | Get list of available infrastructure services |
| infra_list_integrations | Get integrations for a specific infrastructure service |
| infra_list_accounts | Browse infrastructure accounts with pagination |
| infra_list_collections | Browse available collections with pagination |
| infra_get_collection_details | Retrieve comprehensive collection information |
| infra_list_users | Browse users in a collection with pagination |
| infra_get_user_details | Retrieve detailed user information |
| infra_list_resources | Browse infrastructure resources with pagination |
| infra_get_resource_details | Retrieve comprehensive resource information |
| infra_list_policies | Browse access policies with pagination |
| infra_get_policy_details | Retrieve detailed policy information |
| infra_list_roles | Browse IAM roles with pagination |
| infra_get_role_details | Retrieve detailed role information |
Tool Reference
Service Discovery Tools
infra_list_connectors
Get list of available infrastructure services
Parameters: None
Returns: List of available infrastructure services (e.g., AWS, Azure, GCP)
Example Response:
[{ "name": "aws" }, { "name": "azure" }, { "name": "google" }]
infra_list_integrations
Get integrations for a specific infrastructure service
Parameters:
service(string, required): Name of the service (e.g., "aws", "azure", "gcp")
Returns: List of integrations available for the specified service
Example Response:
[
{
"id": "integration-123",
"name": "Production AWS Integration"
},
{
"id": "integration-456",
"name": "Development Azure Subscription"
}
]
Account Management Tools
infra_list_accounts
Browse infrastructure accounts with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)offset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,-createdAt')
Returns: Paginated list of accounts
Example Response:
{
"status": "success",
"message": "Retrieved 5 accounts",
"data": {
"accounts": [
{
"id": "account-123",
"name": "Production AWS Account",
"login": "prod-aws-account",
"url": "https://aws.amazon.com/console",
"avatarUrl": "https://example.com/avatars/aws-prod.png",
"description": "Main production AWS account for enterprise workloads",
"type": "aws_account",
"changeLog": {
"createdDateTime": "2024-01-10T08:00:00Z",
"lastUpdatedDateTime": "2024-09-15T14:30:00Z",
"createdBy": {
"id": "user-456",
"firstName": "Jane",
"lastName": "Smith"
}
}
},
{
"id": "account-456",
"name": "Development Azure Subscription",
"login": "dev-azure-sub",
"url": "https://portal.azure.com",
"avatarUrl": "https://example.com/avatars/azure-dev.png",
"description": "Development environment for Azure resources",
"type": "azure_subscription",
"changeLog": {
"createdDateTime": "2024-02-20T10:15:00Z",
"lastUpdatedDateTime": "2024-09-10T09:45:00Z"
}
}
],
"pagination": { "total": 5, "offset": 0, "limit": 20 },
"total_count": 5
}
}
Collection Management Tools
infra_list_collections
Browse available collections with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)offset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,-createdAt')
Returns: Paginated list of collections
Example Response:
{
"status": "success",
"message": "Retrieved 3 collections",
"data": {
"collections": [
{
"id": "collection-123",
"name": "Production Environment",
"description": "Production infrastructure resources",
"type": "aws_account",
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
],
"pagination": {
"total": 3,
"offset": 0,
"limit": 20
},
"total_count": 3
}
}
infra_get_collection_details
Get detailed information about a specific collection
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collection
Returns: Comprehensive collection information
Example Response:
{
"status": "success",
"message": "Retrieved collection collection-123",
"data": {
"collection": {
"id": "collection-123",
"name": "Production Environment",
"description": "Production infrastructure resources",
"type": "aws_account",
"metadata": {
"accountId": "123456789012",
"region": "us-east-1"
},
"changeLog": {
"createdDateTime": "2024-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
}
}
}
User Management Tools
infra_list_users
Browse users in a collection with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionoffset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,emailAddress')
Returns: Paginated list of users
Example Response:
{
"status": "success",
"message": "Retrieved 8 users",
"data": {
"users": [
{
"id": "user-123",
"name": "John Doe",
"emailAddress": "john.doe@company.com",
"status": "ACTIVE",
"changeLog": {
"createdDateTime": "2024-01-10T08:00:00Z",
"lastUpdatedDateTime": "2024-09-02T08:00:00Z"
}
}
],
"pagination": {
"total": 8,
"offset": 0,
"limit": 20
},
"collection_id": "collection-123",
"total_count": 8
}
}
infra_get_user_details
Get detailed information about a specific user
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionuser_id(string, required): Unique identifier for the user
Returns: Comprehensive user information
Example Response:
{
"status": "success",
"message": "Retrieved user user-123",
"data": {
"user": {
"id": "user-123",
"name": "John Doe",
"emailAddress": "john.doe@company.com",
"status": "ACTIVE",
"isAdmin": true,
"permissions": ["AdministratorAccess"],
"groups": ["Administrators", "Developers"],
"mfaEnabled": true,
"changeLog": {
"createdDateTime": "2024-01-10T08:00:00Z",
"lastUpdatedDateTime": "2024-09-01T10:00:00Z"
}
},
"collection_id": "collection-123"
}
}
Resource Management Tools
infra_list_resources
Browse infrastructure resources with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionoffset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,-state')parent_resource_id(string, optional): Filter by parent resource ID (UUID format)
Returns: Paginated list of resources
Example Response:
{
"status": "success",
"message": "Retrieved 42 resources",
"data": {
"resources": [
{
"id": "resource-123",
"name": "web-server-01",
"type": "EC2Instance",
"state": "running",
"region": "us-east-1",
"tags": {
"Environment": "Production",
"Application": "WebApp"
},
"metadata": {
"instanceType": "t3.medium",
"publicIp": "54.123.45.67"
},
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z"
}
}
],
"pagination": {
"total": 42,
"offset": 0,
"limit": 20
},
"collection_id": "collection-123",
"total_count": 42
}
}
infra_get_resource_details
Get detailed information about a specific resource
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionresource_id(string, required): Unique identifier for the resourceparent_resource_id(string, optional): Parent resource ID for hierarchical resources (UUID format)
Returns: Comprehensive resource information
Example Response:
{
"status": "success",
"message": "Retrieved resource resource-123",
"data": {
"resource": {
"id": "resource-123",
"name": "web-server-01",
"type": "EC2Instance",
"state": "running",
"region": "us-east-1",
"availabilityZone": "us-east-1a",
"tags": {
"Environment": "Production",
"Application": "WebApp"
},
"metadata": {
"instanceType": "t3.medium",
"publicIp": "54.123.45.67",
"privateIp": "10.0.1.25",
"vpcId": "vpc-123456",
"subnetId": "subnet-789012"
},
"changeLog": {
"createdDateTime": "2024-08-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-10T15:45:00Z",
"createdBy": {
"id": "user-789",
"firstName": "Alice",
"lastName": "Johnson"
}
}
},
"collection_id": "collection-123"
}
}
Policy Management Tools
infra_list_policies
Browse access policies with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionoffset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,-effect')
Returns: Paginated list of policies
Example Response:
{
"status": "success",
"message": "Retrieved 15 policies",
"data": {
"policies": [
{
"id": "policy-123",
"name": "S3ReadOnlyAccess",
"description": "Provides read-only access to S3 buckets",
"type": "IAM",
"attachmentCount": 5,
"changeLog": {
"createdDateTime": "2024-02-01T10:00:00Z",
"lastUpdatedDateTime": "2024-08-15T14:30:00Z"
}
}
],
"pagination": {
"total": 15,
"offset": 0,
"limit": 20
},
"collection_id": "collection-123",
"total_count": 15
}
}
infra_get_policy_details
Get detailed information about a specific policy
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionpolicy_id(string, required): Unique identifier for the policy
Returns: Comprehensive policy information
Example Response:
{
"status": "success",
"message": "Retrieved policy policy-123",
"data": {
"policy": {
"id": "policy-123",
"name": "S3ReadOnlyAccess",
"description": "Provides read-only access to S3 buckets",
"type": "IAM",
"attachmentCount": 5,
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": "*"
}
]
},
"changeLog": {
"createdDateTime": "2024-02-01T10:00:00Z",
"lastUpdatedDateTime": "2024-08-15T14:30:00Z",
"createdBy": {
"id": "user-456",
"firstName": "Jane",
"lastName": "Smith"
}
}
},
"collection_id": "collection-123"
}
}
Role Management Tools
infra_list_roles
Browse IAM roles with pagination and sorting
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionoffset(integer, optional): Number of items to skip (default: 0)limit(integer, optional): Maximum number of items to return (default: 20, max: 100)sort(string, optional): Sort criteria (e.g., 'name,-created_at')
Returns: Paginated list of roles
Example Response:
{
"status": "success",
"message": "Retrieved 12 roles",
"data": {
"roles": [
{
"id": "role-123",
"name": "EC2AdminRole",
"description": "Administrative access to EC2 instances",
"type": "Service",
"trustRelationships": ["ec2.amazonaws.com"],
"attachedPolicies": 3,
"changeLog": {
"createdDateTime": "2024-03-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-05T11:20:00Z"
}
}
],
"pagination": {
"total": 12,
"offset": 0,
"limit": 20
},
"collection_id": "collection-123",
"total_count": 12
}
}
infra_get_role_details
Get detailed information about a specific role
Parameters:
integration_id(string, required): Unique identifier for the integration (UUID format)collection_id(string, required): Unique identifier for the collectionrole_id(string, required): Unique identifier for the role
Returns: Comprehensive role information
Example Response:
{
"status": "success",
"message": "Retrieved role role-123",
"data": {
"role": {
"id": "role-123",
"name": "EC2AdminRole",
"description": "Administrative access to EC2 instances",
"type": "Service",
"arn": "arn:aws:iam::123456789012:role/EC2AdminRole",
"trustRelationships": ["ec2.amazonaws.com"],
"attachedPolicies": [
{
"id": "policy-456",
"name": "AmazonEC2FullAccess"
}
],
"inlinePolicies": [],
"maxSessionDuration": 3600,
"changeLog": {
"createdDateTime": "2024-03-01T09:00:00Z",
"lastUpdatedDateTime": "2024-09-05T11:20:00Z",
"createdBy": {
"id": "user-123",
"firstName": "John",
"lastName": "Doe"
}
}
},
"collection_id": "collection-123"
}
}
Installation
Prerequisites
- A Unizo API key
- An active Infrastructure integration (AWS, Azure, GCP, or other cloud provider)
- Node.js v20 or higher
MCP Configuration
Here is an example configuration for setting up the Unizo Infrastructure MCP server:
{
"mcpServers": {
"unizo": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.unizo.ai/mcp",
"--header",
"apikey:${UNIZO_API_KEY}",
"--header",
"x-mcp-scopes:infra"
],
"env": {
"UNIZO_API_KEY": "your_api_key"
}
}
}
}
Client Setup
For detailed setup instructions with specific AI clients:
Environment Variables
The following environment variables are required:
UNIZO_API_KEY: Your Unizo API key Your Unizo API key
Error Handling
All tools return errors in a consistent format:
{
"error": {
"code": "COLLECTION_NOT_FOUND",
"message": "Resource 'vm-abc123' not found"
}
}
Common Error Codes
INTEGRATION_NOT_FOUND: Invalid integration IDCOLLECTION_NOT_FOUND: Collection doesn't exist or no accessUSER_NOT_FOUND: User doesn't existRESOURCE_NOT_FOUND: Resource not foundPOLICY_NOT_FOUND: Policy doesn't existROLE_NOT_FOUND: Role doesn't existRATE_LIMIT_EXCEEDED: API rate limit reachedUNAUTHORIZED: Invalid credentials or permissions