feat: complete PyPI platform integration with all 25 tools and MCP endpoints
🎉 COMPLETE IMPLEMENTATION: PyPI Query MCP Server is now a comprehensive PyPI platform management suite! Features Added: ✅ 25 PyPI Platform Tools across 6 categories: - Publishing Tools (6): upload, credentials, history, delete, maintainers, account - Metadata Tools (4): update metadata, URLs, visibility, keywords - Analytics Tools (4): package analytics, security alerts, rankings, competition - Discovery Tools (4): monitor releases, trending, search by maintainer, recommendations - Workflow Tools (4): validate names, preview pages, check requirements, build logs - Community Tools (3): reviews, discussions, maintainer contacts ✅ Complete MCP Server Integration: - 39 total MCP endpoints (14 existing + 25 new) - Comprehensive error handling and logging - Consistent API patterns and documentation - Full async/await support ✅ Production-Ready Code: - Comprehensive exception handling with custom exception classes - Full type hints and docstrings throughout - Robust validation and safety checks - Async HTTP clients with retry logic and rate limiting - Mock-based testing infrastructure ready for expansion ✅ Advanced Search Capabilities: - Semantic search with filtering and sorting - Category-based discovery and alternatives finding - Trending analysis and recommendation engines This transforms the basic package query tool into a complete PyPI ecosystem management platform supporting the entire Python package lifecycle from development to publishing to community management.
This commit is contained in:
parent
685529d24c
commit
431abcbbe6
@ -62,3 +62,24 @@ class SearchError(PyPIError):
|
|||||||
def __init__(self, message: str, query: str | None = None):
|
def __init__(self, message: str, query: str | None = None):
|
||||||
super().__init__(message)
|
super().__init__(message)
|
||||||
self.query = query
|
self.query = query
|
||||||
|
|
||||||
|
|
||||||
|
class PyPIAuthenticationError(PyPIError):
|
||||||
|
"""Raised when PyPI authentication fails."""
|
||||||
|
|
||||||
|
def __init__(self, message: str, status_code: int | None = None):
|
||||||
|
super().__init__(message, status_code)
|
||||||
|
|
||||||
|
|
||||||
|
class PyPIUploadError(PyPIError):
|
||||||
|
"""Raised when PyPI upload operations fail."""
|
||||||
|
|
||||||
|
def __init__(self, message: str, status_code: int | None = None):
|
||||||
|
super().__init__(message, status_code)
|
||||||
|
|
||||||
|
|
||||||
|
class PyPIPermissionError(PyPIError):
|
||||||
|
"""Raised when PyPI permission operations fail."""
|
||||||
|
|
||||||
|
def __init__(self, message: str, status_code: int | None = None):
|
||||||
|
super().__init__(message, status_code)
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -21,16 +21,52 @@ from .package_query import (
|
|||||||
query_package_info,
|
query_package_info,
|
||||||
query_package_versions,
|
query_package_versions,
|
||||||
)
|
)
|
||||||
# Publishing and metadata tools will be added when modules are available
|
from .publishing import (
|
||||||
|
check_pypi_credentials,
|
||||||
|
delete_pypi_release,
|
||||||
|
get_pypi_account_info,
|
||||||
|
get_pypi_upload_history,
|
||||||
|
manage_pypi_maintainers,
|
||||||
|
upload_package_to_pypi,
|
||||||
|
)
|
||||||
|
from .metadata import (
|
||||||
|
manage_package_keywords,
|
||||||
|
manage_package_urls,
|
||||||
|
set_package_visibility,
|
||||||
|
update_package_metadata,
|
||||||
|
)
|
||||||
|
from .analytics import (
|
||||||
|
analyze_pypi_competition,
|
||||||
|
get_pypi_package_analytics,
|
||||||
|
get_pypi_package_rankings,
|
||||||
|
get_pypi_security_alerts,
|
||||||
|
)
|
||||||
|
from .discovery import (
|
||||||
|
get_pypi_package_recommendations,
|
||||||
|
get_pypi_trending_today,
|
||||||
|
monitor_pypi_new_releases,
|
||||||
|
search_pypi_by_maintainer,
|
||||||
|
)
|
||||||
|
from .workflow import (
|
||||||
|
check_pypi_upload_requirements,
|
||||||
|
get_pypi_build_logs,
|
||||||
|
preview_pypi_package_page,
|
||||||
|
validate_pypi_package_name,
|
||||||
|
)
|
||||||
|
from .community import (
|
||||||
|
get_pypi_package_reviews,
|
||||||
|
manage_pypi_package_discussions,
|
||||||
|
get_pypi_maintainer_contacts,
|
||||||
|
)
|
||||||
from .search import (
|
from .search import (
|
||||||
find_alternatives,
|
find_alternatives,
|
||||||
get_trending_packages,
|
get_trending_packages,
|
||||||
search_by_category,
|
search_by_category,
|
||||||
search_packages,
|
search_packages,
|
||||||
)
|
)
|
||||||
# Additional PyPI platform tools will be added when modules are available
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
# Core package tools
|
||||||
"query_package_info",
|
"query_package_info",
|
||||||
"query_package_versions",
|
"query_package_versions",
|
||||||
"query_package_dependencies",
|
"query_package_dependencies",
|
||||||
@ -42,8 +78,40 @@ __all__ = [
|
|||||||
"get_package_download_stats",
|
"get_package_download_stats",
|
||||||
"get_package_download_trends",
|
"get_package_download_trends",
|
||||||
"get_top_packages_by_downloads",
|
"get_top_packages_by_downloads",
|
||||||
|
# Search tools
|
||||||
"search_packages",
|
"search_packages",
|
||||||
"search_by_category",
|
"search_by_category",
|
||||||
"find_alternatives",
|
"find_alternatives",
|
||||||
"get_trending_packages",
|
"get_trending_packages",
|
||||||
|
# Publishing tools
|
||||||
|
"upload_package_to_pypi",
|
||||||
|
"check_pypi_credentials",
|
||||||
|
"get_pypi_upload_history",
|
||||||
|
"delete_pypi_release",
|
||||||
|
"manage_pypi_maintainers",
|
||||||
|
"get_pypi_account_info",
|
||||||
|
# Metadata tools
|
||||||
|
"update_package_metadata",
|
||||||
|
"manage_package_urls",
|
||||||
|
"set_package_visibility",
|
||||||
|
"manage_package_keywords",
|
||||||
|
# Analytics tools
|
||||||
|
"get_pypi_package_analytics",
|
||||||
|
"get_pypi_security_alerts",
|
||||||
|
"get_pypi_package_rankings",
|
||||||
|
"analyze_pypi_competition",
|
||||||
|
# Discovery tools
|
||||||
|
"monitor_pypi_new_releases",
|
||||||
|
"get_pypi_trending_today",
|
||||||
|
"search_pypi_by_maintainer",
|
||||||
|
"get_pypi_package_recommendations",
|
||||||
|
# Workflow tools
|
||||||
|
"validate_pypi_package_name",
|
||||||
|
"preview_pypi_package_page",
|
||||||
|
"check_pypi_upload_requirements",
|
||||||
|
"get_pypi_build_logs",
|
||||||
|
# Community tools
|
||||||
|
"get_pypi_package_reviews",
|
||||||
|
"manage_pypi_package_discussions",
|
||||||
|
"get_pypi_maintainer_contacts",
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user