[build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry] name = "mcpypi" version = "1.0.0" description = "🎤 mcpypi - Your Master of Ceremonies for PyPI! The ultimate PyPI package intelligence platform through Model Context Protocol (MCP)" authors = ["Hal "] readme = "README.md" license = "MIT" homepage = "https://github.com/loonghao/pypi-query-mcp-server" repository = "https://github.com/loonghao/pypi-query-mcp-server" documentation = "https://github.com/loonghao/pypi-query-mcp-server" keywords = ["mcp", "pypi", "package", "dependency", "python", "security", "license", "analysis", "intelligence", "claude"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Software Distribution", "Topic :: Security", "Topic :: System :: Systems Administration", "Framework :: AsyncIO", ] packages = [{include = "pypi_query_mcp"}] [tool.poetry.dependencies] python = "^3.10" fastmcp = "^2.0.0" httpx = "^0.28.0" packaging = "^24.0" pydantic = "^2.0.0" pydantic-settings = "^2.0.0" click = "8.1.7" feedparser = "^6.0.0" [tool.poetry.group.dev.dependencies] pytest = "^8.0.0" pytest-asyncio = "^0.23.0" pytest-cov = "^6.0.0" pytest-mock = "^3.12.0" ruff = "^0.12.0" pre-commit = "^4.0.0" nox = "^2025.0.0" commitizen = "^3.0.0" [tool.poetry.scripts] mcpypi = "pypi_query_mcp.server:main" pypi-query-mcp = "pypi_query_mcp.server:main" [tool.ruff] target-version = "py310" line-length = 88 [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long, handled by black "B008", # do not perform function calls in argument defaults "C901", # too complex ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] [tool.isort] profile = "black" multi_line_output = 3 line_length = 88 known_first_party = ["pypi_query_mcp"] [tool.pytest.ini_options] minversion = "6.0" addopts = "-ra -q --strict-markers --strict-config" testpaths = ["tests"] asyncio_mode = "auto" [tool.coverage.run] source = ["pypi_query_mcp"] omit = ["tests/*"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", ] [tool.commitizen] name = "cz_conventional_commits" tag_format = "v$version" version_scheme = "pep440" version_provider = "poetry" update_changelog_on_bump = true major_version_zero = true