mcp-instana 0.2.1__tar.gz → 0.3.0__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.
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/.gitignore +1 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/PKG-INFO +2 -1
- mcp_instana-0.3.0/conftest.py +4 -0
- mcp_instana-0.3.0/docs/PRIVACY.md +31 -0
- mcp_instana-0.3.0/docs/assets/.gitattributes +1 -0
- mcp_instana-0.3.0/docs/assets/instana.svg +15 -0
- mcp_instana-0.3.0/mcpb/.mcpbignore +2 -0
- mcp_instana-0.3.0/mcpb/assets/instana.svg +15 -0
- mcp_instana-0.3.0/mcpb/manifest.json +83 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/mcpb/pack.sh +7 -6
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/pyproject.toml +4 -6
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/application/application_alert_config.py +45 -12
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/application_analyze.py +28 -6
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/application/application_catalog.py +11 -2
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/application_global_alert_config.py +60 -21
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/application_metrics.py +20 -4
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/application_resources.py +20 -4
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/application_settings.py +111 -35
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/application/application_topology.py +22 -14
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/automation/action_catalog.py +165 -188
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/automation/action_history.py +21 -6
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/core/server.py +7 -1
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/core/utils.py +42 -5
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/event/events_tools.py +30 -7
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/infrastructure/infrastructure_analyze.py +18 -4
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/infrastructure/infrastructure_catalog.py +72 -16
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/infrastructure/infrastructure_metrics.py +5 -1
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/infrastructure/infrastructure_resources.py +30 -11
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/infrastructure/infrastructure_topology.py +10 -2
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/log/log_alert_configuration.py +106 -31
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/settings/custom_dashboard_tools.py +30 -7
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/website/website_analyze.py +10 -2
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/website/website_catalog.py +14 -3
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/src/website/website_configuration.py +54 -13
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/website/website_metrics.py +10 -2
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_analyze.py +8 -8
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_global_alert_config.py +12 -8
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_metrics.py +6 -3
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_resources.py +6 -3
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_settings.py +10 -4
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_topology.py +24 -26
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/automation/test_action_catalog.py +148 -158
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/core/test_utils.py +7 -7
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_settings.py +18 -18
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_topology.py +26 -19
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/conftest.py +0 -1
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/utils/test_base_instana_client.py +1 -1
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/log/test_log_alert_configuration.py +44 -20
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/uv.lock +562 -560
- mcp_instana-0.2.1/.bob/mcp.json +0 -3
- mcp_instana-0.2.1/.github/workflows/mcpb.yml +0 -43
- mcp_instana-0.2.1/mcp-instana-fixed.mcpb +0 -0
- mcp_instana-0.2.1/mcpb/.mcpbignore +0 -179
- mcp_instana-0.2.1/mcpb/README.md +0 -1206
- mcp_instana-0.2.1/mcpb/manifest.json +0 -62
- mcp_instana-0.2.1/mcpb/mcpb.mcpb +0 -0
- mcp_instana-0.2.1/mcpb/pyproject.toml +0 -140
- mcp_instana-0.2.1/mcpb/src/application/application_alert_config.py +0 -658
- mcp_instana-0.2.1/mcpb/src/application/application_catalog.py +0 -155
- mcp_instana-0.2.1/mcpb/src/application/application_topology.py +0 -111
- mcp_instana-0.2.1/mcpb/src/automation/action_history.py +0 -338
- mcp_instana-0.2.1/mcpb/src/core/server.py +0 -668
- mcp_instana-0.2.1/mcpb/src/event/events_tools.py +0 -850
- mcp_instana-0.2.1/mcpb/src/infrastructure/infrastructure_catalog.py +0 -556
- mcp_instana-0.2.1/mcpb/src/infrastructure/infrastructure_topology.py +0 -320
- mcp_instana-0.2.1/mcpb/src/settings/custom_dashboard_tools.py +0 -417
- mcp_instana-0.2.1/mcpb/src/website/website_analyze.py +0 -433
- mcp_instana-0.2.1/mcpb/src/website/website_catalog.py +0 -171
- mcp_instana-0.2.1/mcpb/src/website/website_configuration.py +0 -770
- mcp_instana-0.2.1/src/__init__.py +0 -0
- mcp_instana-0.2.1/src/application/__init__.py +0 -1
- mcp_instana-0.2.1/src/application/application_analyze.py +0 -628
- mcp_instana-0.2.1/src/application/application_global_alert_config.py +0 -653
- mcp_instana-0.2.1/src/application/application_metrics.py +0 -359
- mcp_instana-0.2.1/src/application/application_resources.py +0 -371
- mcp_instana-0.2.1/src/application/application_settings.py +0 -1731
- mcp_instana-0.2.1/src/automation/action_catalog.py +0 -416
- mcp_instana-0.2.1/src/core/__init__.py +0 -1
- mcp_instana-0.2.1/src/core/utils.py +0 -213
- mcp_instana-0.2.1/src/event/__init__.py +0 -1
- mcp_instana-0.2.1/src/infrastructure/__init__.py +0 -1
- mcp_instana-0.2.1/src/infrastructure/infrastructure_analyze.py +0 -635
- mcp_instana-0.2.1/src/infrastructure/infrastructure_metrics.py +0 -171
- mcp_instana-0.2.1/src/infrastructure/infrastructure_resources.py +0 -624
- mcp_instana-0.2.1/src/log/__init__.py +0 -1
- mcp_instana-0.2.1/src/log/log_alert_configuration.py +0 -331
- mcp_instana-0.2.1/src/prompts/__init__.py +0 -16
- mcp_instana-0.2.1/src/prompts/application/__init__.py +0 -1
- mcp_instana-0.2.1/src/prompts/application/application_alerts.py +0 -54
- mcp_instana-0.2.1/src/prompts/application/application_catalog.py +0 -26
- mcp_instana-0.2.1/src/prompts/application/application_metrics.py +0 -57
- mcp_instana-0.2.1/src/prompts/application/application_resources.py +0 -26
- mcp_instana-0.2.1/src/prompts/application/application_settings.py +0 -75
- mcp_instana-0.2.1/src/prompts/application/application_topology.py +0 -30
- mcp_instana-0.2.1/src/prompts/events/__init__.py +0 -1
- mcp_instana-0.2.1/src/prompts/events/events_tools.py +0 -161
- mcp_instana-0.2.1/src/prompts/infrastructure/infrastructure_analyze.py +0 -72
- mcp_instana-0.2.1/src/prompts/infrastructure/infrastructure_catalog.py +0 -53
- mcp_instana-0.2.1/src/prompts/infrastructure/infrastructure_metrics.py +0 -45
- mcp_instana-0.2.1/src/prompts/infrastructure/infrastructure_resources.py +0 -74
- mcp_instana-0.2.1/src/prompts/infrastructure/infrastructure_topology.py +0 -38
- mcp_instana-0.2.1/src/prompts/settings/__init__.py +0 -0
- mcp_instana-0.2.1/src/prompts/settings/custom_dashboard.py +0 -157
- mcp_instana-0.2.1/src/prompts/website/__init__.py +0 -1
- mcp_instana-0.2.1/src/prompts/website/website_analyze.py +0 -35
- mcp_instana-0.2.1/src/prompts/website/website_catalog.py +0 -40
- mcp_instana-0.2.1/src/prompts/website/website_configuration.py +0 -105
- mcp_instana-0.2.1/src/prompts/website/website_metrics.py +0 -34
- mcp_instana-0.2.1/src/settings/__init__.py +0 -1
- mcp_instana-0.2.1/src/website/__init__.py +0 -0
- mcp_instana-0.2.1/src/website/website_metrics.py +0 -241
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/.github/dco.yml +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/.github/workflows/ci.yml +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/CONTRIBUTING.md +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/Dockerfile +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/LICENSE.md +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/README.md +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/architecture.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/call_tools.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/claudeResponse.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/claudeTools.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/copilot.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/copilotResponse.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/kubernetesEvents.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/mcpInstanaFlow.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/images/query_events.png +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/pyproject-runtime.toml +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/pyrightconfig.json +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/run_ruff_check.sh +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/application/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/core/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/event/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/infrastructure/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/log/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_alerts.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_catalog.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_metrics.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_resources.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_settings.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/application/application_topology.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/events/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/events/events_tools.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/infrastructure/infrastructure_analyze.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/infrastructure/infrastructure_catalog.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/infrastructure/infrastructure_metrics.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/infrastructure/infrastructure_resources.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/infrastructure/infrastructure_topology.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/settings/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/settings/custom_dashboard.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/website/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/website/website_analyze.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/website/website_catalog.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/website/website_configuration.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/prompts/website/website_metrics.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/settings/__init__.py +0 -0
- {mcp_instana-0.2.1/mcpb → mcp_instana-0.3.0}/src/website/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/README.md +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_alert_config.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/application/test_application_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/automation/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/core/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/core/test_server.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/README.md +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_alert_config.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_analyze.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_metrics.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/application/test_application_resources.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/event/test_events_tools.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/infrastructure/test_infrastructure_analyze.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/infrastructure/test_infrastructure_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/infrastructure/test_infrastructure_metrics.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/infrastructure/test_infrastructure_resources.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/infrastructure/test_infrastructure_topology.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/pytest.ini +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/run_e2e_tests.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/e2e/server/test_server_integration.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/event/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/event/test_events_tools.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/test_infrastructure_analyze.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/test_infrastructure_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/test_infrastructure_metrics.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/test_infrastructure_resources.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/infrastructure/test_infrastructure_topology.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/log/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_alerts.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_metrics.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_resources.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_settings.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/application/test_application_topology.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/events/test_events_tools.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/__init__.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/test_infrastructure_analyze.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/test_infrastructure_catalog.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/test_infrastructure_metrics.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/test_infrastructure_resources.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/prompts/infrastructure/test_infrastructure_topology.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/run_all_tests.py +0 -0
- {mcp_instana-0.2.1 → mcp_instana-0.3.0}/tests/run_all_tests_with_coverage.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-instana
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: MCP server for Instana
|
|
5
5
|
Author-email: Elina Priyadarshinee <Elina.priyadarshinee1@ibm.com>, Guangya Liu <gyliu@ibm.com>, Isabell Sippli <ischwert@de.ibm.com>, Jay Sharma <Jay.Sharma3@ibm.com>, Madhu Tadiparthi <madhu.tadiparthi@ibm.com>, Riya Kumari <Riya.Kumari3@ibm.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -8,6 +8,7 @@ License-File: LICENSE.md
|
|
|
8
8
|
Requires-Python: >=3.10
|
|
9
9
|
Requires-Dist: fastmcp==2.10.3
|
|
10
10
|
Requires-Dist: instana-client==1.0.0
|
|
11
|
+
Requires-Dist: mcp
|
|
11
12
|
Requires-Dist: pydantic==2.11.7
|
|
12
13
|
Requires-Dist: python-dotenv==1.1.0
|
|
13
14
|
Requires-Dist: requests==2.32.4
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Privacy Policy
|
|
2
|
+
|
|
3
|
+
Last updated: 2025-09-26
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This application is designed with privacy in mind. We do not collect, transmit, or store any personal information outside your device. All functionality is executed locally.
|
|
8
|
+
|
|
9
|
+
## Data Handling
|
|
10
|
+
|
|
11
|
+
- **Data Collection**: We do not collect any personal or usage data.
|
|
12
|
+
|
|
13
|
+
- **Data Storage**: No data is stored outside of your local environment.
|
|
14
|
+
|
|
15
|
+
- **Data Transmission**: No information is sent to external servers or third parties.
|
|
16
|
+
|
|
17
|
+
## Local Execution
|
|
18
|
+
|
|
19
|
+
All execution happens **entirely on your device**. The application operates without relying on remote services or external APIs.
|
|
20
|
+
|
|
21
|
+
## Third Parties
|
|
22
|
+
|
|
23
|
+
We do not share any information with third parties, as no data ever leaves your system.
|
|
24
|
+
|
|
25
|
+
## Changes to This Policy
|
|
26
|
+
|
|
27
|
+
We may update this privacy policy from time to time. Any changes will be clearly indicated in the version linked from the manifest.
|
|
28
|
+
|
|
29
|
+
## Contact
|
|
30
|
+
|
|
31
|
+
If you have any questions about this Privacy Policy, please contact the MCP Instana Team via mcp-instana@ibm.com.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.png filter=lfs diff=lfs merge=lfs -text
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg id="Ibm-Instana--Streamline-Carbon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="16" width="16">
|
|
2
|
+
<desc>
|
|
3
|
+
Ibm Instana Streamline Icon: https://streamlinehq.com
|
|
4
|
+
</desc>
|
|
5
|
+
<defs></defs>
|
|
6
|
+
<path d="M4.5 6.5h1v3H4.5Z" fill="#000000" stroke-width="0.5"></path>
|
|
7
|
+
<path d="M10.5 6.5h1v3h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
8
|
+
<path d="M6.5 5.5h1v6.5h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
9
|
+
<path d="M8.5 4.5h1v6.5h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
10
|
+
<path d="M10 2.5a1 1 0 1 0 2 0 1 1 0 1 0 -2 0" fill="#000000" stroke-width="0.5"></path>
|
|
11
|
+
<path d="M4 13.5a1 1 0 1 0 2 0 1 1 0 1 0 -2 0" fill="#000000" stroke-width="0.5"></path>
|
|
12
|
+
<path d="M11.0458 14H7v-1h4.0458l2.9541 -5 -1.3496 -2.28395 0.86135 -0.5088 1.3496 2.28395c0.18505 0.3137 0.18505 0.70385 0 1.0176l-2.9546 5c-0.1787 0.30275 -0.5088 0.4912 -0.86085 0.4912Z" fill="#000000" stroke-width="0.5"></path>
|
|
13
|
+
<path d="m2.4884 10.79295 -1.3496 -2.2842c-0.18505 -0.3137 -0.18505 -0.70385 0 -1.0176l2.9546 -5c0.1792 -0.303 0.5088 -0.4912 0.86085 -0.4912h4.0458v1H4.95425l-2.9541 5 1.3496 2.2842 -0.86135 0.5088Z" fill="#000000" stroke-width="0.5"></path>
|
|
14
|
+
<path id="_Transparent_Rectangle_" d="M0 0h16v16H0Z" fill="none" stroke-width="0.5"></path>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg id="Ibm-Instana--Streamline-Carbon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="16" width="16">
|
|
2
|
+
<desc>
|
|
3
|
+
Ibm Instana Streamline Icon: https://streamlinehq.com
|
|
4
|
+
</desc>
|
|
5
|
+
<defs></defs>
|
|
6
|
+
<path d="M4.5 6.5h1v3H4.5Z" fill="#000000" stroke-width="0.5"></path>
|
|
7
|
+
<path d="M10.5 6.5h1v3h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
8
|
+
<path d="M6.5 5.5h1v6.5h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
9
|
+
<path d="M8.5 4.5h1v6.5h-1Z" fill="#000000" stroke-width="0.5"></path>
|
|
10
|
+
<path d="M10 2.5a1 1 0 1 0 2 0 1 1 0 1 0 -2 0" fill="#000000" stroke-width="0.5"></path>
|
|
11
|
+
<path d="M4 13.5a1 1 0 1 0 2 0 1 1 0 1 0 -2 0" fill="#000000" stroke-width="0.5"></path>
|
|
12
|
+
<path d="M11.0458 14H7v-1h4.0458l2.9541 -5 -1.3496 -2.28395 0.86135 -0.5088 1.3496 2.28395c0.18505 0.3137 0.18505 0.70385 0 1.0176l-2.9546 5c-0.1787 0.30275 -0.5088 0.4912 -0.86085 0.4912Z" fill="#000000" stroke-width="0.5"></path>
|
|
13
|
+
<path d="m2.4884 10.79295 -1.3496 -2.2842c-0.18505 -0.3137 -0.18505 -0.70385 0 -1.0176l2.9546 -5c0.1792 -0.303 0.5088 -0.4912 0.86085 -0.4912h4.0458v1H4.95425l-2.9541 5 1.3496 2.2842 -0.86135 0.5088Z" fill="#000000" stroke-width="0.5"></path>
|
|
14
|
+
<path id="_Transparent_Rectangle_" d="M0 0h16v16H0Z" fill="none" stroke-width="0.5"></path>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": "0.2",
|
|
3
|
+
"name": "mcp-instana",
|
|
4
|
+
"display_name": "MCP Instana Server",
|
|
5
|
+
"version": "0.3.0",
|
|
6
|
+
"description": "MCP Instana Server for Observability",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "MCP Instana Team",
|
|
9
|
+
"email": "mcp-instana@ibm.com"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://www.ibm.com/docs/en/instana-observability",
|
|
12
|
+
"support": "https://github.com/instana/mcp-instana/issues",
|
|
13
|
+
"icon": "assets/instana.svg",
|
|
14
|
+
"server": {
|
|
15
|
+
"type": "python",
|
|
16
|
+
"entry_point": "mcp-instana",
|
|
17
|
+
"mcp_config": {
|
|
18
|
+
"command": "python3",
|
|
19
|
+
"args": [
|
|
20
|
+
"-m",
|
|
21
|
+
"pipx",
|
|
22
|
+
"run",
|
|
23
|
+
"--spec",
|
|
24
|
+
"mcp-instana==${user_config.version}",
|
|
25
|
+
"mcp-instana",
|
|
26
|
+
"--transport",
|
|
27
|
+
"stdio"
|
|
28
|
+
],
|
|
29
|
+
"env": {
|
|
30
|
+
"PYTHONPATH": "${__dirname}/lib",
|
|
31
|
+
"INSTANA_BASE_URL": "${user_config.instana_base_url}",
|
|
32
|
+
"INSTANA_API_TOKEN": "${user_config.instana_api_token}"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"user_config": {
|
|
37
|
+
"instana_base_url": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"title": "Instana Base URL",
|
|
40
|
+
"description": "Instana instance URL",
|
|
41
|
+
"default": "https://your-instana-url",
|
|
42
|
+
"required": true
|
|
43
|
+
},
|
|
44
|
+
"instana_api_token": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"title": "Instana API Token",
|
|
47
|
+
"description": "Your Instana API token",
|
|
48
|
+
"default": "",
|
|
49
|
+
"required": true,
|
|
50
|
+
"sensitive": true
|
|
51
|
+
},
|
|
52
|
+
"version": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"title": "Version",
|
|
55
|
+
"description": "Version of the mcp-instana package which is being installed.",
|
|
56
|
+
"default": "0.3.0",
|
|
57
|
+
"required": false
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"keywords": [
|
|
61
|
+
"instana",
|
|
62
|
+
"obserability"
|
|
63
|
+
],
|
|
64
|
+
"license": "Apache 2.0",
|
|
65
|
+
"privacy_policies": [
|
|
66
|
+
"https://github.com/instana/mcp-instana/blob/main/docs/PRIVACY.md"
|
|
67
|
+
],
|
|
68
|
+
"repository": {
|
|
69
|
+
"type": "git",
|
|
70
|
+
"url": "https://github.com/instana/mcp-instana"
|
|
71
|
+
},
|
|
72
|
+
"compatibility": {
|
|
73
|
+
"claude_desktop": ">=0.13.0",
|
|
74
|
+
"platforms": [
|
|
75
|
+
"darwin",
|
|
76
|
+
"win32",
|
|
77
|
+
"linux"
|
|
78
|
+
],
|
|
79
|
+
"runtimes": {
|
|
80
|
+
"python": ">=3.10"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
|
-
# Read version from pyproject.toml
|
|
5
|
-
VERSION=$(grep -E '^[[:space:]]*version[[:space:]]*=' pyproject.toml \
|
|
4
|
+
# Read version from ../pyproject.toml
|
|
5
|
+
VERSION=$(grep -E '^[[:space:]]*version[[:space:]]*=' ../pyproject.toml \
|
|
6
6
|
| head -n1 \
|
|
7
7
|
| sed -E 's/[[:space:]]*version[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/')
|
|
8
8
|
echo "Using version: $VERSION"
|
|
@@ -12,11 +12,12 @@ jq --arg ver "$VERSION" \
|
|
|
12
12
|
'.version = $ver | .user_config.version.default = $ver' \
|
|
13
13
|
manifest.json > manifest.tmp.json && mv manifest.tmp.json manifest.json
|
|
14
14
|
|
|
15
|
-
# Python lib
|
|
16
|
-
python -m pip install --target ./lib
|
|
15
|
+
# Python lib
|
|
16
|
+
python -m pip install -U pipx tomli --target ./lib
|
|
17
17
|
|
|
18
|
-
#
|
|
19
|
-
|
|
18
|
+
# Assets (logo, screenshots, etc)
|
|
19
|
+
mkdir -p assets/
|
|
20
|
+
cp ../docs/assets/* assets/
|
|
20
21
|
|
|
21
22
|
# Pack
|
|
22
23
|
npx -y @anthropic-ai/mcpb pack . mcp-instana.mcpb
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mcp-instana"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "MCP server for Instana"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "Elina Priyadarshinee", email = "Elina.priyadarshinee1@ibm.com"},
|
|
@@ -22,18 +22,16 @@ license = {text = "Apache-2.0"}
|
|
|
22
22
|
dependencies = [
|
|
23
23
|
# Core MCP framework - imported in src/prompts/__init__.py and src/core/server.py
|
|
24
24
|
"fastmcp==2.10.3",
|
|
25
|
-
|
|
25
|
+
# MCP SDK for types and annotations
|
|
26
|
+
"mcp",
|
|
26
27
|
# Instana API client - imported in src/event/events_tools.py
|
|
27
28
|
"instana_client==1.0.0",
|
|
28
|
-
|
|
29
29
|
# HTTP client - imported in src/core/utils.py
|
|
30
30
|
"requests==2.32.4",
|
|
31
|
-
|
|
32
31
|
# Environment loading - imported in src/core/server.py
|
|
33
32
|
"python-dotenv==1.1.0",
|
|
34
|
-
|
|
35
33
|
# Data validation - imported in src/infrastructure/infrastructure_metrics.py
|
|
36
|
-
"pydantic==2.11.7"
|
|
34
|
+
"pydantic==2.11.7"
|
|
37
35
|
]
|
|
38
36
|
|
|
39
37
|
# Development dependencies for testing, linting, and development
|
|
@@ -7,6 +7,11 @@ This module provides application alert configuration tools for Instana monitorin
|
|
|
7
7
|
import logging
|
|
8
8
|
from typing import Any, Dict, List, Optional, Union
|
|
9
9
|
|
|
10
|
+
from mcp.types import ToolAnnotations
|
|
11
|
+
|
|
12
|
+
from src.core.utils import BaseInstanaClient, register_as_tool, with_header_auth
|
|
13
|
+
from src.prompts import mcp
|
|
14
|
+
|
|
10
15
|
# Import the necessary classes from the SDK
|
|
11
16
|
try:
|
|
12
17
|
from instana_client.api.application_alert_configuration_api import (
|
|
@@ -18,8 +23,6 @@ except ImportError:
|
|
|
18
23
|
logger.error("Failed to import application alert configuration API", exc_info=True)
|
|
19
24
|
raise
|
|
20
25
|
|
|
21
|
-
from src.core.utils import BaseInstanaClient, register_as_tool, with_header_auth
|
|
22
|
-
|
|
23
26
|
# Configure logger for this module
|
|
24
27
|
logger = logging.getLogger(__name__)
|
|
25
28
|
|
|
@@ -30,7 +33,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
30
33
|
"""Initialize the Application Alert MCP tools client."""
|
|
31
34
|
super().__init__(read_token=read_token, base_url=base_url)
|
|
32
35
|
|
|
33
|
-
@register_as_tool
|
|
36
|
+
@register_as_tool(
|
|
37
|
+
title="Find Application Alert Config",
|
|
38
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
39
|
+
)
|
|
34
40
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
35
41
|
async def find_application_alert_config(self,
|
|
36
42
|
id: str,
|
|
@@ -78,7 +84,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
78
84
|
return {"error": f"Failed to get application alert config: {e!s}"}
|
|
79
85
|
|
|
80
86
|
|
|
81
|
-
@register_as_tool
|
|
87
|
+
@register_as_tool(
|
|
88
|
+
title="Find Application Alert Config Versions",
|
|
89
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
90
|
+
)
|
|
82
91
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
83
92
|
async def find_application_alert_config_versions(self,
|
|
84
93
|
id: str,
|
|
@@ -126,7 +135,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
126
135
|
logger.error(f"Error in find_application_alert_config_versions: {e}", exc_info=True)
|
|
127
136
|
return {"error": f"Failed to get application alert config versions: {e!s}"}
|
|
128
137
|
|
|
129
|
-
@register_as_tool
|
|
138
|
+
@register_as_tool(
|
|
139
|
+
title="Get Application Alert Configs",
|
|
140
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
141
|
+
)
|
|
130
142
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
131
143
|
async def get_application_alert_configs(self,
|
|
132
144
|
application_id: Optional[str] = None,
|
|
@@ -173,7 +185,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
173
185
|
logger.error(f"Error in get_application_alert_configs: {e}", exc_info=True)
|
|
174
186
|
return {"error": f"Failed to get application alert configs: {e!s}"}
|
|
175
187
|
|
|
176
|
-
@register_as_tool
|
|
188
|
+
@register_as_tool(
|
|
189
|
+
title="Delete Application Alert Config",
|
|
190
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=True)
|
|
191
|
+
)
|
|
177
192
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
178
193
|
async def delete_application_alert_config(self,
|
|
179
194
|
id: str,
|
|
@@ -214,7 +229,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
214
229
|
logger.error(f"Error in delete_application_alert_config: {e}", exc_info=True)
|
|
215
230
|
return {"error": f"Failed to delete application alert config: {e!s}"}
|
|
216
231
|
|
|
217
|
-
@register_as_tool
|
|
232
|
+
@register_as_tool(
|
|
233
|
+
title="Enable Application Alert Config",
|
|
234
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
235
|
+
)
|
|
218
236
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
219
237
|
async def enable_application_alert_config(self,
|
|
220
238
|
id: str,
|
|
@@ -259,7 +277,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
259
277
|
logger.error(f"Error in enable_application_alert_config: {e}", exc_info=True)
|
|
260
278
|
return {"error": f"Failed to enable application alert config: {e!s}"}
|
|
261
279
|
|
|
262
|
-
@register_as_tool
|
|
280
|
+
@register_as_tool(
|
|
281
|
+
title="Disable Application Alert Config",
|
|
282
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
283
|
+
)
|
|
263
284
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
264
285
|
async def disable_application_alert_config(self,
|
|
265
286
|
id: str,
|
|
@@ -304,7 +325,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
304
325
|
logger.error(f"Error in disable_application_alert_config: {e}", exc_info=True)
|
|
305
326
|
return {"error": f"Failed to disable application alert config: {e!s}"}
|
|
306
327
|
|
|
307
|
-
@register_as_tool
|
|
328
|
+
@register_as_tool(
|
|
329
|
+
title="Restore Application Alert Config",
|
|
330
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
331
|
+
)
|
|
308
332
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
309
333
|
async def restore_application_alert_config(self,
|
|
310
334
|
id: str,
|
|
@@ -354,7 +378,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
354
378
|
logger.error(f"Error in restore_application_alert_config: {e}", exc_info=True)
|
|
355
379
|
return {"error": f"Failed to restore application alert config: {e!s}"}
|
|
356
380
|
|
|
357
|
-
@register_as_tool
|
|
381
|
+
@register_as_tool(
|
|
382
|
+
title="Update Application Alert Config Baseline",
|
|
383
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
384
|
+
)
|
|
358
385
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
359
386
|
async def update_application_alert_config_baseline(self,
|
|
360
387
|
id: str,
|
|
@@ -399,7 +426,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
399
426
|
logger.error(f"Error in update_application_alert_config_baseline: {e}", exc_info=True)
|
|
400
427
|
return {"error": f"Failed to update application alert config baseline: {e!s}"}
|
|
401
428
|
|
|
402
|
-
@register_as_tool
|
|
429
|
+
@register_as_tool(
|
|
430
|
+
title="Create Application Alert Config",
|
|
431
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
432
|
+
)
|
|
403
433
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
404
434
|
async def create_application_alert_config(self,
|
|
405
435
|
payload: Union[Dict[str, Any], str],
|
|
@@ -521,7 +551,10 @@ class ApplicationAlertMCPTools(BaseInstanaClient):
|
|
|
521
551
|
logger.error(f"Error in create_application_alert_config: {e}", exc_info=True)
|
|
522
552
|
return {"error": f"Failed to create application alert config: {e!s}"}
|
|
523
553
|
|
|
524
|
-
@register_as_tool
|
|
554
|
+
@register_as_tool(
|
|
555
|
+
title="Update Application Alert Config",
|
|
556
|
+
annotations=ToolAnnotations(readOnlyHint=False, destructiveHint=False)
|
|
557
|
+
)
|
|
525
558
|
@with_header_auth(ApplicationAlertConfigurationApi)
|
|
526
559
|
async def update_application_alert_config(self,
|
|
527
560
|
id: str,
|
|
@@ -7,6 +7,10 @@ This module provides application analyze tool functionality for Instana monitori
|
|
|
7
7
|
import logging
|
|
8
8
|
from typing import Any, Dict, List, Optional, Union
|
|
9
9
|
|
|
10
|
+
from mcp.types import ToolAnnotations
|
|
11
|
+
|
|
12
|
+
from src.prompts import mcp
|
|
13
|
+
|
|
10
14
|
# Import the necessary classes from the SDK
|
|
11
15
|
try:
|
|
12
16
|
from instana_client.api.application_analyze_api import ApplicationAnalyzeApi
|
|
@@ -50,7 +54,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
50
54
|
logger.error(f"Error initializing ApplicationAnalyzeApi: {e}", exc_info=True)
|
|
51
55
|
raise
|
|
52
56
|
|
|
53
|
-
@register_as_tool
|
|
57
|
+
@register_as_tool(
|
|
58
|
+
title="Get Call Details",
|
|
59
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
60
|
+
)
|
|
54
61
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
55
62
|
async def get_call_details(
|
|
56
63
|
self,
|
|
@@ -97,7 +104,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
97
104
|
logger.error(f"Error getting call details: {e}", exc_info=True)
|
|
98
105
|
return {"error": f"Failed to get call details: {e!s}"}
|
|
99
106
|
|
|
100
|
-
@register_as_tool
|
|
107
|
+
@register_as_tool(
|
|
108
|
+
title="Get Trace Details",
|
|
109
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
110
|
+
)
|
|
101
111
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
102
112
|
async def get_trace_details(
|
|
103
113
|
self,
|
|
@@ -159,7 +169,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
159
169
|
return {"error": f"Failed to get trace details: {e!s}"}
|
|
160
170
|
|
|
161
171
|
|
|
162
|
-
@register_as_tool
|
|
172
|
+
@register_as_tool(
|
|
173
|
+
title="Get All Traces",
|
|
174
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
175
|
+
)
|
|
163
176
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
164
177
|
async def get_all_traces(
|
|
165
178
|
self,
|
|
@@ -287,7 +300,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
287
300
|
logger.error(f"Error in get_traces: {e}")
|
|
288
301
|
return {"error": f"Failed to get traces: {e!s}"}
|
|
289
302
|
|
|
290
|
-
@register_as_tool
|
|
303
|
+
@register_as_tool(
|
|
304
|
+
title="Get Grouped Trace Metrics",
|
|
305
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
306
|
+
)
|
|
291
307
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
292
308
|
async def get_grouped_trace_metrics(
|
|
293
309
|
self,
|
|
@@ -431,7 +447,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
431
447
|
logger.error(f"Error in get_grouped_trace_metrics: {e}")
|
|
432
448
|
return {"error": f"Failed to get grouped trace metrics: {e!s}"}
|
|
433
449
|
|
|
434
|
-
@register_as_tool
|
|
450
|
+
@register_as_tool(
|
|
451
|
+
title="Get Grouped Calls Metrics",
|
|
452
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
453
|
+
)
|
|
435
454
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
436
455
|
async def get_grouped_calls_metrics(
|
|
437
456
|
self,
|
|
@@ -585,7 +604,10 @@ class ApplicationAnalyzeMCPTools(BaseInstanaClient):
|
|
|
585
604
|
return {"error": f"Failed to get grouped call: {e!s}"}
|
|
586
605
|
|
|
587
606
|
|
|
588
|
-
@register_as_tool
|
|
607
|
+
@register_as_tool(
|
|
608
|
+
title="Get Correlated Traces",
|
|
609
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
610
|
+
)
|
|
589
611
|
@with_header_auth(ApplicationAnalyzeApi)
|
|
590
612
|
async def get_correlated_traces(
|
|
591
613
|
self,
|
|
@@ -11,11 +11,14 @@ import traceback
|
|
|
11
11
|
from datetime import datetime, timedelta
|
|
12
12
|
from typing import Any, Dict, Optional
|
|
13
13
|
|
|
14
|
+
from mcp.types import ToolAnnotations
|
|
15
|
+
|
|
14
16
|
from src.core.utils import (
|
|
15
17
|
BaseInstanaClient,
|
|
16
18
|
register_as_tool,
|
|
17
19
|
with_header_auth,
|
|
18
20
|
)
|
|
21
|
+
from src.prompts import mcp
|
|
19
22
|
|
|
20
23
|
try:
|
|
21
24
|
from instana_client.api.application_catalog_api import (
|
|
@@ -38,7 +41,10 @@ class ApplicationCatalogMCPTools(BaseInstanaClient):
|
|
|
38
41
|
"""Initialize the Application Catalog MCP tools client."""
|
|
39
42
|
super().__init__(read_token=read_token, base_url=base_url)
|
|
40
43
|
|
|
41
|
-
@register_as_tool
|
|
44
|
+
@register_as_tool(
|
|
45
|
+
title="Get Application Tag Catalog",
|
|
46
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
47
|
+
)
|
|
42
48
|
@with_header_auth(ApplicationCatalogApi)
|
|
43
49
|
async def get_application_tag_catalog(self,
|
|
44
50
|
use_case: Optional[str] = None,
|
|
@@ -106,7 +112,10 @@ class ApplicationCatalogMCPTools(BaseInstanaClient):
|
|
|
106
112
|
return {"error": f"Failed to get application catalog: {e!s}"}
|
|
107
113
|
|
|
108
114
|
|
|
109
|
-
@register_as_tool
|
|
115
|
+
@register_as_tool(
|
|
116
|
+
title="Get Application Metric Catalog",
|
|
117
|
+
annotations=ToolAnnotations(readOnlyHint=True, destructiveHint=False)
|
|
118
|
+
)
|
|
110
119
|
@with_header_auth(ApplicationCatalogApi)
|
|
111
120
|
async def get_application_metric_catalog(self, ctx=None, api_client=None) -> Dict[str, Any]:
|
|
112
121
|
"""
|