-
PyPI 账户
- 在 pypi.org 注册账户
- 生成 API Token:Settings → API tokens → Create token
-
安装发布工具
pip install build twine
编辑 pyproject.toml:
[project]
version = "0.1.0" # 更新版本号python -m build这会在 dist/ 目录生成:
newapi-mcp-0.1.0.tar.gz(源代码包)newapi-mcp-0.1.0-py3-none-any.whl(wheel 包)
twine check dist/*方式 A:使用 API Token(推荐)
twine upload dist/* -u __token__ -p pypi-YOUR_API_TOKEN方式 B:使用用户名和密码
twine upload dist/*
# 输入用户名和密码访问 https://pypi.org/project/newapi-mcp/ 确认包已发布。
pip install newapi-mcpStdio 是 MCP 的标准传输方式,用于与 Claude Desktop 等客户端通信。
Claude Desktop
↓
stdin/stdout
↓
newapi-mcp server
↓
New API Backend
macOS/Linux:
~/.config/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"newapi-mcp": {
"command": "python",
"args": ["-m", "newapi_mcp"],
"env": {
"NEWAPI_BASE_URL": "https://your-newapi-instance.com",
"NEWAPI_API_KEY": "your-api-key"
}
}
}
}关闭并重新打开 Claude Desktop。MCP 服务器应该会自动启动。
在 .env 文件中配置(或在 Claude Desktop 配置中设置):
NEWAPI_BASE_URL=https://your-newapi-instance.com
NEWAPI_API_KEY=your-api-key在 Claude Desktop 中:
- 打开新对话
- 查看左下角 MCP 图标
- 应该看到 "newapi-mcp" 服务器已连接
{
"mcpServers": {
"newapi-mcp": {
"command": "python",
"args": ["-m", "newapi_mcp"],
"env": {
"NEWAPI_BASE_URL": "https://api.newapi.com",
"NEWAPI_API_KEY": "sk-xxx",
"LOG_LEVEL": "INFO"
}
}
}
}检查日志:
# macOS/Linux
tail -f ~/.config/Claude/logs/mcp.log
# Windows
Get-Content $env:APPDATA\Claude\logs\mcp.log -Tail 50- 确认环境变量已设置
- 检查 API 密钥是否有效
- 验证网络连接
- 检查
NEWAPI_BASE_URL是否正确 - 确认防火墙允许出站连接
- 验证 API 服务器是否在线
pip install -e ".[dev]"python -m newapi_mcp或使用命令行工具:
newapi-mcp使用 MCP 客户端库测试:
import asyncio
from mcp.client.stdio import StdioClientTransport
from mcp.client import ClientSession
async def test():
transport = StdioClientTransport(
command="python",
args=["-m", "newapi_mcp"]
)
async with ClientSession(transport) as session:
# 列出所有工具
tools = await session.list_tools()
print(f"Available tools: {len(tools.tools)}")
# 调用工具
result = await session.call_tool(
"get_model_list",
arguments={}
)
print(result)
asyncio.run(test())pytest tests/# 格式检查
black --check src/
# Lint 检查
ruff check src/
# 类型检查
mypy src/在发布前,确保完成以下检查:
- 更新
pyproject.toml中的版本号 - 更新
CHANGELOG.md(如果有) - 所有测试通过:
pytest tests/ - 代码格式正确:
black src/ - 没有 lint 错误:
ruff check src/ - 没有类型错误:
mypy src/ - 构建成功:
python -m build - 包验证通过:
twine check dist/* - Git 标签已创建:
git tag v0.1.0 - 提交已推送到 GitHub
- MAJOR (1.0.0): 不兼容的 API 变更
- MINOR (0.1.0): 向后兼容的新功能
- PATCH (0.0.1): 向后兼容的 bug 修复
# 1. 更新版本
# 编辑 pyproject.toml
# 2. 提交更改
git add pyproject.toml
git commit -m "chore: bump version to 0.1.0"
# 3. 创建标签
git tag v0.1.0
# 4. 推送
git push origin main
git push origin v0.1.0
# 5. 构建和发布
python -m build
twine upload dist/*A: 增加版本号,然后重新发布。PyPI 不允许覆盖已发布的版本。
A:
- Stdio: 标准输入/输出,用于本地进程通信(Claude Desktop)
- HTTP: 网络传输,用于远程服务器
A: 使用进程管理器(如 systemd、supervisor)确保服务器持续运行。
A:
- 使用环境变量
- 不要在代码中硬编码
- 使用
.env文件(不要提交到 Git) - 在 Claude Desktop 配置中使用环境变量