Skip to content

Commit 86b2273

Browse files
committed
feat: bootstrap MCP-Forge-Python project with OAuth, Docker, Helm, CI/CD, benchmarks, and comprehensive documentation
- Implement OAuth handlers and JWT validation - Add Docker and Helm deployment configurations - Set up GitHub Actions for CI/CD, docs deployment, and releases - Integrate pytest-benchmark with performance badges - Create extensive documentation (README, CONTRIBUTING, DEVELOPMENT) - Configure conventional commits and linting tools - Add issue/PR templates and security policies - Achieve 100% test coverage with comprehensive test suite
0 parents  commit 86b2273

54 files changed

Lines changed: 395921 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.commitlintrc.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"extends": ["@commitlint/config-conventional"],
3+
"rules": {
4+
"type-enum": [
5+
2,
6+
"always",
7+
[
8+
"build",
9+
"chore",
10+
"ci",
11+
"docs",
12+
"feat",
13+
"fix",
14+
"perf",
15+
"refactor",
16+
"revert",
17+
"style",
18+
"test"
19+
]
20+
]
21+
}
22+
}

.github/CODEOWNERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# More info about codeowners in https://docs.github.com/es/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
2+
# Each line is a file pattern followed by one or more owners.
3+
4+
# These owners will be the default owners for everything in
5+
# the repo. Unless a later match takes precedence,
6+
# they will be requested for
7+
# review when someone opens a pull request.
8+
* @bercianor
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug or issue
4+
title: "[BUG] "
5+
labels: bug
6+
assignees: ""
7+
---
8+
9+
## Description
10+
11+
A clear and concise description of the bug.
12+
13+
## Steps to Reproduce
14+
15+
1. Go to '...'
16+
2. Click on '...'
17+
3. See error
18+
19+
## Expected Behavior
20+
21+
What you expected to happen.
22+
23+
## Actual Behavior
24+
25+
What actually happened.
26+
27+
## Environment
28+
29+
- OS: [e.g., Linux, macOS, Windows]
30+
- Python Version: [e.g., 3.11]
31+
- MCP-Forge-Python Version: [e.g., 0.1.0]
32+
- Additional context: [e.g., running in Docker, specific configuration]
33+
34+
## Logs/Output
35+
36+
```
37+
Paste any relevant logs or error messages here
38+
```
39+
40+
## Additional Context
41+
42+
Add any other context about the problem here.
43+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature or enhancement
4+
title: "[FEATURE] "
5+
labels: enhancement
6+
assignees: ""
7+
---
8+
9+
## Problem Statement
10+
11+
A clear and concise description of the problem this feature would solve.
12+
13+
## Proposed Solution
14+
15+
Describe the solution you'd like to see implemented.
16+
17+
## Alternative Solutions
18+
19+
Describe any alternative solutions or features you've considered.
20+
21+
## Additional Context
22+
23+
Add any other context, screenshots, or examples about the feature request here.
24+
25+
## Implementation Notes
26+
27+
Any technical details or considerations for implementing this feature.
28+

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
## Description
2+
3+
Brief description of the changes made in this PR.
4+
5+
## Type of Change
6+
7+
- [ ] Bug fix (non-breaking change which fixes an issue)
8+
- [ ] New feature (non-breaking change which adds functionality)
9+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
10+
- [ ] Documentation update
11+
- [ ] Refactoring (no functional changes)
12+
- [ ] Test updates
13+
14+
## Checklist
15+
16+
- [ ] Tests pass locally (`just test`)
17+
- [ ] Code follows project style guidelines (`just lint`)
18+
- [ ] Type checking passes (`just typing`)
19+
- [ ] Documentation updated if needed
20+
- [ ] No breaking changes introduced
21+
22+
## Additional Notes
23+
24+
Any additional information or context about this PR.
25+

.github/SECURITY.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Security Policy
2+
3+
## Reporting Security Vulnerabilities
4+
5+
If you discover a security vulnerability in MCP-Forge-Python, please report it to us as follows:
6+
7+
### Private Vulnerability Reporting
8+
9+
GitHub provides a private vulnerability reporting feature for security issues. To report a vulnerability:
10+
11+
1. Go to the [Security tab](https://github.com/bercianor/mcp-forge-python/security) in this repository
12+
2. Click "Report a vulnerability"
13+
3. Fill out the form with details about the vulnerability
14+
4. Submit the report
15+
16+
This will create a private issue that only maintainers can see and respond to.
17+
18+
### What to Include
19+
20+
When reporting a vulnerability, please include:
21+
22+
- A clear description of the vulnerability
23+
- Steps to reproduce the issue
24+
- Potential impact
25+
- Any suggested fixes (optional)
26+
27+
### Response Timeline
28+
29+
We will acknowledge receipt of your report within 48 hours and provide a more detailed response within 7 days indicating our next steps.
30+
31+
### Responsible Disclosure
32+
33+
We kindly ask that you:
34+
35+
- Give us reasonable time to fix the issue before public disclosure
36+
- Avoid accessing user data or disrupting services
37+
- Do not perform DoS attacks or spam our systems
38+
39+
Thank you for helping keep MCP-Forge-Python and its users secure!
40+

.github/dependabot.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "pip"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 10
8+
reviewers:
9+
- "bercianor"
10+
assignees:
11+
- "bercianor"
12+
13+
- package-ecosystem: "github-actions"
14+
directory: "/"
15+
schedule:
16+
interval: "weekly"
17+
open-pull-requests-limit: 5
18+
reviewers:
19+
- "bercianor"
20+
assignees:
21+
- "bercianor"

.github/workflows/ci.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
branches: [main, master]
8+
9+
permissions:
10+
contents: write
11+
12+
jobs:
13+
test:
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
python-version: ["3.11", "3.12"]
18+
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Set up Python ${{ matrix.python-version }}
23+
uses: actions/setup-python@v4
24+
with:
25+
python-version: ${{ matrix.python-version }}
26+
27+
- name: Install uv
28+
run: |
29+
curl -LsSf https://astral.sh/uv/install.sh | sh
30+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
31+
32+
- name: Sync dependencies
33+
run: uv sync
34+
35+
- name: Install just
36+
run: cargo install just
37+
38+
- name: Run linting
39+
run: just lint
40+
41+
- name: Run type checking
42+
run: just typing
43+
44+
- name: Run tests
45+
run: uv run -m pytest
46+
47+
- name: Run benchmarks
48+
run: |
49+
uv run -m pytest tests/test_benchmarks.py --benchmark-only --benchmark-json=benchmark.json
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Conventional Commits
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
commitlint:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
20+
- name: Setup Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: "20"
24+
25+
- name: Install commitlint
26+
run: |
27+
npm install -g @commitlint/cli @commitlint/config-conventional
28+
29+
- name: Validate commits with commitlint
30+
run: |
31+
npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
32+
33+
- name: Validate PR title with commitlint
34+
run: |
35+
echo "${{ github.event.pull_request.title }}" | npx commitlint --verbose

.github/workflows/deploy-docs.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Deploy Docs
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
paths:
7+
- "docs/**"
8+
- "CONTRIBUTING.md"
9+
- "DEVELOPMENT.md"
10+
- "LICENSE"
11+
- ".github/workflows/deploy-docs.yml"
12+
13+
permissions:
14+
contents: write
15+
16+
jobs:
17+
deploy:
18+
runs-on: ubuntu-latest
19+
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Setup Pages
25+
uses: actions/configure-pages@v4
26+
27+
- name: Install uv
28+
run: |
29+
curl -LsSf https://astral.sh/uv/install.sh | sh
30+
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
31+
32+
- name: Sync dependencies
33+
run: uv sync
34+
35+
- name: Run tests with coverage
36+
run: |
37+
uv run -m coverage run -m pytest
38+
uv run -m coverage combine
39+
uv run -m coverage xml
40+
41+
- name: Create badges directory
42+
run: mkdir -p docs/badges
43+
44+
- name: Install coverage-badge
45+
run: uv pip install coverage-badge
46+
47+
- name: Generate coverage badge
48+
run: uv run coverage-badge -o docs/badges/coverage-badge.svg
49+
50+
- name: Copy root files to docs
51+
run: |
52+
cp CONTRIBUTING.md docs/contributing-guide.md
53+
cp DEVELOPMENT.md docs/development.md && sed -i 's/CONTRIBUTING\.md/contributing-guide.html/g' docs/development.md
54+
cp LICENSE docs/LICENSE.txt
55+
56+
- name: Build with Jekyll
57+
uses: actions/jekyll-build-pages@v1
58+
with:
59+
source: ./docs
60+
destination: ./_site
61+
62+
- name: Deploy to GitHub Pages
63+
uses: peaceiris/actions-gh-pages@v3
64+
with:
65+
github_token: ${{ secrets.GITHUB_TOKEN }}
66+
publish_dir: ./_site

0 commit comments

Comments
 (0)