Skip to content

Commit 0738701

Browse files
author
mcp-release-bot
committed
Resolve merge conflicts between feat/user_feedback and origin/main
- Merged enhanced_responses imports in server.py to include both JudgeResponse and Plan-related types - Combined templated macros with technical_decisions section in judge_coding_plan.md - Adopted origin/main version of workflow_guidance.py for better task size-based routing - Updated uv.lock to version 0.3.20 and removed revision field
2 parents 441a94e + f9932b2 commit 0738701

24 files changed

+2902
-1522
lines changed

.github/workflows/prepare-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
- name: Create GitHub App token
5353
if: env.ACT != 'true'
5454
id: app_token
55-
uses: actions/create-github-app-token@v1
55+
uses: actions/create-github-app-token@v2
5656
with:
5757
app-id: ${{ secrets.APP_ID }}
5858
private-key: ${{ secrets.APP_PRIVATE_KEY }}

.github/workflows/release-e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
5555
- name: Create GitHub App token
5656
id: app_token
57-
uses: actions/create-github-app-token@v1
57+
uses: actions/create-github-app-token@v2
5858
with:
5959
app-id: ${{ secrets.APP_ID }}
6060
private-key: ${{ secrets.APP_PRIVATE_KEY }}

.github/workflows/release.yml

Lines changed: 28 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
contents: read
5555
id-token: write
5656
steps:
57-
- uses: actions/download-artifact@v4
57+
- uses: actions/download-artifact@v5
5858
with:
5959
name: dist
6060
path: dist
@@ -118,7 +118,7 @@ jobs:
118118
echo "## What's Changed" > CHANGELOG.md
119119
echo "" >> CHANGELOG.md
120120
git log --oneline --pretty=format:"* %s" $(git describe --tags --abbrev=0 HEAD^)..HEAD >> CHANGELOG.md || echo "* Initial release" >> CHANGELOG.md
121-
- uses: actions/download-artifact@v4
121+
- uses: actions/download-artifact@v5
122122
with:
123123
name: dist
124124
path: dist
@@ -138,78 +138,44 @@ jobs:
138138
continue-on-error: true
139139
steps:
140140
- uses: actions/checkout@v5
141-
- name: Install MCP Publisher CLI
142-
run: |
143-
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
144141
- name: Extract version from tag
145142
id: ver
146143
run: |
147144
echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
148-
- name: Generate server.json
149-
id: server
145+
- name: Extract project metadata
146+
id: metadata
150147
env:
151148
VERSION: ${{ steps.ver.outputs.VERSION }}
152149
run: |
153150
python - <<'PY'
154-
import json, tomllib, os
151+
import tomllib, os
155152
VERSION = os.environ['VERSION']
156153
with open('pyproject.toml','rb') as f:
157154
data = tomllib.load(f)
158155
project = data['project']
159-
server = {
160-
"name": f"io.github.OtherVibes/{project['name']}",
161-
"description": project['description'],
162-
"version": VERSION,
163-
"homepage": next((url[1] for url in project.get('urls', {}).items() if url[0] == 'Homepage'), ''),
164-
"license": project.get('license', {}).get('text', 'MIT'),
165-
"runtime": {
166-
"type": "uv",
167-
"package": f"{project['name']}=={VERSION}",
168-
"transport": {"type": "stdio"}
169-
}
170-
}
171-
with open('server.json', 'w') as f:
172-
json.dump(server, f, indent=2)
156+
157+
# Extract metadata for the action
158+
name = f"io.github.OtherVibes/{project['name']}"
159+
description = project['description']
160+
homepage = next((url[1] for url in project.get('urls', {}).items() if url[0] == 'Homepage'), '')
161+
package_name = project['name']
162+
163+
# Write to GitHub outputs
173164
with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
174-
f.write(f"json={json.dumps(server)}\n")
165+
f.write(f"name={name}\n")
166+
f.write(f"description={description}\n")
167+
f.write(f"homepage={homepage}\n")
168+
f.write(f"package_name={package_name}\n")
175169
PY
176-
- name: Login to MCP Registry (GitHub OIDC)
177-
run: |
178-
./mcp-publisher login github-oidc
179170
- name: Publish to MCP Registry
180-
env:
181-
NAME: ${{ fromJSON(steps.server.outputs.json).name }}
182-
run: |
183-
./mcp-publisher publish server.json
184-
- name: Verify publication
185-
env:
186-
NAME: ${{ fromJSON(steps.server.outputs.json).name }}
187-
VERSION: ${{ fromJSON(steps.server.outputs.json).version }}
188-
run: |
189-
echo "✅ Publication command completed successfully"
190-
echo "📋 Published server: $NAME version $VERSION"
191-
192-
echo "🔍 Verifying publication in registry..."
193-
194-
# Use search parameter to find our server (includes all versions)
195-
server_name_only=$(echo "$NAME" | sed 's/.*\///')
196-
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=$server_name_only" > search_results.json
197-
198-
# Check if our specific version exists
199-
version_found=$(jq -r --arg name "$NAME" --arg version "$VERSION" '.servers[] | select(.name == $name and .version == $version) | .version' search_results.json)
200-
201-
if [ -n "$version_found" ]; then
202-
echo "✅ Server $NAME version $VERSION is published in MCP Registry!"
203-
echo "📋 Server details:"
204-
jq -r --arg name "$NAME" --arg version "$VERSION" '.servers[] | select(.name == $name and .version == $version) | {name, version, description, is_latest: ._meta."io.modelcontextprotocol.registry/official".is_latest}' search_results.json
205-
206-
# Show all versions of this server
207-
echo ""
208-
echo "� All published versions:"
209-
jq -r --arg name "$NAME" '.servers[] | select(.name == $name) | " - v" + .version + " (latest: " + (._meta."io.modelcontextprotocol.registry/official".is_latest | tostring) + ")"' search_results.json | sort -V
210-
else
211-
echo "❌ Server $NAME version $VERSION not found in registry"
212-
echo "🔍 Available versions for this server:"
213-
jq -r --arg name "$NAME" '.servers[] | select(.name == $name) | " - v" + .version' search_results.json | sort -V
214-
exit 1
215-
fi
171+
uses: OtherVibes/mcp-publish-action@v1
172+
with:
173+
name: ${{ steps.metadata.outputs.name }}
174+
description: ${{ steps.metadata.outputs.description }}
175+
version: ${{ steps.ver.outputs.VERSION }}
176+
website_url: ${{ steps.metadata.outputs.homepage }}
177+
registry_type: pypi
178+
identifier: ${{ steps.metadata.outputs.package_name }}
179+
package_version: ${{ steps.ver.outputs.VERSION }}
180+
transport_type: stdio
181+
verify: true

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "mcp-as-a-judge"
3-
version = "0.3.14"
3+
version = "0.3.20"
44
description = "MCP as a Judge: a behavioral MCP that strengthens AI coding assistants via explicit LLM evaluations"
55
readme = "README.md"
66
license = { text = "MIT" }
@@ -62,6 +62,7 @@ dev-dependencies = [
6262
"types-requests>=2.31.0",
6363
"pre-commit>=3.0.0",
6464
"bandit>=1.8.6",
65+
"jinja2>=3.1.6",
6566
]
6667

6768
[tool.hatch.envs.default]

scripts/bump_version.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
- Prints a machine-readable list of other files containing the old version preceded by 'FOUND: '
1818
- Exits non-zero on validation failure or if expected files are missing
1919
"""
20+
2021
from __future__ import annotations
2122

2223
import argparse
@@ -49,7 +50,9 @@ def extract_current_version() -> str:
4950
# naive toml line parse to avoid adding deps
5051
m = re.search(r'^version\s*=\s*"([^"]+)"', text, re.MULTILINE)
5152
if not m:
52-
print("ERROR: Could not find [project].version in pyproject.toml", file=sys.stderr)
53+
print(
54+
"ERROR: Could not find [project].version in pyproject.toml", file=sys.stderr
55+
)
5356
sys.exit(2)
5457
return m.group(1)
5558

@@ -90,15 +93,32 @@ def bump_init(version: str) -> bool:
9093

9194
def find_other_references(old_version: str) -> None:
9295
# Report-only scan for the old version string across repo (excluding venvs, git, dist, etc.)
93-
skip_dirs = {".git", ".venv", "dist", "build", "__pycache__", ".mypy_cache", ".ruff_cache"}
96+
skip_dirs = {
97+
".git",
98+
".venv",
99+
"dist",
100+
"build",
101+
"__pycache__",
102+
".mypy_cache",
103+
".ruff_cache",
104+
}
94105
for path in REPO_ROOT.rglob("*"):
95106
if path.is_dir():
96107
if path.name in skip_dirs:
97108
# prune by skipping children
98109
for _ in []:
99110
pass
100111
continue
101-
if path.suffix in {".png", ".jpg", ".jpeg", ".gif", ".zip", ".whl", ".tar", ".gz"}:
112+
if path.suffix in {
113+
".png",
114+
".jpg",
115+
".jpeg",
116+
".gif",
117+
".zip",
118+
".whl",
119+
".tar",
120+
".gz",
121+
}:
102122
continue
103123
# Avoid scanning the lock file for noisy matches
104124
if path.name == "uv.lock":
@@ -113,7 +133,9 @@ def find_other_references(old_version: str) -> None:
113133

114134
def main() -> None:
115135
parser = argparse.ArgumentParser(description="Bump project version across files")
116-
parser.add_argument("--version", required=True, help="Semantic version, e.g., 0.3.0")
136+
parser.add_argument(
137+
"--version", required=True, help="Semantic version, e.g., 0.3.0"
138+
)
117139
args = parser.parse_args()
118140

119141
new_version = args.version.strip()
@@ -146,4 +168,3 @@ def main() -> None:
146168

147169
if __name__ == "__main__":
148170
main()
149-

src/mcp_as_a_judge/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
against software engineering best practices.
66
"""
77

8-
__version__ = "0.3.14"
8+
__version__ = "0.3.20"
99

1010

1111
# Lazy imports to avoid dependency issues in Cloudflare Workers

0 commit comments

Comments
 (0)