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,默认pypiskip_existing(boolean, optional): 是否跳过已存在的版本,默认 falseproject_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。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pkg_publisher-0.1.6.tar.gz
(18.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pkg_publisher-0.1.6.tar.gz.
File metadata
- Download URL: pkg_publisher-0.1.6.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ced88450bad509ac507ca1b9381bca2c505eafb270f5895730ead26d61bdf94b
|
|
| MD5 |
4babf52b5eaeb5ee4e01a7daedfecc29
|
|
| BLAKE2b-256 |
e399641e81b08ed75b093310c86a992ed2e50a641a5f50536b504f538fc1ec18
|
File details
Details for the file pkg_publisher-0.1.6-py3-none-any.whl.
File metadata
- Download URL: pkg_publisher-0.1.6-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f358cf756a2dcc6349cc75261debe29264ec3601c7271190842b220b558da31
|
|
| MD5 |
37d7676f621a28d3144a5f0239b4f5b2
|
|
| BLAKE2b-256 |
6a07903280b8b9b7fe30fd95d65abf4ebc49e7ac6f89cfacef905ee65e8607ef
|