Skip to main content

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 NameDescription
infra_list_connectorsGet list of available infrastructure services
infra_list_integrationsGet integrations for a specific infrastructure service
infra_list_accountsBrowse infrastructure accounts with pagination
infra_list_collectionsBrowse available collections with pagination
infra_get_collection_detailsRetrieve comprehensive collection information
infra_list_usersBrowse users in a collection with pagination
infra_get_user_detailsRetrieve detailed user information
infra_list_resourcesBrowse infrastructure resources with pagination
infra_get_resource_detailsRetrieve comprehensive resource information
infra_list_policiesBrowse access policies with pagination
infra_get_policy_detailsRetrieve detailed policy information
infra_list_rolesBrowse IAM roles with pagination
infra_get_role_detailsRetrieve 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 collection
  • 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,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 collection
  • user_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 collection
  • 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,-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 collection
  • resource_id (string, required): Unique identifier for the resource
  • parent_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 collection
  • 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,-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 collection
  • policy_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 collection
  • 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,-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 collection
  • role_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:

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 ID
  • COLLECTION_NOT_FOUND: Collection doesn't exist or no access
  • USER_NOT_FOUND: User doesn't exist
  • RESOURCE_NOT_FOUND: Resource not found
  • POLICY_NOT_FOUND: Policy doesn't exist
  • ROLE_NOT_FOUND: Role doesn't exist
  • RATE_LIMIT_EXCEEDED: API rate limit reached
  • UNAUTHORIZED: Invalid credentials or permissions