[tools]
"aqua:astral-sh/uv" = '0.9.2'
"aqua:evilmartians/lefthook" = "1.13.6"
python = '3.14.0'
[tasks.dev]
alias = "default"
run = "uv run -m src"
[tasks.pre-commit]
run = "lefthook run pre-commit --all-files"
[tasks.test]
run = "uv run pytest"
[tasks.'test:coverage']
run = "uv run pytest --cov=src"
[tasks.'version:bump']
description = "Bump project version (override with --level=major|minor|patch|stable|alpha|beta|rc|post|dev)."
run = '''
#!/usr/bin/env bash
set -euo pipefail
level="{{option(name="level", default="patch")}}"
new_version=$(uv version --bump "$level" --short)
sed -i '' -E "s/(^[[:space:]]*__version__[[:space:]]*=[[:space:]]*')[^']+(')/\1${new_version}\2/" src/__init__.py
if ! grep -q "__version__ = '${new_version}'" src/__init__.py; then
echo "Failed to update __version__ in src/__init__.py" >&2
exit 1
fi
echo "Bumped version to ${new_version}"
'''
[tasks.'version:tag']
description = "Create and push a git tag for the current project version (use --dry-run to skip pushing)."
usage = '''
flag "--dry-run" help="Skip pushing the tag"
flag "--overwrite" help="Replace the existing local tag if it already exists"
'''
run = '''
#!/usr/bin/env bash
set -euo pipefail
version=$(uv version --short)
tag="v${version}"
overwrite='{{flag(name="overwrite", default="false")}}'
if git rev-parse "$tag" >/dev/null 2>&1; then
if [ "$overwrite" != 'true' ]; then
echo "Tag ${tag} already exists" >&2
exit 1
fi
fi
if [ "$overwrite" = 'true' ]; then
git tag -f "$tag"
else
git tag "$tag"
fi
push_cmd=(git push origin "$tag")
if [ "$overwrite" = 'true' ]; then
push_cmd=(git push --force origin "$tag")
fi
if [ '{{flag(name="dry-run", default="false")}}' != 'true' ]; then
"${push_cmd[@]}"
else
echo "dry-run flag enabled; skipping git push"
fi
echo "Created tag ${tag}"
'''
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yshalsager/mcp-4get'
If you have feedback or need assistance with the MCP directory API, please join our Discord server