Skip to main content

pkg-publisher

更新日期: 2026-01-29 版本: 0.1.6

Python Package Publisher MCP Service - 专门用于构建和发布 Python 包到 PyPI 的 MCP 工具。

功能特性

  • 包构建: 自动构建 Python 包(.whl 和 .tar.gz)
  • 包发布: 一键发布到 PyPI 或 TestPyPI
  • 包验证: 验证包是否符合 PyPI 规范
  • 包信息查询: 查询 PyPI 上的包信息
  • 环境变量支持: 从环境变量读取 API Token
  • 自动化友好: 适合 CI/CD 集成

安装

cd pkg_publisher_standalone
pip install -e .

使用方法

MCP 配置

在 MCP 客户端配置中添加:

方式一:使用 uvx 从 PyPI 安装

{
  "mcpServers": {
    "pkg-publisher": {
      "command": "uvx",
      "args": [
        "pkg-publisher"
      ],
      "env": {
        "PYPI_API_TOKEN": "your-pypi-api-token",
        "TEST_PYPI_API_TOKEN": "your-testpypi-api-token",
        "PKG_PUBLISHER_PYTHON_PATH": "D:\\ProgramData\\miniconda3\\python.exe"
      }
    }
  }
}

环境配置

PyPI API Token 配置

方式一:系统环境变量

# Windows CMD
set PYPI_API_TOKEN=pypi-xxx...

# Windows PowerShell
$env:PYPI_API_TOKEN = "pypi-xxx..."

# Linux/Mac
export PYPI_API_TOKEN="pypi-xxx..."

方式二:MCP 配置

{
  "mcpServers": {
    "pkg-publisher": {
      "command": "uvx",
      "args": ["pkg-publisher"],
      "env": {
        "PYPI_API_TOKEN": "pypi-xxx...",
        "TEST_PYPI_API_TOKEN": "pypi-xxx..."
      }
    }
  }
}

环境变量说明

变量名 说明 必填 示例
PYPI_API_TOKEN PyPI API Token 发布到 PyPI 时必填 pypi-xxx...
TEST_PYPI_API_TOKEN TestPyPI API Token 发布到 TestPyPI 时必填 pypi-xxx...
PKG_PUBLISHER_PYTHON_PATH 指定使用的 Python 可执行文件路径 否 C:\Python39\python.exe
PKG_PUBLISHER_LOG_LEVEL 日志级别 否 DEBUG/INFO/WARNING/ERROR
PKG_PUBLISHER_LOG_FILE 自定义日志文件路径 否 /path/to/log.txt

工具接口

build_package

构建 Python 包。

参数:

  • project_path (string, optional): 项目路径,默认当前目录
  • clean (boolean, optional): 是否清理旧的构建产物,默认 true

返回:

{
  "success": true,
  "output": "build output",
  "error": "",
  "dist_files": [
    "/path/to/package-0.1.0-py3-none-any.whl",
    "/path/to/package-0.1.0.tar.gz"
  ],
  "project_path": "/path/to/project"
}

publish_package

发布 Python 包到 PyPI。

参数:

  • package_path (string, optional): 包文件路径,默认 dist/*
  • repository (string, optional): 仓库名称,pypi 或 testpypi,默认 pypi
  • skip_existing (boolean, optional): 是否跳过已存在的版本,默认 false
  • project_path (string, optional): 项目路径,用于查找 dist 目录

返回:

{
  "success": true,
  "output": "upload output",
  "error": "",
  "repository": "pypi",
  "package_files": [
    "/path/to/package-0.1.0-py3-none-any.whl",
    "/path/to/package-0.1.0.tar.gz"
  ]
}

validate_package

验证 Python 包是否符合 PyPI 规范。

参数:

  • package_path (string): 包文件路径

返回:

{
  "success": true,
  "output": "validation output",
  "error": "",
  "package_path": "/path/to/package-0.1.0-py3-none-any.whl"
}

get_package_info

查询 PyPI 上的包信息。

参数:

  • package_name (string): 包名
  • version (string, optional): 版本号
  • repository (string, optional): 仓库名称,pypi 或 testpypi,默认 pypi

返回:

{
  "success": true,
  "package_name": "package-name",
  "version": "0.1.0",
  "info": {
    "name": "package-name",
    "version": "0.1.0",
    "summary": "Package description",
    ...
  },
  "error": null
}

使用示例

构建并发布

# 构建包
build_result = build_package()
if build_result["success"]:
    print(f"Built: {build_result['dist_files']}")

# 发布到 PyPI
publish_result = publish_package(repository="pypi")
if publish_result["success"]:
    print("Published successfully!")

发布到 TestPyPI

# 构建包
build_result = build_package()

# 发布到 TestPyPI
publish_result = publish_package(
    repository="testpypi",
    skip_existing=True
)

验证包

# 验证包
validate_result = validate_package("dist/package-0.1.0-py3-none-any.whl")
if validate_result["success"]:
    print("Package is valid")

查询包信息

# 查询包信息
info_result = get_package_info("requests")
if info_result["success"]:
    print(f"Latest version: {info_result['info']['info']['version']}")

# 查询特定版本
info_result = get_package_info("requests", version="2.31.0")

技术架构

  • 框架: FastMCP
  • 构建工具: python-build
  • 发布工具: twine
  • HTTP 客户端: requests
  • 平台: 跨平台

安全说明

  • API Token 仅从环境变量读取,不记录到日志
  • 支持临时 Token(有效期限制)
  • 不在 MCP 响应中返回 Token
  • 建议使用 PyPI 的 Trusted Publishers 或 Token API

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request。

Metadata

Release files for pkg-publisher 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pkg-publisher 0.1.6
File Size Uploaded Provenance
pkg_publisher-0.1.6.tar.gz 18.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pkg-publisher 0.1.6
File Interpreter ABI Platform
pkg_publisher-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 37.9 kB

Release files / pkg_publisher-0.1.6.tar.gz

Download URL pkg_publisher-0.1.6.tar.gz
Size 18.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ced88450bad509ac507ca1b9381bca2c505eafb270f5895730ead26d61bdf94b
BLAKE2b-256 checksum
How to use checksums
e399641e81b08ed75b093310c86a992ed2e50a641a5f50536b504f538fc1ec18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / pkg_publisher-0.1.6-py3-none-any.whl

Download URL pkg_publisher-0.1.6-py3-none-any.whl
Size 19.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f358cf756a2dcc6349cc75261debe29264ec3601c7271190842b220b558da31
BLAKE2b-256 checksum
How to use checksums
6a07903280b8b9b7fe30fd95d65abf4ebc49e7ac6f89cfacef905ee65e8607ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Security for pkg-publisher 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page