Skip to main content
Glama

Keboola Explorer MCP Server

pyproject.toml4.69 kB
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "keboola-mcp-server" version = "1.23.2" description = "MCP server for interacting with Keboola Connection" readme = "README.md" requires-python = ">=3.10" license = "MIT" authors = [{ name = "Keboola", email = "devel@keboola.com" }] dependencies = [ "fastmcp == 2.10.6", "mcp == 1.12.3", "httpx ~= 0.28", "jsonpath-ng ~= 1.7", "jsonschema ~= 4.23", "pyjwt ~= 2.10", "json-log-formatter ~= 1.0", "cryptography ~= 45.0", "pydantic >=2.0,<2.12", ] [project.optional-dependencies] codestyle = [ "black ~= 25.1", "isort ~= 6.0", "flake8 ~= 7.2", "Flake8-pyproject ~= 1.2", "flake8-bugbear ~= 24.12", "flake8-colors ~= 0.1", "flake8-isort ~= 6.1", "flake8-pytest-style ~= 2.1", "flake8-quotes ~= 3.4", "flake8-typing-imports ~= 1.16", "pep8-naming ~= 0.14", ] tests = [ "python-dateutil ~= 2.9", "pytest ~= 8.3", "pytest-asyncio ~= 0.25", "pytest-cov ~= 6.0", "pytest-datadir ~= 1.6.1", "python-dotenv ~= 1.1", "pytest-mock ~= 3.14", ] integtests = [ "kbcstorage ~= 0.9", ] dev = [ "tox ~= 4.23", ] [project.scripts] keboola_mcp_server = "keboola_mcp_server.cli:main" keboola-mcp-server = "keboola_mcp_server.cli:main" [tool.setuptools.package-data] "keboola_mcp_server.resources" = ["storage-schema.json"] [tool.black] target-version = ["py310"] skip-string-normalization = true line-length = 120 extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist )/ ''' [tool.isort] profile = "black" line_length = 120 multi_line_output = 3 use_parentheses = true [tool.hatch.build.targets.wheel] packages = ["src/keboola_mcp_server"] [tool.pytest.ini_options] addopts = [ "--import-mode=importlib", ] asyncio_default_fixture_loop_scope = "function" asyncio_mode = "strict" log_cli = false log_level = "INFO" log_cli_format = "%(asctime)s [%(levelname)8s] %(name)s: %(message)s (%(filename)s:%(lineno)s)" log_cli_date_format = "%Y-%m-%d %H:%M:%S" [tool.flake8] max-line-length = 120 import-order-style = "edited" application-package-names = ["keboola_mcp_server"] min-python-version = "3.10.0" pytest-fixture-no-parentheses = true # Skip unused import checks F401 in __init__.py files; re-exported imports are intentional. per-file-ignores = [ "__init__.py: F401", ] # For Compatibility with black we skip: E203 whitespace before ':', W503 checks line break before binary operator # For Compatibility with isort we skip: I101 Imported names are in the wrong order since we follow isort format using # alphabetical case-sensitive sort A, B, a, b extend-ignore = ["E203", "W503", "I101"] [tool.tox] requires = ["tox>=4.23"] env_list = ["python", "black", "flake8", "check-tools-docs"] labels = { cs-fix = ["black"], cs = ["flake8"] } [tool.tox.env_run_base] description = "Run tests" extras = ["tests"] package = "wheel" wheel_build_env = ".pkg" commands = [ [ "pytest", { replace = "posargs", default = [ "tests", "--cov=keboola_mcp_server", "--cov-report=term-missing", "--cov-report=xml", "--junitxml", "./test-results.xml", ], extend = true }, ], ] [tool.tox.env.integtests] description = "Run integration tests" extras = ["tests", "integtests"] pass_env = [ "INTEGTEST_STORAGE_API_URL", "INTEGTEST_STORAGE_TOKEN", "INTEGTEST_WORKSPACE_SCHEMA", ] commands = [ [ "pytest", { replace = "posargs", default = [ "integtests", "--junitxml", "./integtest-results.xml", ], extend = true }, ], ] [tool.tox.env.black] description = "Fix code formatting using black" package = "skip" deps = [ "black ~= 25.1", ] commands = [["black", "src/", "tests/", "integtests/"]] [tool.tox.env.flake8] description = "Run code style check using flake8" package = "skip" deps = [ "flake8 ~= 7.2", "Flake8-pyproject ~= 1.2", "flake8-bugbear ~= 24.12", "flake8-colors ~= 0.1", "flake8-isort ~= 6.1", "flake8-pytest-style ~= 2.1", "flake8-quotes ~= 3.4", "flake8-typing-imports ~= 1.16", "pep8-naming ~= 0.14", ] commands = [["flake8", "src/", "tests/", "integtests/"]] [tool.tox.env.check-tools-docs] description = "Check if TOOLS.md is up-to-date with tool definitions" extras = [] package = "wheel" wheel_build_env = ".pkg" allowlist_externals = ["git"] commands = [ ["python", "-m", "keboola_mcp_server.generate_tool_docs"], ["git", "diff", "--exit-code", "TOOLS.md"], ]

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/keboola/keboola-mcp-server'

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