Skip to content

Commit 29f2be5

Browse files
chore: initialize kubeflow-mcp repository skeleton
1 parent 1fab4b8 commit 29f2be5

26 files changed

Lines changed: 801 additions & 8 deletions
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Bug Report
2+
description: Report a bug in Kubeflow MCP Server
3+
labels: [bug]
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: Description
9+
description: Clear description of the bug
10+
validations:
11+
required: true
12+
13+
- type: textarea
14+
id: steps
15+
attributes:
16+
label: Steps to Reproduce
17+
description: Steps to reproduce the behavior
18+
placeholder: |
19+
1. Run `kubeflow-mcp serve`
20+
2. Execute tool X
21+
3. See error
22+
23+
- type: textarea
24+
id: expected
25+
attributes:
26+
label: Expected Behavior
27+
description: What you expected to happen
28+
29+
- type: textarea
30+
id: actual
31+
attributes:
32+
label: Actual Behavior
33+
description: What actually happened
34+
35+
- type: input
36+
id: version
37+
attributes:
38+
label: Version
39+
placeholder: "0.1.0"
40+
41+
- type: dropdown
42+
id: python
43+
attributes:
44+
label: Python Version
45+
options:
46+
- "3.10"
47+
- "3.11"
48+
- "3.12"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Feature Request
2+
description: Suggest a new feature
3+
labels: [enhancement]
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: Description
9+
description: Clear description of the feature
10+
validations:
11+
required: true
12+
13+
- type: textarea
14+
id: use-case
15+
attributes:
16+
label: Use Case
17+
description: Why is this feature needed?
18+
19+
- type: textarea
20+
id: proposal
21+
attributes:
22+
label: Proposed Solution
23+
description: How should this be implemented?
24+
25+
- type: dropdown
26+
id: component
27+
attributes:
28+
label: Component
29+
options:
30+
- Core
31+
- TrainerClient
32+
- OptimizerClient
33+
- ModelRegistryClient
34+
- CLI
35+
- Documentation

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
## Description
2+
3+
<!-- Brief description of changes -->
4+
5+
## Type of Change
6+
7+
- [ ] feat: New feature
8+
- [ ] fix: Bug fix
9+
- [ ] docs: Documentation
10+
- [ ] refactor: Code refactoring
11+
- [ ] test: Tests
12+
- [ ] ci: CI/CD changes
13+
14+
## Checklist
15+
16+
- [ ] Tests pass locally (`uv run pytest`)
17+
- [ ] Linting passes (`uv run ruff check .`)
18+
- [ ] Types check (`uv run mypy src/`)
19+
- [ ] Documentation updated (if applicable)
20+
- [ ] Commit messages follow conventional format
21+
22+
## Related Issues
23+
24+
<!-- Link related issues: Fixes #123 -->
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Check PR Title
2+
3+
on:
4+
pull_request:
5+
types: [opened, edited, synchronize]
6+
7+
jobs:
8+
check:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Check conventional commit format
12+
uses: amannn/action-semantic-pull-request@v5
13+
env:
14+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15+
with:
16+
types: |
17+
feat
18+
fix
19+
docs
20+
style
21+
refactor
22+
perf
23+
test
24+
build
25+
ci
26+
chore
27+
requireScope: false
28+
subjectPattern: ^[a-z].+$
29+
subjectPatternError: |
30+
PR title must start with lowercase letter.
31+
Example: "feat: add training job tool"

.github/workflows/lint.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Lint
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v5
17+
with:
18+
python-version: "3.11"
19+
20+
- name: Install uv
21+
uses: astral-sh/setup-uv@v3
22+
23+
- name: Install dependencies
24+
run: uv sync --extra dev
25+
26+
- name: Run ruff
27+
run: uv run ruff check .
28+
29+
- name: Run ruff format check
30+
run: uv run ruff format --check .
31+
32+
- name: Run mypy
33+
run: uv run mypy src/

.github/workflows/test.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Test
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
python-version: ["3.10", "3.11", "3.12"]
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up Python ${{ matrix.python-version }}
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
24+
- name: Install uv
25+
uses: astral-sh/setup-uv@v3
26+
27+
- name: Install dependencies
28+
run: uv sync --extra dev --extra trainer
29+
30+
- name: Run tests
31+
run: uv run pytest --cov=kubeflow_mcp --cov-report=xml
32+
33+
- name: Upload coverage
34+
if: matrix.python-version == '3.11'
35+
uses: coverallsapp/github-action@v2
36+
with:
37+
github-token: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 71 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,75 @@
1-
# IDEs
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
*.egg-info/
20+
.installed.cfg
21+
*.egg
22+
23+
# Virtual environments
24+
.venv/
25+
venv/
26+
ENV/
27+
env/
28+
29+
# uv
30+
.uv/
31+
uv.lock
32+
33+
# IDE
34+
.idea/
235
.vscode/
336
__debug_bin
4-
.idea/
5-
.DS_Store
6-
.swp
37+
*.swp
38+
*.swo
739
*~
840

9-
# Python cache files
10-
__pycache__/
11-
*.egg-info/
41+
# Testing
42+
.pytest_cache/
43+
.coverage
44+
htmlcov/
45+
.tox/
46+
.nox/
47+
48+
# Type checking
49+
.mypy_cache/
50+
.pytype/
51+
52+
# Jupyter
53+
.ipynb_checkpoints/
54+
55+
# OS
56+
.DS_Store
57+
Thumbs.db
58+
59+
# Benchmarks
60+
benchmark-results.json
61+
.benchmarks/
62+
63+
# Local dev
64+
.env
65+
.env.local
66+
*.local
67+
68+
# Build artifacts
69+
*.whl
70+
71+
# Docs build output
72+
docs/_build/
73+
74+
# Test artifacts
75+
coverage.json

.pre-commit-config.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
repos:
2+
- repo: https://github.com/astral-sh/ruff-pre-commit
3+
rev: v0.4.4
4+
hooks:
5+
- id: ruff
6+
args: [--fix]
7+
- id: ruff-format
8+
9+
- repo: https://github.com/pre-commit/mirrors-mypy
10+
rev: v1.10.0
11+
hooks:
12+
- id: mypy
13+
additional_dependencies:
14+
- pydantic>=2.0
15+
- types-PyYAML
16+
args: [--ignore-missing-imports]
17+
exclude: ^tests/
18+
19+
- repo: https://github.com/compilerla/conventional-pre-commit
20+
rev: v3.2.0
21+
hooks:
22+
- id: conventional-pre-commit
23+
stages: [commit-msg]
24+
args: [feat, fix, docs, style, refactor, perf, test, build, ci, chore]

0 commit comments

Comments
 (0)