# StacklokLabs/ocireg-mcp [Health: Active]

**Category:** ☁️ Cloud Platforms  
**Repository:** https://github.com/StacklokLabs/ocireg-mcp  
**GitHub Stars:** 13  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/stackloklabs-ocireg-mcp

## Description
An SSE-based MCP server that allows LLM-powered applications to interact with OCI registries. It provides tools for retrieving information about container images, listing tags, and more.

## Tools
Capabilities this server exposes over MCP:

- **image_ref** — The image reference (e.g., docker.io/library/alpine:latest)
- **repository** — The repository name (e.g., docker.io/library/alpine)

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "ocireg-mcp": {
    "command": "npx",
    "args": ["-y","stackloklabs-ocireg-mcp"],
    "env": {
      "OCI_TOKEN": "",
      "OCI_USERNAME": "",
      "OCI_PASSWORD": "",
      "MCP_PORT": ""
    }
  }
}
```

**Requires environment variables:** `OCI_TOKEN`, `OCI_USERNAME`, `OCI_PASSWORD`, `MCP_PORT` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation & README

# OCI Registry MCP Server

[![Trust Score](https://archestra.ai/mcp-catalog/api/badge/quality/StacklokLabs/ocireg-mcp)](https://archestra.ai/mcp-catalog/stackloklabs__ocireg-mcp)
An MCP (Model Context Protocol) server that provides tools for querying OCI
registries and image references.

## Overview

This project implements an SSE-based MCP server that allows LLM-powered
applications to interact with OCI registries. It provides tools for retrieving
information about container images, listing tags, and more.

## Features

- Get information about OCI images
- List tags for repositories
- Get image manifests
- Get image configs

## MCP Tools

The server provides the following MCP tools:

### get_image_info

Get information about an OCI image.

**Input:**

- `image_ref`: The image reference (e.g., docker.io/library/alpine:latest)

**Output:**

- Image information including digest, size, architecture, OS, creation date, and
  number of layers

### list_tags

List tags for a repository.

**Input:**

- `repository`: The repository name (e.g., docker.io/library/alpine)

**Output:**

- List of tags for the repository

### get_image_manifest

Get the manifest for an OCI image.

**Input:**

- `image_ref`: The image reference (e.g., docker.io/library/alpine:latest)

**Output:**

- The image manifest

### get_image_config

Get the config for an OCI image.

**Input:**

- `image_ref`: The image reference (e.g., docker.io/library/alpine:latest)

**Output:**

- The image config

## Usage

### Running with ToolHive (Recommended)

The easiest way to run the OCI Registry MCP server is using
[ToolHive](https://github.com/stacklok/toolhive), which provides secure,
containerized deployment of MCP servers:

```bash
# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install

# Register a supported client so ToolHive can auto-configure your environment
thv client setup
# Run the OCI Registry MCP server (packaged as 'oci-registry' in ToolHive)
thv run oci-registry

# List running servers
thv list

# Get detailed information about the server
thv registry info oci-registry
```

The server will be available to your MCP-compatible clients and can query OCI
registries for image information.

#### Authentication with ToolHive

If you need to access private registries, you can provide authentication
credentials using ToolHive's secret management:

```bash
# For bearer token authentication
thv secret set oci-token
# Enter your bearer token when prompted

thv run --secret oci-token,target=OCI_TOKEN oci-registry

# For username/password authentication
thv secret set oci-username
thv secret set oci-password
# Enter your credentials when prompted

thv run --secret oci-username,target=OCI_USERNAME --secret oci-password,target=OCI_PASSWORD oci-registry
```

## Development

### Prerequisites

- Go 1.21 or later
- Access to OCI registries

### Authentication

The server supports the following authentication methods for accessing private
OCI registries (in order of priority):

1. **HTTP Authorization Header** (Highest Priority): Include a bearer token in
   the HTTP request's `Authorization` header:

   - `Authorization: Bearer <your-token>`
   - This method takes precedence over all other authentication methods
   - When present, environment variables and Docker config are ignored

2. **Bearer Token Environment Variable**: Set the following environment variable:

   - `OCI_TOKEN`: Bearer token for registry authentication

3. **Username and Password**: Set the following environment variables:

   - `OCI_USERNAME`: Username for registry authentication
   - `OCI_PASSWORD`: Password for registry authentication

4. **Docker Config** (Lowest Priority): If no other authentication is provided,
   the server will use the default Docker keychain, which reads credentials from
   `~/.docker/config.json`.

Examples:

```bash
# HTTP Authorization header (for per-request authentication)
# This is handled automatically by the MCP client when making requests
# Example: curl -H "Authorization: Bearer mytoken" http://localhost:8080/...

# Bearer token authentication via environment variable
export OCI_TOKEN=mytoken

# Username/password authentication via environment variables
export OCI_USERNAME=myuser
export OCI_PASSWORD=mypassword
```

### Port Configuration

The server can be configured to listen on a specific port using either:

1. **Environment Variable**:

   - `MCP_PORT`: The port number to listen on (must be between 0 and 65535)
   - If not set or invalid, defaults to port 8080

2. **Command-line Flag**:
   - `-port`: Overrides the environment variable setting (must be between 0
     and 65535)
   - If invalid port provided it defaults to port 8080
   - Example: `./ocireg-mcp -port 9090`

### Testing

```bash
go test ./...
```

### Linting

```bash
golangci-lint run
```

## Contributing

We welcome contributions to this MCP server! If you'd like to contribute, please
review the [CONTRIBUTING guide](https://github.com/StacklokLabs/ocireg-mcp/blob/HEAD/CONTRIBUTING.md) for details on how to get
started.

If you run into a bug or have a feature request, please
[open an issue](https://github.com/StacklokLabs/ocireg-mcp/issues) in the
repository or join us in the `#mcp-servers` channel on our
[community Discord server](https://discord.gg/stacklok).

## License

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

