mcpField
P
pypreset

pypreset

本地服务
github.com/KaiErikNiermann开发工具15 天前更新

关于 pypreset

pypreset 是用于根据 YAML 预设搭建 Python 项目并为现有项目添加组件的 CLI 和 MCP 服务。它面向需要灵活配置项目布局与工具链的 Python 开发者,也提供工作流检查、元数据和版本发布命令。

主要功能

  1. 01依据可继承的 YAML 预设创建项目
  2. 02为现有项目添加 CI、测试和文档
  3. 03配置 Poetry、uv 或 setuptools
  4. 04生成 Docker 和 devcontainer 文件
  5. 05使用 act 验证 GitHub Actions 工作流
  6. 06管理 PyPI 元数据和发布版本

适用场景

  1. 01根据预设创建 Python 包或 CLI 项目
  2. 02为现有仓库添加 CI 工作流和测试
  3. 03在本地检查 GitHub Actions 工作流
  4. 04准备项目的 PyPI 发布元数据

MCP 相关

MCP 服务提供项目创建与扩展、结构验证、工作流验证、预设和用户配置操作、元数据编辑及徽章生成。它还提供预设与配置资源,以及项目创建提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kaierikniermann-pypreset": {
"command": "uvx",
"args": [
"pypreset"
]
}
}
}
启动命令uvx pypreset

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypipypreset0.4.0

工具

13

收录的工具列表 · 更新于 3 周前

参数类型必填说明
toxboolean否使用 tox-uv 生成 tox.ini
docsany否文档工具:'sphinx'、'mkdocs' 或 'none'
pyenvboolean否生成 .python-version 文件,并在 CI 中使用 python-version-file
dockerboolean否生成 Dockerfile 和 .dockerignore
layoutany否布局样式覆盖项:'src' 或 'flat'
presetstring是预设名称(例如 'empty-package'、'cli-tool'、'data-science')
output_dirstring否创建项目的目录
devcontainerboolean否生成 .devcontainer/ 配置
project_namestring是新项目的名称(例如 'my-app')
type_checkerany否类型检查器覆盖项:'mypy'、'pyright'、'ty' 或 'none'
typing_levelany否类型检查严格度覆盖项:'none'、'basic' 或 'strict'
coverage_toolany否覆盖率服务:'codecov' 或 'none'
docs_gh_pagesboolean否生成用于部署文档的 GitHub Pages 工作流
initialize_gitboolean否初始化 git 仓库
python_versionany否Python 版本覆盖项(例如 '3.12')
package_managerany否包管理器覆盖项:'poetry'、'uv' 或 'setuptools'
container_runtimeany否容器运行时:'docker' 或 'podman'
coverage_thresholdany否最低覆盖率百分比
install_dependenciesboolean否生成后运行包管理器安装命令

详细介绍

PyPreset

用于通过可配置 YAML 预设搭建 Python 项目的元工具。
支持 Poetry、uv 和 setuptools,可生成 CI 工作流、测试脚手架、类型检查配置等。

mcp-name: io.github.KaiErikNiermann/pypreset

功能

  • 基于预设创建项目:从 YAML 配置创建,支持单层继承
  • 增强现有项目:添加 CI 工作流、测试、Docker、文档等
  • 三种包管理器:Poetry、uv(PEP 621 + hatchling)和 setuptools(PEP 621 + setuptools.build_meta)
  • 两种布局风格:src/ 布局和平铺布局
  • 类型检查:mypy、pyright、ty 或不使用
  • 代码质量:ruff lint 和格式化、radon 复杂度检查、pre-commit 钩子
  • Docker 和 devcontainer:生成多阶段 Dockerfile、.dockerignore 和 VS Code devcontainer 配置(Docker 或 Podman)
  • 覆盖率集成:支持 Codecov,可配置阈值和忽略模式
  • 文档脚手架:MkDocs(Material 主题)或 Sphinx(RTD 主题),可选通过 GitHub Pages 部署
  • 多环境测试:使用 tox-uv 后端的 tox 配置
  • pyenv / .python-version:为 pyenv 和 uv 生成 .python-version,并在 CI 工作流中使用 python-version-file
  • 版本管理:集成 bump-my-version,通过 gh CLI 自动化 GitHub 发布
  • 工作流验证:使用 act 在本地测试 GitHub Actions(自动检测、自动安装、试运行和完整运行模式)
  • PyPI 元数据管理:读取、设置和检查 pyproject.toml 元数据是否已准备好发布
  • 用户默认设置:将配置持久保存到 ~/.config/pypreset/config.yaml
  • MCP 服务:通过 Model Context Protocol 向 AI 编码助手提供所有功能

安装

pip install pypreset

# With MCP server support
pip install pypreset[mcp]

快速开始

# Create a CLI tool project with Poetry
pypreset create my-cli --preset cli-tool

# Create a data science project with uv
pypreset create my-analysis --preset data-science --package-manager uv

# Create an empty package with src layout (default)
pypreset create my-package --preset empty-package

# Create a Discord bot
pypreset create my-bot --preset discord-bot

# Create a project with Docker support
pypreset create my-service --preset cli-tool --docker --devcontainer

# Create with .python-version for pyenv/uv
pypreset create my-lib --pyenv --python-version 3.13

# Create with Podman, Codecov, docs, and tox
pypreset create my-project --preset empty-package \
    --container-runtime podman --docker \
    --coverage-tool codecov --coverage-threshold 80 \
    --docs mkdocs --docs-gh-pages \
    --tox

命令

create —— 搭建新项目
pypreset create <name> [OPTIONS]
选项说明
--preset, -p要使用的预设(默认:empty-package)
--output, -o输出目录(默认:.)
--config, -c自定义预设 YAML 文件
--package-managerpoetry 或 uv
--layoutsrc 或 flat
--type-checkermypy、pyright、ty 或 none
--typingnone、basic 或 strict
--python-version例如,3.12
--testing / --no-testing启用/禁用测试脚手架
--formatting / --no-formatting启用/禁用格式化配置
--radon / --no-radon启用 radon 复杂度检查
--pre-commit / --no-pre-commit生成 pre-commit 钩子配置
--bump-my-version / --no-bump-my-version包含 bump-my-version 配置
--extra-package, -e额外的软件包(可重复指定)
--extra-dev-package, -d额外的开发软件包(可重复指定)
--docker / --no-docker生成 Dockerfile 和 .dockerignore
--devcontainer / --no-devcontainer生成 .devcontainer/ 配置
--container-runtimedocker 或 podman
--coverage-toolcodecov 或 none
--coverage-threshold最低覆盖率 %(例如,80)
--docssphinx、mkdocs 或 none
--docs-gh-pages / --no-docs-gh-pages生成 GitHub Pages 部署工作流
--tox / --no-tox生成使用 tox-uv 后端的 tox.ini
--pyenv / --no-pyenv生成 .python-version,并在 CI 中使用 python-version-file
--git / --no-git初始化 git 仓库
--install / --no-install创建后安装依赖
--dry-run预览将要创建的内容,不实际生成任何文件
augment -- 为现有项目添加组件

分析 pyproject.toml 以自动检测你的工具,然后生成所选组件。默认以交互模式运行(提示输入无法检测到的值);使用 --auto 可跳过提示。

pypreset augment [path] [OPTIONS]

可用组件:

标志组件生成内容
--test-workflow / --no-test-workflow测试 CIGitHub Actions 工作流,在 Python 版本矩阵中运行 pytest
--lint-workflow / --no-lint-workflow代码检查 CI用于 ruff、类型检查和复杂度分析的 GitHub Actions 工作流
--dependabot / --no-dependabotDependabot用于自动更新依赖项的 .github/dependabot.yml
--tests / --no-tests测试目录包含模板测试文件和 conftest.py 的 tests/
--gitignore / --no-gitignoreGitignorePython 专用 .gitignore
--pypi-publish / --no-pypi-publishPyPI 发布在发布时通过 OIDC 向 PyPI 发布的 GitHub Actions 工作流
--dockerfile / --no-dockerfileDocker多阶段 Dockerfile 和 .dockerignore(支持 Poetry、uv 或 setuptools)
--devcontainer / --no-devcontainerDevcontainer带有 VS Code 扩展的 .devcontainer/devcontainer.json
--codecov / --no-codecovCodecovcodecov.yml 配置
--docs文档Sphinx 或 MkDocs 脚手架(--docs sphinx 或 --docs mkdocs)
--tox / --no-toxtox使用 tox-uv 后端进行多环境测试的 tox.ini
--readme / --no-readmeREADME根据共享模板生成的 README.md(徽章、安装、功能)
--pyenv / --no-pyenvpyenv用于 pyenv 和 uv 版本固定的 .python-version 文件
# Interactive mode (prompts for missing values)
pypreset augment ./my-project

# Auto-detect everything, no prompts
pypreset augment --auto

# Generate only specific components
pypreset augment --test-workflow --lint-workflow --gitignore

# Add Docker and devcontainer
pypreset augment --dockerfile --devcontainer

# Add PyPI publish workflow
pypreset augment --pypi-publish

# Add documentation scaffolding
pypreset augment --docs mkdocs

# Generate a README from your project metadata
pypreset augment --readme

# Overwrite existing files
pypreset augment --force
workflow -- 本地工作流验证

使用 act 在本地验证 GitHub Actions 工作流。代理会自动检测是否已安装 act,可在支持的系统上安装,并直接显示所有 act 输出。

# Verify all workflows (dry-run, no containers)
pypreset workflow verify

# Verify a specific workflow file
pypreset workflow verify --workflow .github/workflows/ci.yaml

# Verify a specific job
pypreset workflow verify --job lint

# Full run (executes in containers, requires Docker)
pypreset workflow verify --full-run

# Auto-install act if missing
pypreset workflow verify --auto-install

# Pass extra flags to act
pypreset workflow verify --flag="--secret=GITHUB_TOKEN=xxx"

# Check if act is installed
pypreset workflow check-act

# Install act automatically
pypreset workflow install-act

支持自动安装的目标系统:Arch Linux(pacman)、Ubuntu/Debian(apt)、Fedora(dnf)、使用 Homebrew 的 macOS/Linux。其他系统会显示指向 act 安装页面 的链接。

version -- 发布管理
pypreset version release --bump patch     # 0.1.0 -> 0.1.1
pypreset version release --bump minor     # 0.1.0 -> 0.2.0
pypreset version release --bump major     # 0.1.0 -> 1.0.0
pypreset version release-version 2.0.0    # Explicit version
pypreset version rerun <ver>              # Re-tag and push an existing version
pypreset version rerelease <ver>          # Delete and recreate a GitHub release

需要安装并完成身份验证的 gh CLI。

metadata -- PyPI 元数据管理
pypreset metadata show                                   # Display current metadata
pypreset metadata set --description "My cool package"    # Set description
pypreset metadata set --github-owner myuser              # Auto-generate URLs
pypreset metadata set --license MIT --keyword python     # Set license and keywords
pypreset metadata check                                  # Check publish-readiness
badges -- 生成徽章 Markdown

读取 pyproject.toml 以检测项目名称、仓库 URL 和许可证,然后输出可粘贴到 README 中的徽章 Markdown。

pypreset badges                  # Badges for current directory
pypreset badges ./my-project     # Badges for a specific project
其他命令
pypreset list-presets              # List all available presets
pypreset show-preset <name>        # Show full preset details
pypreset validate [path]           # Validate project structure
pypreset analyze [path]            # Detect and display project tooling
pypreset config show               # Show current user defaults
pypreset config init               # Create default config file
pypreset config set <key> <value>  # Set a config value

预设

内置预设:empty-package、cli-tool、data-science、discord-bot。

预设是用于定义元数据、依赖项、目录结构、测试、格式设置等内容的 YAML 文件。它们支持通过 base: 字段进行单层继承。预设可以通过将 metadata.readme_template 设置为自定义 .j2 文件名来覆盖 README 模板。

自定义预设

将自定义预设文件放在 ~/.config/pypreset/presets/ 中,或直接传入文件:

pypreset create my-project --config ./my-preset.yaml

同名的用户预设优先于内置预设。

用户配置

持久化默认值存储在 ~/.config/pypreset/config.yaml 中,并作为优先级最低的一层应用(预设和 CLI 标志会覆盖这些默认值)。

pypreset config init                    # Create with defaults
pypreset config set layout flat         # Set default layout
pypreset config set type_checker ty     # Set default type checker
pypreset config show                    # View current config

MCP 服务

pypreset 已作为 io.github.KaiErikNiermann/pypreset 发布到 MCP Registry。

通过注册表安装(推荐):

# Claude Code
claude mcp add pypreset -- uvx --from "pypreset[mcp]" pypreset-mcp

# Or add manually to ~/.claude/settings.json
{
  "mcpServers": {
    "pypreset": {
      "command": "uvx",
      "args": ["--from", "pypreset[mcp]", "pypreset-mcp"]
    }
  }
}

或在本地安装:

pip install pypreset[mcp]
{
  "mcpServers": {
    "pypreset": {
      "command": "pypreset-mcp",
      "args": []
    }
  }
}

可用工具:

工具描述
create_project使用预设创建新项目,并可选择覆盖配置
augment_project为现有项目添加 CI 工作流、测试、Docker、文档等
validate_project检查项目目录的结构是否正确
verify_workflow使用 act 在本地验证 GitHub Actions 工作流
list_presets列出所有可用预设及其描述
show_preset显示指定预设的完整 YAML 配置
get_user_config读取当前用户级默认配置
set_user_config更新用户级默认配置
set_project_metadata在 pyproject.toml 中设置或更新 PyPI 元数据
generate_badges根据项目元数据生成徽章 Markdown 链接

资源:preset://list、config://user、template://list

提示词:create-project、augment-project

开发

所有任务都使用 Justfile:

just install     # Install dependencies
just test        # Run tests
just test-cov    # Tests with coverage
just lint        # Ruff check
just format      # Ruff format
just typecheck   # Pyright
just radon       # Cyclomatic complexity check
just check       # lint + typecheck + radon + test
just all         # format + lint-fix + typecheck + radon + test

开发环境设置和指南请参阅 CONTRIBUTING.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。