Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/build-dev-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ jobs:
- name: Create variables
id: vars
run: |
echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
outputs:
platforms: ${{ steps.vars.outputs.platforms }}
date: ${{ steps.vars.outputs.date }}

call-docker-build:
Expand All @@ -34,5 +36,6 @@ jobs:
additional-tag: 'develop-latest'
version: 'develop-${{ github.run_number }}'
date: ${{ needs.variables-setup.outputs.date }}
build-platforms: ${{ needs.variables-setup.outputs.platforms }}
runs-on: ubuntu-latest
secrets: inherit
3 changes: 3 additions & 0 deletions .github/workflows/build-feature-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,11 @@ jobs:
echo "tag=$(echo ${{ github.ref_name }}-${{ github.run_number }} | tr '/' '-')" >> $GITHUB_OUTPUT
fi

echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
outputs:
tag: ${{ steps.vars.outputs.tag }}
platforms: ${{ steps.vars.outputs.platforms }}
date: ${{ steps.vars.outputs.date }}

call-docker-build:
Expand All @@ -49,5 +51,6 @@ jobs:
version: ${{ needs.variables-setup.outputs.tag }}
branch: ${{ github.head_ref != '' && github.head_ref || github.ref_name }}
date: ${{ needs.variables-setup.outputs.date }}
build-platforms: ${{ needs.variables-setup.outputs.platforms }}
runs-on: ubuntu-latest
secrets: inherit
2 changes: 1 addition & 1 deletion .github/workflows/build-rc-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Create variables
id: vars
run: |
echo "platforms=linux/amd64" >> $GITHUB_OUTPUT
echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
echo "version=$(echo '${{ github.ref_name }}' | sed -nE 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')" >> $GITHUB_OUTPUT
echo "tag=$(echo ${{ github.ref_name }}-${{ github.run_number }} | tr '/' '-')" >> $GITHUB_OUTPUT
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/helm-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Lint Helm Chart

on:
push:
branches:
- main
- develop
- 'rc/**'
- 'hotfix/**'
paths:
- 'helm-charts/**'
- '.github/workflows/helm-lint.yaml'
pull_request:
branches:
- main
- develop
- 'rc/**'
- 'hotfix/**'
paths:
- 'helm-charts/**'
- '.github/workflows/helm-lint.yaml'

jobs:
lint:
name: Lint Helm Chart
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Helm
uses: azure/[email protected]

- name: Lint Helm Chart
run: |
helm lint helm-charts/reportportal-mcp-server
helm template helm-charts/reportportal-mcp-server --debug

45 changes: 42 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,58 @@ jobs:
uses: actions/setup-go@v5
with:
go-version: stable

# Step 4: Set up QEMU for cross-platform Docker builds
- name: Set up QEMU
uses: docker/setup-qemu-action@v3

# Step 5: Set up Docker Buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.REGESTRY_USERNAME }}
password: ${{ secrets.REGESTRY_PASSWORD }}

# Step 4: Run GoReleaser to build and publish release artifacts
# Step 6: Run GoReleaser to build and publish release artifacts
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: latest
args: release --clean
env:
REPOSITORY_NAME: reportportal/mcp-server # Docker repository name
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub token for authentication
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # GitHub token for authentication

# Step 7: Generate build timestamp
- name: Generate build timestamp
id: build_date
run: echo "timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITHUB_OUTPUT

# Step 8: Build and push multi-arch Docker image using Buildx
- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./release.dockerfile
platforms: linux/amd64,linux/arm64
push: true
tags: |
reportportal/mcp-server:${{ github.event.inputs.version }}
reportportal/mcp-server:latest
build-args: |
VERSION=${{ github.event.inputs.version }}
COMMIT=${{ github.sha }}
BUILD_DATE=${{ steps.build_date.outputs.timestamp }}
labels: |
io.artifacthub.package.readme-url=https://raw.githubusercontent.com/reportportal/reportportal-mcp-server/main/README.md
io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/17636279
io.artifacthub.package.maintainers=[{"name":"Andrei Varabyeu","email":"[email protected]"},{"name":"Aleksandr Paramonov","email":"[email protected]"}]
org.opencontainers.image.description=ReportPortal MCP Server
org.opencontainers.image.name=reportportal-mcp-server
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.version=${{ github.event.inputs.version }}
org.opencontainers.image.source=https://github.com/reportportal/reportportal-mcp-server
org.opencontainers.image.created=${{ steps.build_date.outputs.timestamp }}
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,13 @@ bin/
.env
.vscode/
junit-report.xml
dist/
dist/

# Helm chart test artifacts
helm-charts/**/charts/
helm-charts/**/*.tgz
helm-charts/**/Chart.lock
helm-charts/**/examples/

# Examples directory
examples/**
20 changes: 2 additions & 18 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,8 @@ archives:
- LICENSE
- README.md

dockers:
- image_templates:
- "{{ .Env.REPOSITORY_NAME }}:{{ .Version }}"
- "{{ .Env.REPOSITORY_NAME }}:latest"
dockerfile: release.dockerfile
build_flag_templates:
- "--platform=linux/amd64"
- "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/reportportal/reportportal-mcp-server/main/README.md"
- "--label=io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/17636279"
- '--label=io.artifacthub.package.maintainers=[{"name":"Andrei Varabyeu","email":"[email protected]"},{"name":"Aleksandr Paramonov","email":"[email protected]"}]'
- "--label=org.opencontainers.image.description=ReportPortal MCP Server"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.name={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source={{.GitURL}}"
goos: linux
goarch: amd64
# Docker images are built separately using Docker Buildx in the workflow
# This creates clean multi-arch images without intermediate architecture-specific tags


## Uncomment the following sections if you want to create Homebrew Casks or NFPMS (Deb/RPM packages).
Expand Down
24 changes: 11 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ For example, instead of logging into the ReportPortal UI, you could ask your AI

## Installation

There are three ways to connect to the ReportPortal MCP Server:
1. **Via Docker** (recommended for local installation)
2. **Using pre-built binaries** (for local installation)
3. **Connecting to a remote MCP server** (when the server is already deployed)
There are two ways to connect to the ReportPortal MCP Server:
1. **Locally** - via *Docker* (recommended) or using *pre-built binaries*.
2. **Connecting to a remote MCP server** (when the server is already deployed)

Each of these methods is suitable for any LLM provider.

Expand Down Expand Up @@ -101,7 +100,7 @@ If the ReportPortal MCP Server is already **deployed** and accessible via HTTP,

Choose your favourite AI Tool to connect.

#### Cursor (AI Code Editor)
### Cursor (AI Code Editor)

Just click

Expand Down Expand Up @@ -140,9 +139,9 @@ Or follow the next steps:

Documentation: [Cursor MCP](https://docs.cursor.com/en/tools/developers#example).

#### GitHub Copilot (In VS Code and JetBrains IDEs)
### GitHub Copilot (In VS Code and JetBrains IDEs)

##### VS Code
#### VS Code

1. Install/update the GitHub Copilot plugin.
2. Type **>mcp** in the search bar and select **MCP: Open User Configuration**.
Expand Down Expand Up @@ -178,7 +177,7 @@ Documentation: [Cursor MCP](https://docs.cursor.com/en/tools/developers#example)

Documentation: [VS Code Copilot Guide](https://code.visualstudio.com/docs/copilot/chat/mcp-servers).

##### JetBrains IDEs
#### JetBrains IDEs

1. Install/update the GitHub Copilot plugin.
2. Click **GitHub Copilot icon in the status bar → Edit Settings → Model Context Protocol → Configure**.
Expand Down Expand Up @@ -216,7 +215,7 @@ Documentation: [VS Code Copilot Guide](https://code.visualstudio.com/docs/copilo

Documentation: [JetBrains Copilot Guide](https://plugins.jetbrains.com/plugin/17718-github-copilot).

#### Claude Desktop
### Claude Desktop

1. Open Claude Desktop, go to **Settings → Developer → Edit Config**.
2. Add a new MCP server entry that runs the ReportPortal MCP Server.
Expand All @@ -231,14 +230,13 @@ Documentation: [JetBrains Copilot Guide](https://plugins.jetbrains.com/plugin/17
}
}
```
3. Save and restart Claude Desktop.

**For remote server:**

TBU

3. Save and restart Claude Desktop.

#### Claude Code CLI
### Claude Code CLI

1. Open your terminal.
2. Run one of the following commands.
Expand All @@ -260,7 +258,7 @@ claude mcp add-json reportportal '{"url": "http://your-mcp-server-host:port/mcp/

Documentation: [Claude Code guide](https://docs.anthropic.com/en/docs/claude-code/mcp).

#### Other Coding Agents
### Other Coding Agents

The ReportPortal MCP Server is compatible with any MCP-compatible coding agent. While the exact configuration format may vary, most agents support either:

Expand Down
10 changes: 10 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
services:
mcp-server:
image: reportportal/mcp-server:latest
container_name: reportportal-mcp-server
restart: always
environment:
MCP_MODE: http
RP_HOST: ${RP_HOST:-https://your-reportportal-instance.com}
ports:
- 8085:8080
24 changes: 24 additions & 0 deletions helm-charts/reportportal-mcp-server/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

7 changes: 7 additions & 0 deletions helm-charts/reportportal-mcp-server/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: v2
name: reportportal-mcp-server
description: A Helm chart for ReportPortal MCP Server
type: application
version: 0.1.0
appVersion: "latest"

Loading
Loading