✨ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

MCP Harbor

License: MIT TypeScript Node.js codecov

MCP Harbor is a Node.js application that provides a Model Context Protocol (MCP) server for interacting with Harbor container registry.

Table of Contents

  • MCP Harbor
    • Table of Contents
    • Features
    • Prerequisites
    • Installation
    • Usage
      • Command Line Arguments
      • Environment Variables
    • MCP Tools
    • Development
      • Running in Development Mode
      • Running Tests
    • Project Structure
    • Troubleshooting
      • Common Issues
      • Debug Mode
      • Support
    • License

Features

  • MCP Server: Exposes tools for interacting with Harbor through the Model Context Protocol
  • Harbor Operations: Supports operations for projects, repositories, tags, and Helm charts
  • TypeScript: Written in TypeScript for better type safety and developer experience
  • Automated Tests: Comprehensive test suite for reliable functionality

Prerequisites

Before installing MCP Harbor, ensure you have:

  • Node.js 18.x or higher
  • npm 8.x or higher
  • Access to a Harbor registry instance
  • Git (for cloning the repository)

Installation

  1. Clone the repository:

    git clone https://github.com/nomagicln/mcp-harbor.git
    
  2. Navigate to the project directory:

    cd mcp-harbor
    
  3. Install dependencies:

    npm install
    
  4. Build the project:

    npm run build
    

Usage

Command Line Arguments

The application accepts the following command line arguments:

Options:
  --url       Harbor API URL                     [string] [required]
  --username  Harbor username                    [string] [required]
  --password  Harbor password                    [string] [required]
  --debug     Enable debug mode          [boolean] [default: false]
  --help      Show help                                  [boolean]

Environment Variables

Instead of command line arguments, you can also use environment variables. Create a .env file in the root directory:

# Harbor API Configuration
HARBOR_URL=https://harbor.example.com
HARBOR_USERNAME=admin
HARBOR_PASSWORD=Harbor12345

# Debug Mode (true/false)
DEBUG=false

MCP Tools

The MCP server exposes the following tools:

Tool NameDescriptionParameters
list_projectsList all projects in HarborNone
get_projectGet project details by IDprojectId: string
create_projectCreate a new projectproject_name: string, metadata?: object
delete_projectDelete a projectprojectId: string
list_repositoriesList repositories in a projectprojectId: string
delete_repositoryDelete a repositoryprojectId: string, repositoryName: string
list_tagsList tags in a repositoryprojectId: string, repositoryName: string
delete_tagDelete a tagprojectId: string, repositoryName: string, tag: string
list_chartsList Helm chartsprojectId: string
list_chart_versionsList chart versionsprojectId: string, chartName: string
delete_chartDelete chart versionprojectId: string, chartName: string, version: string

Development

Running in Development Mode

npm run dev

Running Tests

# Run all tests
npm test

# Run tests with coverage
npm run test:coverage

Project Structure

mcp-harbor
├── src
│   ├── app.ts                 # Main application entry point (MCP server)
│   ├── definitions
│   │   └── tool.definitions.ts # Tool definitions for MCP
│   ├── services
│   │   └── harbor.service.ts  # Harbor service implementation
│   └── types
│       └── index.ts           # TypeScript type definitions
├── test
│   └── harbor.test.ts         # Tests for Harbor service
├── .env.example              # Example environment variables
├── .gitignore               # Git ignore file
├── .eslintrc.json           # ESLint configuration
├── package.json            # Project dependencies
├── jest.config.js           # Jest configuration
├── tsconfig.test.json      # TypeScript configuration for tests
├── tsconfig.json          # TypeScript configuration
├── LICENSE                # Project license
└── README.md             # Project documentation

Troubleshooting

Common Issues

  1. Connection Failed

    Error: Unable to connect to Harbor instance
    
    • Verify HARBOR_URL is correct and accessible
    • Check network connectivity
    • Ensure Harbor instance is running
  2. Authentication Failed

    Error: Invalid credentials
    
    • Verify HARBOR_USERNAME and HARBOR_PASSWORD are correct
    • Check if user has required permissions
  3. Build Errors

    Error: TypeScript compilation failed
    
    • Run npm install to ensure all dependencies are installed
    • Check TypeScript version compatibility
    • Clear the dist directory and rebuild

Debug Mode

Enable debug mode by using the --debug flag or setting:

DEBUG=true

Support

For additional help:

  1. Review the application logs

License

This project is licensed under the MIT License - see the LICENSE file for details.

Featured Templates

View More
AI Engineering
Python Bug Fixer
119 1433
AI Assistants
Image to text with Claude 3
152 1366
AI Characters
Your Speaking Avatar
169 928
Customer service
Service ERP
126 1188
Customer service
Multi-language AI Translator
136 921

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.