Skip to main content
Glama

Game Services MCP Server

pyproject.toml7.25 kB
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "mcp_server" description = "MCP Server" readme = "README.md" authors = [ { name = "ag2ai", email = "support@ag2.ai" }, ] keywords = ["ag2", "mcp", "multi-agent", "LLM", "AI", "autonomous agents"] requires-python = ">=3.9" classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: OS Independent", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Libraries", "Topic :: Software Development", "Typing :: Typed", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "Environment :: Web Environment", "Framework :: AsyncIO", "Framework :: Pydantic", "Framework :: Pydantic :: 2", ] dynamic = ["version"] dependencies = [ "ag2[openai,mcp,mcp-proxy-gen]>=0.9.4", "pydantic[email]", # TODO: Check if this is needed "fastapi", ] [project.optional-dependencies] # public distributions server = [ "uvicorn>=0.31.0", "gunicorn>=23.0.0 ; platform_system != 'Windows'", "waitress>=3.0.0 ; platform_system == 'Windows'", ] submodules = [ "mcp-server[server]" ] # dev dependencies lint = [ "types-PyYAML", "types-setuptools", "types-ujson", "types-Pygments", "types-docutils", "mypy==1.15.0", "ruff==0.11.6", # "pyupgrade-directories==0.3.0", "bandit==1.8.3", # Semgrep is downgraded to 1.79.0 to avoid dependency conflicts "semgrep>=1.79.0", "codespell==2.4.1", "pytest-mypy-plugins==3.2.0", ] test-core = [ "coverage[toml]==7.8.0", "pytest==8.3.5", "pytest-asyncio==0.26.0", "pytest-rerunfailures==15.0", "httpx", ] testing = [ "mcp-server[submodules]", "mcp-server[test-core]", "mcp-server[server]", # Uvicorn is needed for testing ] dev = [ "mcp-server[submodules,lint,testing]", "pre-commit==4.2.0", "detect-secrets==1.5.0", ] [project.urls] Homepage = "https://mcp.ag2.ai/" Documentation = "https://mcp.ag2.ai/" Tracker = "https://mcp.ag2.ai/" Source = "https://github.com/ag2-mcp-servers" [tool.hatch.version] path = "mcp_server/__about__.py" [tool.hatch.build] skip-excluded-dirs = true exclude = [ "/tests", "/docs", ] [tool.hatch.metadata] allow-direct-references = true [tool.hatch.build.targets.wheel] only-include = ["mcp_server"] [tool.hatch.build.targets.wheel.sources] # "src" = "" # "scripts" = "mcp_server/scripts" [tool.mypy] files = ["mcp_server", "tests"] strict = true python_version = "3.12" ignore_missing_imports = true install_types = true non_interactive = true plugins = [ "pydantic.mypy", ] # from https://blog.wolt.com/engineering/2021/09/30/professional-grade-mypy-configuration/ disallow_untyped_defs = true no_implicit_optional = true check_untyped_defs = true warn_return_any = true show_error_codes = true warn_unused_ignores = false disallow_incomplete_defs = true disallow_untyped_decorators = true disallow_any_unimported = false [tool.ruff] fix = true line-length = 88 # target-version = 'py39' include = ["mcp_server/**/*.py", "mcp_server/**/*.pyi", "tests/**/*.py", "pyproject.toml"] exclude = ["docs/docs_src", "tests/openapi/security/expected_*.py"] [tool.ruff.lint] select = [ "E", # pycodestyle errors https://docs.astral.sh/ruff/rules/#error-e "W", # pycodestyle warnings https://docs.astral.sh/ruff/rules/#warning-w "C90", # mccabe https://docs.astral.sh/ruff/rules/#mccabe-c90 "N", # pep8-naming https://docs.astral.sh/ruff/rules/#pep8-naming-n "D", # pydocstyle https://docs.astral.sh/ruff/rules/#pydocstyle-d "I", # isort https://docs.astral.sh/ruff/rules/#isort-i "F", # pyflakes https://docs.astral.sh/ruff/rules/#pyflakes-f "ASYNC", # flake8-async https://docs.astral.sh/ruff/rules/#flake8-async-async "C4", # flake8-comprehensions https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4 "B", # flake8-bugbear https://docs.astral.sh/ruff/rules/#flake8-bugbear-b "Q", # flake8-quotes https://docs.astral.sh/ruff/rules/#flake8-quotes-q "T20", # flake8-print https://docs.astral.sh/ruff/rules/#flake8-print-t20 "SIM", # flake8-simplify https://docs.astral.sh/ruff/rules/#flake8-simplify-sim "PT", # flake8-pytest-style https://docs.astral.sh/ruff/rules/#flake8-pytest-style-pt "PTH", # flake8-use-pathlib https://docs.astral.sh/ruff/rules/#flake8-use-pathlib-pth "TCH", # flake8-type-checking https://docs.astral.sh/ruff/rules/#flake8-type-checking-tch "RUF", # Ruff-specific rules https://docs.astral.sh/ruff/rules/#ruff-specific-rules-ruf "PERF", # Perflint https://docs.astral.sh/ruff/rules/#perflint-perf ] ignore = [ "E501", # line too long, handled by formatter later "D100", "D101", "D102", "D103", "D104", "D415", "F403", "TC003", ] [tool.ruff.lint.isort] case-sensitive = true [tool.ruff.format] docstring-code-format = true [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.lint.flake8-bugbear] [tool.pytest.ini_options] minversion = "7.0" addopts = "-q -m 'not slow'" testpaths = [ "tests", ] markers = [ "slow", "all", "anthropic", "azure_oai", "openai", "togetherai", "llm: mark test for use with LLMs", "flaky: mark test as flaky", ] # Add filterwarnings to suppress the specific UserWarning filterwarnings = "ignore:.*custom validator is returning a value other than `self`.*:UserWarning" asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" [tool.coverage.run] parallel = true branch = true concurrency = [ "multiprocessing", "thread" ] source = [ "ag2_backend", # "tests", ] context = '${CONTEXT}' omit = [ "**/__init__.py", ] [tool.coverage.report] show_missing = true skip_empty = true sort = "miss" exclude_also = [ "if __name__ == .__main__.:", "self.logger", "def __repr__", "lambda: None", "from .*", "import .*", '@(abc\.)?abstractmethod', "raise NotImplementedError", 'raise AssertionError', 'logger\..*', "pass", '\.\.\.', ] omit = [ '*/__about__.py', '*/__main__.py', '*/__init__.py', ] [tool.bandit] [tool.black] line-length = 88 extend-exclude = """ /( docs/docs_src | some_other_dir )/ """ [tool.codespell] skip = "./venv*,./docs/site/*,./htmlcov,./examples/openapi/whatsapp_openapi_complete.json" ignore-words = ".codespell-whitelist.txt"

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/ag2-mcp-servers/game-services-api'

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