Skip to main content
Glama

MCP AI Hub

by feiskyer
pyproject.toml8.42 kB
# MCP AI Hub - Project Configuration # This file defines the package metadata, dependencies, and development tools configuration [project] # Package identification name = "mcp-ai-hub" # PyPI package name version = "0.1.2" # Package version (follow semantic versioning) description = "A Model Context Protocol (MCP) server that provides unified access to various AI providers through LiteLM. Chat with OpenAI, Anthropic, and 100+ other AI models using a single, consistent interface." readme = "README.md" # Long description from README file # Package authors and maintainers authors = [ { name = "Pengfei Ni", email = "feiskyer@gmail.com" } ] # Python version requirements # Requires Python 3.10+ for modern typing features and async/await improvements requires-python = ">=3.10" # Runtime dependencies # These packages are required for the MCP AI Hub to function dependencies = [ # MCP (Model Context Protocol) server implementation # Provides the core MCP server functionality and protocol handling "mcp>=1.2.0", # LiteLM - Unified API for 100+ AI providers # Handles API calls to OpenAI, Anthropic, Google, Azure, AWS Bedrock, etc. "litellm>=1.0.0", # HTTP client with SOCKS proxy support # Used for API calls to AI providers and supports corporate proxies "httpx[socks]>=0.25.0", # YAML configuration file parsing # Handles reading and parsing of ~/.ai_hub.yaml configuration files "pyyaml>=6.0", # Data validation and serialization # Used for configuration validation with type safety "pydantic>=2.0.0" ] # Package classifiers for PyPI classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Artificial Intelligence" ] # Development dependencies # These packages are only needed for development, testing, and code quality [project.optional-dependencies] dev = [ # Testing framework # Core testing functionality for unit and integration tests "pytest>=7.0.0", # Async testing support # Enables testing of async functions and MCP server operations "pytest-asyncio>=0.21.0", # Code coverage reporting # Measures test coverage and generates coverage reports "pytest-cov>=4.0.0", # Fast Python linter and formatter # Modern alternative to flake8, black, isort, and pylint "ruff>=0.1.0", # Static type checker # Ensures type safety and catches type-related bugs "mypy>=1.0.0", # Type stubs for PyYAML # Provides type information for YAML library "types-pyyaml>=6.0.0", # Git hook framework # Runs code quality checks before commits "pre-commit>=3.0.0" ] # Console scripts # Defines command-line entry points for the package [project.scripts] mcp-ai-hub = "mcp_ai_hub.server:main" # Main CLI command - runs the MCP server # Pytest configuration # Settings for the pytest testing framework [tool.pytest.ini_options] # Test discovery paths testpaths = ["tests"] # Look for tests in the tests directory # Test file naming patterns python_files = ["test_*.py", "*_test.py"] # Files that contain tests python_classes = ["Test*"] # Test class naming pattern python_functions = ["test_*"] # Test function naming pattern # Additional pytest options addopts = [ "--strict-markers", # Enforce strict marker usage "--strict-config", # Enforce strict configuration validation "--cov=src/mcp_ai_hub", # Measure coverage for the main package "--cov-report=term-missing", # Show missing lines in terminal "--cov-report=html", # Generate HTML coverage report "--cov-report=xml", # Generate XML coverage report (for CI) ] # Async testing configuration asyncio_mode = "auto" # Automatically handle async tests # Coverage.py configuration # Settings for measuring code coverage during testing [tool.coverage.run] # Source directories to measure coverage for source = ["src/mcp_ai_hub"] # Only measure coverage for our main package # Files to exclude from coverage omit = [ "*/tests/*", # Don't measure coverage for test files "*/test_*", # Don't measure coverage for test modules ] [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__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] # Ruff configuration # Fast Python linter and formatter settings [tool.ruff] # Target Python version for compatibility target-version = "py310" # Python 3.10+ features # Maximum line length (matches Black's default) line-length = 88 # PEP 8 recommended maximum line length # Ruff linting rules # Configure which rules to enable/disable [tool.ruff.lint] # Rules to enable (select) select = [ "E", # pycodestyle errors - basic Python style errors "W", # pycodestyle warnings - Python style warnings "F", # pyflakes - detect undefined variables, imports, etc. "I", # isort - import sorting and organization "B", # flake8-bugbear - find likely bugs and design problems "C4", # flake8-comprehensions - optimize comprehensions "UP", # pyupgrade - upgrade syntax to newer Python versions "ARG001", # unused-function-args - detect unused function arguments "SIM", # flake8-simplify - simplify code patterns ] # Rules to ignore (disable) ignore = [ "E501", # line too long - handled by automatic formatting "B008", # do not perform function calls in argument defaults - common in FastAPI/MCP "C901", # too complex - sometimes complexity is necessary for functionality ] # Per-file ignore rules # Override linting rules for specific files or directories [tool.ruff.lint.per-file-ignores] # Allow unused imports in __init__.py files (common for package initialization) "__init__.py" = ["F401"] # imported but unused - needed for package structure # Allow unused arguments in test files (common for test fixtures) "tests/*" = ["ARG001"] # unused-function-args - test functions often have unused parameters # MyPy configuration # Static type checker settings for type safety [tool.mypy] # Python version target python_version = "3.10" # Target Python 3.10+ features # Strict type checking options warn_return_any = true # Warn when function returns Any type warn_unused_configs = true # Warn about unused mypy configuration disallow_untyped_defs = true # Require type annotations for all functions disallow_incomplete_defs = true # Require complete type annotations check_untyped_defs = true # Type check untyped functions disallow_untyped_decorators = true # Require typed decorators no_implicit_optional = true # Don't allow implicit Optional types warn_redundant_casts = true # Warn about unnecessary type casts warn_unused_ignores = true # Warn about unused type: ignore comments warn_no_return = true # Warn about missing return statements warn_unreachable = true # Warn about unreachable code strict_equality = true # Strict equality checking show_error_codes = true # Show error codes in output # MyPy module overrides # Disable type checking for third-party packages that lack type stubs [[tool.mypy.overrides]] # LiteLM doesn't have complete type stubs, ignore import errors module = "litellm.*" ignore_missing_imports = true [[tool.mypy.overrides]] # MCP library doesn't have complete type stubs, ignore import errors module = "mcp.*" ignore_missing_imports = true # Build system configuration # Defines how the package should be built and packaged [build-system] # Build backend requirements requires = ["hatchling"] # Modern Python build backend # Build backend to use build-backend = "hatchling.build" # Hatchling handles packaging and distribution # Additional metadata [project.urls] Homepage = "https://github.com/feiskyer/mcp-ai-hub" Repository = "https://github.com/feiskyer/mcp-ai-hub" Documentation = "https://github.com/feiskyer/mcp-ai-hub#readme" "Bug Tracker" = "https://github.com/feiskyer/mcp-ai-hub/issues"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/feiskyer/mcp-ai-hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server