Skip to main content

Model Context Protocol (MCP)

Early Access

Try our newest feature! Only available through reach out. Contact us to join the early access program and get priority support.

Unizo offers an MCP server that integrates SCM platforms with any LLM provider supporting the MCP protocol. This enables your AI agent to perform repository operations across GitHub, GitLab, Bitbucket, and Azure DevOps via a single MCP server.

Supported Tools & Use Cases

The following tools are available in the SCM MCP Server:

Tool NameDescription
list_servicesGet list of available SCM services/providers
list_integrationsGet integrations for a specific service
list_organizationsBrowse SCM organizations
get_organizationGet details for a specific organization
list_repositoriesBrowse repositories within an organization
get_repositoryGet details for a specific repository
list_branchesBrowse branches within a repository
get_branchGet details for a specific branch
list_commitsBrowse commit history for a repository
get_commitGet details for a specific commit
list_pull_requestsBrowse pull requests for a repository
get_pull_requestGet details for a specific pull request
create_pull_requestCreate new pull requests
update_pull_requestUpdate existing pull requests

Tool Reference

list_services

Get list of available SCM services/providers

Parameters:

  • None

Returns:
List of available SCM services (e.g., GitHub, GitLab, Bitbucket)

list_integrations

Get integrations for a specific service

Parameters:

  • service (string, required): Service name to get integrations for

Returns:
List of integrations available for the specified service

list_organizations

Browse SCM organizations

Parameters:

  • integration_id (string, optional): Integration ID to use
  • offset (integer, optional, default: 0)
  • limit (integer, optional, default: 20)

Returns:
List of SCM organizations with pagination information

get_organization

Get details for a specific organization

Parameters:

  • organization_id (string, required)
  • integration_id (string, optional)

Returns:
Organization details or error if not found

list_repositories

Browse repositories within an organization

Parameters:

  • organization_id (string, required)
  • integration_id (string, optional)
  • offset (integer, optional, default: 0)
  • limit (integer, optional, default: 20)

Returns:
List of repositories for the organization

get_repository

Get details for a specific repository

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • integration_id (string, optional)

Returns:
Repository details or error if not found

list_branches

Browse branches within a repository

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • integration_id (string, optional)
  • offset (integer, optional, default: 0)
  • limit (integer, optional, default: 20)
  • sort (string, optional): Field to sort by

Returns:
List of branches for the repository

get_branch

Get details for a specific branch

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • branch_id (string, required)
  • integration_id (string, optional)

Returns:
Branch details or error if not found

list_commits

Browse commit history for a repository

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • integration_id (string, optional)
  • offset (integer, optional, default: 0)
  • limit (integer, optional, default: 20)
  • sort (string, optional): Field to sort by

Returns:
List of commits for the repository

get_commit

Get details for a specific commit

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • commit_id (string, required)
  • integration_id (string, optional)

Returns:
Commit details or error if not found

list_pull_requests

Browse pull requests for a repository

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • integration_id (string, optional)
  • offset (integer, optional, default: 0)
  • limit (integer, optional, default: 20)
  • sort (string, optional)

Returns:
List of pull requests for the repository

get_pull_request

Get details for a specific pull request

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • pull_request_id (string, required)
  • integration_id (string, optional)

Returns:
Pull request details or error if not found

create_pull_request

Create new pull requests

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • title (string, required)
  • source (string, required): Source branch
  • target (string, required): Target branch
  • description (string, optional)
  • state (string, optional, default: opened)
  • visibility (string, optional, default: private)
  • integration_id (string, optional)

Returns:
Created pull request details with assigned ID

update_pull_request

Update existing pull requests

Parameters:

  • organization_id (string, required)
  • repository_id (string, required)
  • pull_request_id (string, required)
  • title (string, optional)
  • description (string, optional)
  • source (string, optional)
  • target (string, optional)
  • state (string, optional)
  • visibility (string, optional)
  • integration_id (string, optional)

Returns:
Updated pull request details

Data Models

Pull Request State Values

  • opened: Pull request is open and awaiting review
  • closed: Pull request was closed without merging
  • merged: Pull request was successfully merged

Pull Request Visibility Values

  • public: Pull request is publicly visible
  • private: Pull request is private to organization members

Download Types

  • ONE_STEP_DOWNLOAD: Direct download
  • TWO_STEPS_DOWNLOAD: Two-step download process
  • THREE_STEPS_DOWNLOAD: Three-step download process

Repository Information

  • Basic Info: ID, name, description, language
  • Metadata: Size, privacy status, archive status
  • URLs: API endpoints and web interface links
  • Download: Repository download configuration
  • Timestamps: Creation and last update times
  • Organization: Parent organization details

Branch Information

  • Basic Info: Name, SHA, enabled status
  • Commit Details: Latest commit information
  • Author Info: Author name and commit timestamp
  • Committer Info: Committer name and timestamp
  • Download: Branch-specific download options

Commit Information

  • Identifiers: SHA, unique ID
  • URLs: API and web interface links
  • Author: Commit author information
  • Parents: Parent commit references

Installation

Prerequisites

  • A Unizo API key
  • An active SCM integration (GitHub, GitLab, Bitbucket, or Azure DevOps)
  • Node.js v20 or higher

MCP Configuration

Here is an example configuration for setting up the Unizo SCM MCP server:

{
"mcpServers": {
"unizo-scm": {
"command": "npx",
"args": [
"mcp-remote",
"http://api.unizo.ai/mcp/scm",
"--allow-http",
"--header",
"apikey:${UNIZO_API_KEY}"
],
"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": "REPOSITORY_NOT_FOUND",
"message": "Repository 'example/repo' not found"
}
}

Common error codes:

  • INTEGRATION_NOT_FOUND: Invalid integration ID
  • REPOSITORY_NOT_FOUND: Repository doesn't exist or no access
  • BRANCH_NOT_FOUND: Branch doesn't exist
  • FILE_NOT_FOUND: File path not found
  • RATE_LIMIT_EXCEEDED: API rate limit reached
  • UNAUTHORIZED: Invalid credentials or permissions