altimate-datapilot-cli 0.0.18__tar.gz → 0.0.19__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.bumpversion.cfg +1 -1
  2. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.github/workflows/github-actions.yml +0 -60
  3. {altimate-datapilot-cli-0.0.18/src/altimate_datapilot_cli.egg-info → altimate-datapilot-cli-0.0.19}/PKG-INFO +1 -1
  4. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/conf.py +1 -1
  5. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/setup.py +3 -2
  6. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19/src/altimate_datapilot_cli.egg-info}/PKG-INFO +1 -1
  7. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/SOURCES.txt +2 -0
  8. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/requires.txt +2 -0
  9. altimate-datapilot-cli-0.0.19/src/datapilot/__init__.py +1 -0
  10. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/cli/main.py +2 -0
  11. altimate-datapilot-cli-0.0.19/src/datapilot/core/mcp_utils/__init__.py +2 -0
  12. altimate-datapilot-cli-0.0.19/src/datapilot/core/mcp_utils/mcp.py +176 -0
  13. altimate-datapilot-cli-0.0.18/src/datapilot/__init__.py +0 -1
  14. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.cookiecutterrc +0 -0
  15. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.coveragerc +0 -0
  16. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.editorconfig +0 -0
  17. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.pre-commit-config.yaml +0 -0
  18. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.pre-commit-hooks.yaml +0 -0
  19. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/.readthedocs.yml +0 -0
  20. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/AUTHORS.rst +0 -0
  21. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/CHANGELOG.rst +0 -0
  22. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/CONTRIBUTING.rst +0 -0
  23. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/LICENSE +0 -0
  24. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/MANIFEST.in +0 -0
  25. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/README.md +0 -0
  26. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/README.rst +0 -0
  27. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/ci/bootstrap.py +0 -0
  28. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/ci/requirements.txt +0 -0
  29. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/ci/templates/.github/workflows/github-actions.yml +0 -0
  30. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/authors.rst +0 -0
  31. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/changelog.rst +0 -0
  32. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/configuration.rst +0 -0
  33. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/contributing.rst +0 -0
  34. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/features.rst +0 -0
  35. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/hooks.rst +0 -0
  36. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/index.rst +0 -0
  37. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/insights.rst +0 -0
  38. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/installation.rst +0 -0
  39. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/introduction.rst +0 -0
  40. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/performance.rst +0 -0
  41. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/readme.rst +0 -0
  42. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/reference/datapilot.rst +0 -0
  43. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/reference/index.rst +0 -0
  44. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/requirements.txt +0 -0
  45. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/spelling_wordlist.txt +0 -0
  46. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/docs/usage.rst +0 -0
  47. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/pyproject.toml +0 -0
  48. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/pytest.ini +0 -0
  49. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/setup.cfg +0 -0
  50. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/dependency_links.txt +0 -0
  51. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/entry_points.txt +0 -0
  52. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/not-zip-safe +0 -0
  53. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/altimate_datapilot_cli.egg-info/top_level.txt +0 -0
  54. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/__main__.py +0 -0
  55. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/cli/__init__.py +0 -0
  56. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/clients/__init__.py +0 -0
  57. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/clients/altimate/__init__.py +0 -0
  58. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/clients/altimate/client.py +0 -0
  59. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/clients/altimate/utils.py +0 -0
  60. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/config/__init__.py +0 -0
  61. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/config/config.py +0 -0
  62. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/config/utils.py +0 -0
  63. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/__init__.py +0 -0
  64. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/__init__.py +0 -0
  65. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/base/__init__.py +0 -0
  66. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/base/insight.py +0 -0
  67. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/report.py +0 -0
  68. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/schema.py +0 -0
  69. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/sql/__init__.py +0 -0
  70. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/sql/base/__init__.py +0 -0
  71. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/sql/base/insight.py +0 -0
  72. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/sql/runtime/__init__.py +0 -0
  73. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/sql/static/__init__.py +0 -0
  74. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/insights/utils.py +0 -0
  75. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/__init__.py +0 -0
  76. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/__init__.py +0 -0
  77. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/cli/__init__.py +0 -0
  78. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/cli/cli.py +0 -0
  79. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/constants.py +0 -0
  80. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/exceptions.py +0 -0
  81. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/executor.py +0 -0
  82. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/factory.py +0 -0
  83. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/formatting.py +0 -0
  84. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/hooks/__init__.py +0 -0
  85. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/hooks/executor_hook.py +0 -0
  86. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/__init__.py +0 -0
  87. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/base.py +0 -0
  88. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/__init__.py +0 -0
  89. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/base.py +0 -0
  90. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_column_desc_are_same.py +0 -0
  91. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_column_name_contract.py +0 -0
  92. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_args_have_desc.py +0 -0
  93. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_macro_has_desc.py +0 -0
  94. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_all_columns.py +0 -0
  95. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_labels_keys.py +0 -0
  96. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_meta_keys.py +0 -0
  97. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_properties_file.py +0 -0
  98. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_group.py +0 -0
  99. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_name.py +0 -0
  100. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_has_tests_by_type.py +0 -0
  101. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_materialization_by_childs.py +0 -0
  102. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_name_contract.py +0 -0
  103. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_and_childs.py +0 -0
  104. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_database.py +0 -0
  105. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_parents_schema.py +0 -0
  106. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_model_tags.py +0 -0
  107. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_childs.py +0 -0
  108. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_columns_have_desc.py +0 -0
  109. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_all_columns.py +0 -0
  110. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_freshness.py +0 -0
  111. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_labels_keys.py +0 -0
  112. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_loader.py +0 -0
  113. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_meta_keys.py +0 -0
  114. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests.py +0 -0
  115. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_group.py +0 -0
  116. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_name.py +0 -0
  117. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_has_tests_by_type.py +0 -0
  118. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_table_has_description.py +0 -0
  119. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/checks/check_source_tags.py +0 -0
  120. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/dbt_test/__init__.py +0 -0
  121. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/dbt_test/base.py +0 -0
  122. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/dbt_test/missing_primary_key_tests.py +0 -0
  123. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/dbt_test/test_coverage.py +0 -0
  124. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/__init__.py +0 -0
  125. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/base.py +0 -0
  126. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/documentation_on_stale_columns.py +0 -0
  127. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/exposures_dependent_on_private_models.py +0 -0
  128. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/public_models_without_contracts.py +0 -0
  129. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_columns.py +0 -0
  130. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/governance/undocumented_public_models.py +0 -0
  131. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/README.md +0 -0
  132. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/__init__.py +0 -0
  133. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/base.py +0 -0
  134. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/direct_join_to_source.py +0 -0
  135. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/downstream_models_dependent_on_source.py +0 -0
  136. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/duplicate_sources.py +0 -0
  137. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/hard_coded_references.py +0 -0
  138. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/joining_of_upstream_concepts.py +0 -0
  139. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/model_fanout.py +0 -0
  140. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/multiple_sources_joined.py +0 -0
  141. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/root_model.py +0 -0
  142. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/source_fanout.py +0 -0
  143. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_downstream_models.py +0 -0
  144. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/staging_model_dependent_on_staging_models.py +0 -0
  145. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/modelling/unused_sources.py +0 -0
  146. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/performance/__init__.py +0 -0
  147. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/performance/base.py +0 -0
  148. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/performance/chain_view_linking.py +0 -0
  149. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/performance/exposure_parent_materializations.py +0 -0
  150. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/schema.py +0 -0
  151. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/sql/__init__.py +0 -0
  152. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/sql/base.py +0 -0
  153. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/sql/sql_check.py +0 -0
  154. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/__init__.py +0 -0
  155. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/base.py +0 -0
  156. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/model_directories_structure.py +0 -0
  157. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/model_naming_conventions.py +0 -0
  158. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/source_directories_structure.py +0 -0
  159. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/structure/test_directory_structure.py +0 -0
  160. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/insights/utils.py +0 -0
  161. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/schemas/__init__.py +0 -0
  162. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/schemas/catalog.py +0 -0
  163. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/schemas/manifest.py +0 -0
  164. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/utils.py +0 -0
  165. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/__init__.py +0 -0
  166. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/catalog/__init__.py +0 -0
  167. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/__init__.py +0 -0
  168. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/catalog/v1/wrapper.py +0 -0
  169. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/catalog/wrapper.py +0 -0
  170. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/__init__.py +0 -0
  171. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/__init__.py +0 -0
  172. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/schemas.py +0 -0
  173. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v10/wrapper.py +0 -0
  174. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/__init__.py +0 -0
  175. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/schemas.py +0 -0
  176. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v11/wrapper.py +0 -0
  177. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/__init__.py +0 -0
  178. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/schemas.py +0 -0
  179. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/v12/wrapper.py +0 -0
  180. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/manifest/wrapper.py +0 -0
  181. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/run_results/__init__.py +0 -0
  182. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/core/platforms/dbt/wrappers/run_results/run_results.py +0 -0
  183. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/exceptions/__init__.py +0 -0
  184. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/exceptions/exceptions.py +0 -0
  185. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/schemas/__init__.py +0 -0
  186. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/schemas/constants.py +0 -0
  187. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/schemas/nodes.py +0 -0
  188. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/schemas/sql.py +0 -0
  189. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/utils/__init__.py +0 -0
  190. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/utils/formatting/__init__.py +0 -0
  191. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/utils/formatting/utils.py +0 -0
  192. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/src/datapilot/utils/utils.py +0 -0
  193. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/core/__init__.py +0 -0
  194. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/core/platform/__init__.py +0 -0
  195. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/core/platform/dbt/__init__.py +0 -0
  196. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/core/platform/dbt/test_cli.py +0 -0
  197. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/core/platform/dbt/test_utils.py +0 -0
  198. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/catalog_v1.json +0 -0
  199. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/catalog_v12.json +0 -0
  200. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/config.yml +0 -0
  201. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifest_v10.json +0 -0
  202. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifest_v10macroargs.json +0 -0
  203. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifest_v11.json +0 -0
  204. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifest_v11macroargs.json +0 -0
  205. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifest_v12.json +0 -0
  206. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_js.json +0 -0
  207. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_js2.json +0 -0
  208. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_js3.json +0 -0
  209. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_tuva.json +0 -0
  210. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_tuva2.json +0 -0
  211. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/data/manifests/manifest_tuva3.json +0 -0
  212. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/utils/__init__.py +0 -0
  213. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tests/utils/test_utils.py +0 -0
  214. {altimate-datapilot-cli-0.0.18 → altimate-datapilot-cli-0.0.19}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.0.18
2
+ current_version = 0.0.19
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -19,42 +19,6 @@ jobs:
19
19
  toxpython: 'python3.11'
20
20
  tox_env: 'docs'
21
21
  os: 'ubuntu-latest'
22
- - name: 'py39-pydantic28-cover (ubuntu)'
23
- python: '3.9'
24
- toxpython: 'python3.9'
25
- python_arch: 'x64'
26
- tox_env: 'py39-pydantic28-cover'
27
- os: 'ubuntu-latest'
28
- - name: 'py39-pydantic28-cover (windows)'
29
- python: '3.9'
30
- toxpython: 'python3.9'
31
- python_arch: 'x64'
32
- tox_env: 'py39-pydantic28-cover'
33
- os: 'windows-latest'
34
- - name: 'py39-pydantic28-cover (macos)'
35
- python: '3.9'
36
- toxpython: 'python3.9'
37
- python_arch: 'x64'
38
- tox_env: 'py39-pydantic28-cover'
39
- os: 'macos-13'
40
- - name: 'py39-pydantic210-cover'
41
- python: '3.9'
42
- toxpython: 'python3.9'
43
- python_arch: 'x64'
44
- tox_env: 'py39-pydantic210-cover'
45
- os: 'ubuntu-latest'
46
- - name: 'py39-pydantic28-nocov'
47
- python: '3.9'
48
- toxpython: 'python3.9'
49
- python_arch: 'x64'
50
- tox_env: 'py39-pydantic28-nocov'
51
- os: 'ubuntu-latest'
52
- - name: 'py39-pydantic210-nocov'
53
- python: '3.9'
54
- toxpython: 'python3.9'
55
- python_arch: 'x64'
56
- tox_env: 'py39-pydantic210-nocov'
57
- os: 'ubuntu-latest'
58
22
  - name: 'py310-pydantic28-cover'
59
23
  python: '3.10'
60
24
  toxpython: 'python3.10'
@@ -127,30 +91,6 @@ jobs:
127
91
  python_arch: 'x64'
128
92
  tox_env: 'py312-pydantic210-nocov'
129
93
  os: 'ubuntu-latest'
130
- - name: 'pypy39-pydantic28-cover'
131
- python: 'pypy-3.9'
132
- toxpython: 'pypy3.9'
133
- python_arch: 'x64'
134
- tox_env: 'pypy39-pydantic28-cover'
135
- os: 'ubuntu-latest'
136
- - name: 'pypy39-pydantic210-cover'
137
- python: 'pypy-3.9'
138
- toxpython: 'pypy3.9'
139
- python_arch: 'x64'
140
- tox_env: 'pypy39-pydantic210-cover'
141
- os: 'ubuntu-latest'
142
- - name: 'pypy39-pydantic28-nocov'
143
- python: 'pypy-3.9'
144
- toxpython: 'pypy3.9'
145
- python_arch: 'x64'
146
- tox_env: 'pypy39-pydantic28-nocov'
147
- os: 'ubuntu-latest'
148
- - name: 'pypy39-pydantic210-nocov'
149
- python: 'pypy-3.9'
150
- toxpython: 'pypy3.9'
151
- python_arch: 'x64'
152
- tox_env: 'pypy39-pydantic210-nocov'
153
- os: 'ubuntu-latest'
154
94
  - name: 'pypy310-pydantic28-cover'
155
95
  python: 'pypy-3.10'
156
96
  toxpython: 'pypy3.10'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.18
3
+ Version: 0.0.19
4
4
  Summary: Assistant for Data Teams
5
5
  Home-page: https://github.com/AltimateAI/datapilot-cli
6
6
  Author: Altimate Inc
@@ -15,7 +15,7 @@ project = "datapilot-cli"
15
15
  year = "2024"
16
16
  author = "Altimate Inc."
17
17
  copyright = f"{year}, {author}"
18
- version = release = "0.0.18"
18
+ version = release = "0.0.19"
19
19
 
20
20
  pygments_style = "trac"
21
21
  templates_path = ["."]
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  import re
3
2
  from pathlib import Path
4
3
 
@@ -13,7 +12,7 @@ def read(*names, **kwargs):
13
12
 
14
13
  setup(
15
14
  name="altimate-datapilot-cli",
16
- version="0.0.18",
15
+ version="0.0.19",
17
16
  license="MIT",
18
17
  description="Assistant for Data Teams",
19
18
  long_description="{}\n{}".format(
@@ -68,6 +67,8 @@ setup(
68
67
  "tabulate~=0.9.0",
69
68
  "requests>=2.31",
70
69
  "sqlglot~=25.30.0",
70
+ "mcp~=1.9.0",
71
+ "pyperclip~=1.8.2",
71
72
  ],
72
73
  extras_require={
73
74
  # eg:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: altimate-datapilot-cli
3
- Version: 0.0.18
3
+ Version: 0.0.19
4
4
  Summary: Assistant for Data Teams
5
5
  Home-page: https://github.com/AltimateAI/datapilot-cli
6
6
  Author: Altimate Inc
@@ -68,6 +68,8 @@ src/datapilot/core/insights/sql/base/__init__.py
68
68
  src/datapilot/core/insights/sql/base/insight.py
69
69
  src/datapilot/core/insights/sql/runtime/__init__.py
70
70
  src/datapilot/core/insights/sql/static/__init__.py
71
+ src/datapilot/core/mcp_utils/__init__.py
72
+ src/datapilot/core/mcp_utils/mcp.py
71
73
  src/datapilot/core/platforms/__init__.py
72
74
  src/datapilot/core/platforms/dbt/__init__.py
73
75
  src/datapilot/core/platforms/dbt/constants.py
@@ -4,3 +4,5 @@ ruamel.yaml~=0.18.6
4
4
  tabulate~=0.9.0
5
5
  requests>=2.31
6
6
  sqlglot~=25.30.0
7
+ mcp~=1.9.0
8
+ pyperclip~=1.8.2
@@ -0,0 +1 @@
1
+ __version__ = "0.0.19"
@@ -1,5 +1,6 @@
1
1
  import click
2
2
 
3
+ from datapilot.core.mcp_utils.mcp import mcp
3
4
  from datapilot.core.platforms.dbt.cli.cli import dbt
4
5
 
5
6
 
@@ -9,3 +10,4 @@ def datapilot():
9
10
 
10
11
 
11
12
  datapilot.add_command(dbt)
13
+ datapilot.add_command(mcp)
@@ -0,0 +1,2 @@
1
+ DBT = []
2
+ SQL = []
@@ -0,0 +1,176 @@
1
+ import asyncio
2
+ import json
3
+ import logging
4
+ import shutil
5
+ from dataclasses import dataclass
6
+
7
+ import click
8
+ import pyperclip
9
+ from mcp import ClientSession
10
+ from mcp import StdioServerParameters
11
+ from mcp.client.stdio import stdio_client
12
+
13
+ logging.basicConfig(level=logging.INFO)
14
+
15
+
16
+ @dataclass
17
+ class InputParameter:
18
+ name: str
19
+ type: str
20
+ required: bool
21
+ key: str
22
+ description: str
23
+
24
+
25
+ def find_input_tokens(data):
26
+ tokens = set()
27
+ if isinstance(data, list):
28
+ for item in data:
29
+ tokens.update(find_input_tokens(item))
30
+ elif isinstance(data, dict):
31
+ for value in data.values():
32
+ tokens.update(find_input_tokens(value))
33
+ elif isinstance(data, str) and data.startswith("${input:"):
34
+ tokens.add(data[8:-1].strip())
35
+ return tokens
36
+
37
+
38
+ # New mcp group
39
+ @click.group()
40
+ def mcp():
41
+ """mcp specific commands."""
42
+
43
+
44
+ @mcp.command("inspect-mcp-server")
45
+ def create_mcp_proxy():
46
+ content = click.edit()
47
+ if content is None:
48
+ click.echo("No input provided.")
49
+ return
50
+
51
+ try:
52
+ config = json.loads(content)
53
+ except json.JSONDecodeError:
54
+ click.echo("Invalid JSON content.")
55
+ return
56
+
57
+ inputs = {}
58
+ mcp_config = config.get("mcp", {})
59
+
60
+ # Select server
61
+ # Support both "servers" and "mcpServers" naming conventions
62
+ servers = mcp_config.get("mcpServers", mcp_config.get("servers", {}))
63
+ server_names = list(servers.keys())
64
+
65
+ if not server_names:
66
+ ctx = click.get_current_context()
67
+ click.secho("Error: No servers configured in mcp config (tried keys: 'mcpServers' and 'servers')", fg="red")
68
+ ctx.exit(1)
69
+
70
+ if len(server_names) > 1:
71
+ server_name = click.prompt("Choose a server", type=click.Choice(server_names), show_choices=True)
72
+ else:
73
+ server_name = server_names[0]
74
+
75
+ if server_name in servers:
76
+ server_config = servers[server_name]
77
+
78
+ # Collect input tokens ONLY from this server's config
79
+ input_ids = find_input_tokens(server_config.get("args", []))
80
+ input_ids.update(find_input_tokens(server_config.get("env", {})))
81
+
82
+ # Create prompt definitions using BOTH discovered tokens AND configured inputs
83
+ existing_input_ids = {i["id"] for i in mcp_config.get("inputs", [])}
84
+ inputs_to_prompt = input_ids.intersection(existing_input_ids)
85
+ inputs_to_prompt.update(input_ids) # Add any undiscovered-by-config inputs
86
+
87
+ input_configs = []
88
+ for input_id in inputs_to_prompt:
89
+ input_def = next((d for d in mcp_config.get("inputs", []) if d["id"] == input_id), {})
90
+ inputs[input_id] = click.prompt(
91
+ input_def.get("description", input_id),
92
+ hide_input=True,
93
+ )
94
+ # Create InputParameters config entry
95
+ input_configs.append(
96
+ InputParameter(
97
+ name=input_def.get("name", input_id),
98
+ type="password",
99
+ required=True,
100
+ key=input_id,
101
+ description=input_def.get("description", ""),
102
+ ).__dict__
103
+ )
104
+
105
+ # Replace input tokens in args
106
+ processed_args = [
107
+ inputs.get(arg[8:-1], arg) if isinstance(arg, str) and arg.startswith("${input:") else arg
108
+ for arg in server_config.get("args", [])
109
+ ]
110
+
111
+ # Replace input tokens in environment variables
112
+ processed_env = {
113
+ k: inputs.get(v[8:-1], v) if isinstance(v, str) and v.startswith("${input:") else v
114
+ for k, v in server_config.get("env", {}).items()
115
+ }
116
+
117
+ # Execute with processed parameters
118
+ output = asyncio.run(
119
+ list_tools(server_config=server_config, command=server_config["command"], args=processed_args, env=processed_env)
120
+ )
121
+ # Add processed parameters to output
122
+ output_with_name = {
123
+ "name": server_name,
124
+ "config": input_configs,
125
+ "command": server_config["command"],
126
+ "args": [arg.replace("${input:", "${") if isinstance(arg, str) else arg for arg in server_config.get("args", [])],
127
+ "env": [
128
+ {"key": k, "value": v.replace("${input:", "${") if isinstance(v, str) else v}
129
+ for k, v in server_config.get("env", {}).items()
130
+ ],
131
+ **output,
132
+ }
133
+ output_json = json.dumps(output_with_name, indent=2)
134
+ click.echo(output_json)
135
+ try:
136
+ pyperclip.copy(output_json)
137
+ click.secho("\nOutput copied to clipboard!", fg="green")
138
+ except pyperclip.PyperclipException as e:
139
+ click.secho(f"\nFailed to copy to clipboard: {e!s}", fg="yellow")
140
+
141
+
142
+ async def list_tools(server_config: dict, command: str, args: list[str], env: dict[str, str]):
143
+ command_path = shutil.which(command)
144
+ if not command_path:
145
+ raise click.UsageError(f"Command not found: {command}")
146
+
147
+ try:
148
+ # Only support stdio server type
149
+ server_type = server_config.get("type", "stdio")
150
+ if server_type != "stdio":
151
+ raise click.UsageError(f"Only stdio MCP servers are supported. Found type: {server_type}")
152
+
153
+ server_params = StdioServerParameters(
154
+ command=command_path,
155
+ args=args,
156
+ env=env,
157
+ )
158
+
159
+ async with stdio_client(server_params) as (read, write):
160
+ async with ClientSession(read, write) as session:
161
+ await session.initialize()
162
+ tools = await session.list_tools()
163
+ mcp_tools = [
164
+ {
165
+ "name": tool.name,
166
+ "description": tool.description,
167
+ "inputSchema": tool.inputSchema,
168
+ }
169
+ for tool in tools.tools
170
+ ]
171
+
172
+ return {
173
+ "tools": mcp_tools,
174
+ }
175
+ except Exception as e:
176
+ raise click.UsageError("Could not connect to MCP server: " + str(e)) from e
@@ -1 +0,0 @@
1
- __version__ = "0.0.18"