mcp-instana 0.3.1__py3-none-any.whl → 0.7.0__py3-none-any.whl

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 (30) hide show
  1. {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/METADATA +186 -311
  2. {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/RECORD +30 -22
  3. {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/WHEEL +1 -1
  4. src/application/application_alert_config.py +393 -136
  5. src/application/application_analyze.py +597 -594
  6. src/application/application_call_group.py +528 -0
  7. src/application/application_catalog.py +0 -8
  8. src/application/application_global_alert_config.py +275 -57
  9. src/application/application_metrics.py +377 -237
  10. src/application/application_resources.py +414 -325
  11. src/application/application_settings.py +608 -1530
  12. src/application/application_topology.py +62 -62
  13. src/core/custom_dashboard_smart_router_tool.py +135 -0
  14. src/core/server.py +95 -119
  15. src/core/smart_router_tool.py +574 -0
  16. src/core/utils.py +17 -8
  17. src/custom_dashboard/custom_dashboard_tools.py +422 -0
  18. src/event/events_tools.py +57 -9
  19. src/infrastructure/elicitation_handler.py +338 -0
  20. src/infrastructure/entity_registry.py +329 -0
  21. src/infrastructure/infrastructure_analyze_new.py +600 -0
  22. src/infrastructure/{infrastructure_analyze.py → infrastructure_analyze_old.py} +1 -16
  23. src/infrastructure/infrastructure_catalog.py +37 -32
  24. src/infrastructure/infrastructure_metrics.py +93 -16
  25. src/infrastructure/infrastructure_resources.py +6 -24
  26. src/infrastructure/infrastructure_topology.py +29 -23
  27. src/observability.py +29 -0
  28. src/prompts/application/application_settings.py +58 -0
  29. {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/entry_points.txt +0 -0
  30. {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,17 +1,19 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-instana
3
- Version: 0.3.1
3
+ Version: 0.7.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
7
7
  License-File: LICENSE.md
8
8
  Requires-Python: >=3.10
9
- Requires-Dist: fastmcp==2.10.3
10
- Requires-Dist: instana-client==1.0.1
9
+ Requires-Dist: fastmcp==2.13.0
10
+ Requires-Dist: instana-client==1.0.3
11
+ Requires-Dist: lazy-imports
11
12
  Requires-Dist: mcp
12
13
  Requires-Dist: pydantic==2.11.7
13
14
  Requires-Dist: python-dotenv==1.1.0
14
15
  Requires-Dist: requests==2.32.4
16
+ Requires-Dist: traceloop-sdk>=0.47.5
15
17
  Provides-Extra: dev
16
18
  Requires-Dist: coverage>=7.10.1; extra == 'dev'
17
19
  Requires-Dist: pytest-asyncio>=1.1.0; extra == 'dev'
@@ -25,7 +27,6 @@ Description-Content-Type: text/markdown
25
27
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
26
28
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
27
29
  <!-- mcp-name: io.github.instana/mcp-instana -->
28
- **Table of Contents**
29
30
 
30
31
  - [MCP Server for IBM Instana](#mcp-server-for-ibm-instana)
31
32
  - [Architecture Overview](#architecture-overview)
@@ -55,6 +56,7 @@ Description-Content-Type: text/markdown
55
56
  - [Claude Desktop](#claude-desktop)
56
57
  - [Streamable HTTP Mode](#streamable-http-mode)
57
58
  - [Stdio Mode](#stdio-mode)
59
+ - [Kiro Setup](#kiro-setup)
58
60
  - [GitHub Copilot](#github-copilot)
59
61
  - [Streamable HTTP Mode](#streamable-http-mode-1)
60
62
  - [Stdio Mode](#stdio-mode-1)
@@ -72,27 +74,8 @@ Description-Content-Type: text/markdown
72
74
  - [**pyproject.toml** (Development)](#pyprojecttoml-development)
73
75
  - [**pyproject-runtime.toml** (Production)](#pyproject-runtimetoml-production)
74
76
  - [Building the Docker Image](#building-the-docker-image)
75
- - [**Prerequisites**](#prerequisites-1)
77
+ - [**Prerequisites**](#prerequisites)
76
78
  - [**Build Command**](#build-command)
77
- - [**What the Build Does**](#what-the-build-does)
78
- - [Running the Docker Container](#running-the-docker-container)
79
- - [**Basic Usage**](#basic-usage)
80
- - [**Environment Variables**](#environment-variables)
81
- - [**Docker Compose Example**](#docker-compose-example)
82
- - [Multi-Architecture Support](#multi-architecture-support)
83
- - [**Supported Architectures**](#supported-architectures)
84
- - [**Benefits of Multi-Architecture Images**](#benefits-of-multi-architecture-images)
85
- - [**How It Works**](#how-it-works)
86
- - [Docker Security Features](#docker-security-features)
87
- - [**Security Best Practices Implemented**](#security-best-practices-implemented)
88
- - [**Image Size Optimization**](#image-size-optimization)
89
- - [Testing the Docker Container](#testing-the-docker-container)
90
- - [**Health Check**](#health-check)
91
- - [**MCP Inspector Testing**](#mcp-inspector-testing)
92
- - [**Logs and Debugging**](#logs-and-debugging)
93
- - [Production Deployment](#production-deployment)
94
- - [**Recommended Production Setup**](#recommended-production-setup)
95
- - [**Kubernetes Example**](#kubernetes-example)
96
79
  - [Troubleshooting](#troubleshooting)
97
80
  - [**Docker Issues**](#docker-issues)
98
81
  - [**Container Won't Start**](#container-wont-start)
@@ -261,7 +244,7 @@ uv run src/core/server.py [OPTIONS]
261
244
  - `--transport <mode>`: Transport mode (choices: `streamable-http`, `stdio`)
262
245
  - `--debug`: Enable debug mode with additional logging
263
246
  - `--log-level <level>`: Set the logging level (choices: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`)
264
- - `--tools <categories>`: Comma-separated list of tool categories to enable (e.g., infra,app,events,automation,website). Enabling a category will also enable its related prompts. For example: `--tools infra` enables the infra tools and all infra-related prompts.
247
+ - `--tools <categories>`: Comma-separated list of tool categories to enable (e.g., infra,app,events,website). Enabling a category will also enable its related prompts. For example: `--tools infra` enables the infra tools and all infra-related prompts.
265
248
  - `--list-tools`: List all available tool categories and exit
266
249
  - `--port <port>`: Port to listen on (default: 8080)
267
250
  - `--help`: Show help message and exit
@@ -382,7 +365,6 @@ uv run src/core/server.py --transport streamable-http --tools events
382
365
  - **`infra`**: Infrastructure monitoring tools and prompts (resources, catalog, topology, analyze, metrics)
383
366
  - **`app`**: Application performance tools and prompts (resources, metrics, alerts, catalog, topology, analyze, settings, global alerts)
384
367
  - **`events`**: Event monitoring tools and prompts (Kubernetes events, agent monitoring)
385
- - **`automation`**: Automation-related tools and prompts (action catalog, action history)
386
368
  - **`website`**: Website monitoring tools and prompts (metrics, catalog, analyze, configuration)
387
369
 
388
370
  ### Verifying Server Status
@@ -520,6 +502,44 @@ get me all endpoints from Instana
520
502
  }
521
503
  }
522
504
  ```
505
+ ### Kiro Setup
506
+
507
+ Kiro is an agentic IDE, not an extension that can be downloaded into VS Code or some other IDE.
508
+
509
+ **Step 1: Download and install Kiro for your operating system from https://kiro.dev/.**
510
+
511
+ **Step 2: After installation, launch Kiro and open any project in the IDE.**
512
+ ![alt text](./images/open-kiro.png)
513
+
514
+ **Step 3: Click the Kiro (Ghost) icon on the left sidebar to access Kiro's features.**
515
+ ![alt text](./images/kiro-features.png)
516
+
517
+ **Step 4: Select the Edit Config icon in the top right corner of the MCP Servers section.**
518
+ ![alt text](./images/edir-kiro-config.png)
519
+
520
+ **Step 5: Open the MCP server configuration file (mcp.json), similar to how it works in Claude, and update it with your server's name, commands, and headers as shown in the image below.**
521
+
522
+ ```json
523
+ {
524
+ "mcpServers": {
525
+ "Instana MCP Server": {
526
+ "command": "npx",
527
+ "args": [
528
+ "mcp-remote", "<YOUR_MCP_PORT>/mcp",
529
+ "--allow-http",
530
+ "--header", "instana-base-url: <INSTANA_BASE_URL>",
531
+ "--header", "instana-api-token: <INSTANA_API_TOKEN>"
532
+ ]
533
+ }
534
+ }
535
+ }
536
+ ```
537
+
538
+ **Step 6: After saving the file, Click the Enable MCP button and you'll see your MCP server and its available tools appear in the bottom-left section of Kiro.**
539
+ ![alt text](./images/enable-kiro-mcp.png)
540
+
541
+ **Step 7: Go to the AI Chat panel, enter a prompt related to your MCP server, and view the response directly within Kiro.**
542
+ ![alt text](./images/kiro-prompt.png)
523
543
 
524
544
  ### GitHub Copilot
525
545
 
@@ -635,54 +655,35 @@ Here is an example of a GitHub Copilot response:
635
655
 
636
656
  ## Supported Features
637
657
 
638
- - [ ] Application
639
- - [ ] Application Metrics
640
- - [ ] Application Metrics
641
- - [ ] Endpoint Metrics
642
- - [ ] Service Metrics
643
- - [ ] Data Metrics
644
- - [x] Application Resources
645
- - [x] Get Applications Endpoints
646
- - [x] Get Applications
647
- - [x] Get Services
648
- - [x] Get Application Services
658
+ - [x] **Unified Application & Infrastructure Management** (`manage_instana_resources`)
659
+ - [x] Application Metrics
660
+ - [x] Query application metrics with flexible filtering
661
+ - [x] List services and endpoints
662
+ - [x] Group by tags and aggregate metrics
649
663
  - [x] Application Alert Configuration
650
- - [x] Get All Smart Alert Configurations
651
- - [x] Get Smart Alert Configuration
652
- - [x] Get Smart Alert Config Versions
653
- - [ ] Create Smart Alert Configuration
654
- - [ ] Update Smart Alert Configuration
655
- - [x] Delete Smart Alert Configuration
656
- - [ ] Recalculate Smart Alert Config Baseline
657
- - [x] Enable Application Alert Config
658
- - [x] Disable Smart Alert Config
659
- - [x] Restore Smart Alert Config
660
- - [ ] Infrastructure
661
- - [ ] Infrastructure Analyze
662
- - [x] Get Available Metrics
663
- - [ ] Get infrastructure entities
664
- - [ ] Get grouped entities with aggregated metrics
665
- - [x] Get available plugins/entity types
666
- - [x] Infrastructure Catalog
667
- - [x] Get Payload Keys By plugin ID
668
- - [x] Get Infrastructure Catalog Metrics
669
- - [x] Get Infrastructure Catalog Plugins
670
- - [x] Get Infrastructure Catalog Plugins with Custom Metrics
671
- - [x] Get Infrastructure Catalog Search Fields
672
- - [x] Get Infrastructure Catalog Search Fields with Custom Metrics
673
- - [x] Get Tag Catalog
674
- - [x] Get Tag Catalog ALL
675
- - [ ] Infrastructure Resources
676
- - [x] Get Monitoring State
677
- - [ ] Get plugin Payload
678
- - [x] Search Snapshots
679
- - [x] Get Snapshot Details for single Snapshot ID
680
- - [x] Get Details for Multiple Snapshot IDs
681
- - [x] Software Versions
682
- - [x] Infrastructure Topology
683
- - [x] Get Hosts for Snapshot
684
- - [x] Get Topology
685
- - [x] Events
664
+ - [x] Find active alert configurations
665
+ - [x] Get alert configuration versions
666
+ - [x] Create, update, and delete alert configurations
667
+ - [x] Enable, disable, and restore alert configurations
668
+ - [x] Update historic baselines
669
+ - [x] Global Application Alert Configuration
670
+ - [x] Manage global alert configurations
671
+ - [x] Version control for global alerts
672
+ - [x] Application Settings
673
+ - [x] Manage application perspectives
674
+ - [x] Configure endpoints and services
675
+ - [x] Manage manual services
676
+ - [x] Application Catalog
677
+ - [x] Get application tag catalog
678
+ - [x] Get application metric catalog
679
+ - [x] **Infrastructure Analysis** (`analyze_infrastructure_elicitation`)
680
+ - [x] Two-pass elicitation for entity/metric queries
681
+ - [x] Support for multiple entity types (JVM, Kubernetes, Docker, etc.)
682
+ - [x] Flexible metric aggregation (max, mean, sum, etc.)
683
+ - [x] Advanced filtering by tags and properties
684
+ - [x] Grouping and ordering capabilities
685
+ - [x] Time range queries
686
+ - [x] **Events**
686
687
  - [x] Events
687
688
  - [x] Get Event
688
689
  - [x] Get Events by IDs
@@ -691,48 +692,56 @@ Here is an example of a GitHub Copilot response:
691
692
  - [x] Get Issues
692
693
  - [x] Get Incidents
693
694
  - [x] Get Changes
695
+ - [x] Website
696
+ - [x] Website Metrics
697
+ - [ ] Get Website Page Load
698
+ - [x] Get Website Beacon Metrics V2
699
+ - [x] Website Catalog
700
+ - [x] Get Website Catalog Metrics
701
+ - [x] Get Website Catalog Tags
702
+ - [ ] Get Website Tag Catalog
703
+ - [x] Website Analyze
704
+ - [x] Get Website Beacon Groups
705
+ - [x] Get Website Beacons
706
+ - [x] Website Configuration
707
+ - [x] Get Websites
708
+ - [x] Get Website
709
+ - [x] Create Website
710
+ - [x] Delete Website
711
+ - [x] Rename Website
712
+ - [x] Get Website Geo Location
713
+ - [x] Update Website Geo Location
714
+ - [x] Get Website IP Masking
715
+ - [x] Update Website IP Masking
716
+ - [x] Get Website Geo Mapping Rules
717
+ - [ ] Set Website Geo Mapping Rules
718
+ - [ ] Upload Source Map File
719
+ - [ ] Clear Source Map Upload
720
+ - [x] **Custom Dashboards** (`manage_custom_dashboards`)
721
+ - [x] Get all custom dashboards
722
+ - [x] Get specific dashboard by ID
723
+ - [x] Create new custom dashboard
724
+ - [x] Update existing custom dashboard
725
+ - [x] Delete custom dashboard
726
+ - [x] Get shareable users for dashboard
727
+ - [x] Get shareable API tokens for dashboard
694
728
 
695
729
  ## Available Tools
696
730
 
697
731
  | Tool | Category | Description |
698
732
  |---------------------------------------------------------------|--------------------------------|------------------------------------------------------- |
699
- | `get_application_metrics` | Application Metrics | Get ApplicationMetrics |
700
- | `get_endpoints_metrics` | Application Metrics | Get Endpoint metrics |
701
- | `get_services_metrics` | Application Metrics | Get Service metrics |
702
- | `get_application_data_metrics_v2` | Application Metrics | Get Application Data Metrics |
703
- | `get_applications` | Application Resources | Get applications |
704
- | `get_application_services` | Application Resources | Get applications/services |
705
- | `get_application_endpoints` | Application Resources | Get endpoints |
706
- | `get_services` | Application Resources | Get services |
707
- | `get_monitoring_state` | Infrastructure Resources | Monitored host count |
708
- | `get_plugin_payload` | Infrastructure Resources | Get a payload for a snapshot |
709
- | `get_snapshots` | Infrastructure Resources | Search snapshots |
710
- | `post_snapshots` | Infrastructure Resources | Get snapshot details for multiple snapshots |
711
- | `get_snapshot` | Infrastructure Resources | Get snapshot details |
712
- | `software_versions` | Infrastructure Resources | Get installed software |
713
- | `get_available_payload_keys_by_plugin_id` | Infrastructure Catalog | Get Payload Keys By plugin ID |
714
- | `get_infrastructure_catalog_metrics` | Infrastructure Catalog | Get Infrastructure Catalog Metrics |
715
- | `get_infrastructure_catalog_plugins` | Infrastructure Catalog | Get Infrastructure Catalog Plugins |
716
- | `get_infrastructure_catalog_plugins_with_custom_metrics` | Infrastructure Catalog | Get Infrastructure Catalog Plugins with Custom Metrics |
717
- | `get_infrastructure_catalog_search_fields` | Infrastructure Catalog | Get Infrastructure Catalog Search Fields |
718
- | `get_tag_catalog` | Infrastructure Catalog | Get Tag Catalog |
719
- | `get_tag_catalog_all` | Infrastructure Catalog | Get Tag Catalog ALL |
720
- | `get_related_hosts` | Infrastructure Topology | Get Related Hosts |
721
- | `get_topology` | Infrastructure Topology | Get Topology |
722
- | `get_available_metrics` | Infrastructure Analyze | Get Available Metrics |
723
- | `get_entities` | Infrastructure Analyze | Get infrastructure entities |
724
- | `get_aggregated_entity_groups` | Infrastructure Analyze | Get grouped entities with aggregated metrics |
725
- | `get_available_plugins` | Infrastructure Analyze | Get available entity types |
726
- | `get_application_alert_configs` | Application Alert Configuration| Get All Smart Alert Configurations |
727
- | `find_application_alert_config` | Application Alert Configuration| Get Smart Alert Configuration |
728
- | `find_application_alert_config_versions` | Application Alert Configuration| Get Smart Alert Config Versions |
729
- | `create_application_alert_config` | Application Alert Configuration| Create Smart Alert Configuration |
730
- | `update_application_alert_config` | Application Alert Configuration| Update Smart Alert Configuration |
731
- | `delete_application_alert_config` | Application Alert Configuration| Delete Smart Alert Configuration |
732
- | `update_application_historic_baseline` | Application Alert Configuration| Recalculate Smart Alert Config Baseline |
733
- | `enable_application_alert_config` | Application Alert Configuration| Enable Application Alert Config |
734
- | `disable_application_alert_config` | Application Alert Configuration| Disable Smart Alert Config |
735
- | `restore_application_alert_config` | Application Alert Configuration| Restore Smart Alert Config |
733
+ | `manage_instana_resources` | Application & Infrastructure | Unified tool for managing application metrics, alert configs, settings, and catalog |
734
+ | `manage_custom_dashboards` | Custom Dashboards | Unified tool for managing custom dashboard CRUD operations |
735
+ | `analyze_infrastructure_elicitation` | Infrastructure Analyze | Two-pass infrastructure analysis with entity/metric elicitation |
736
+ | `get_actions` | Automation | Get available automation actions from action catalog |
737
+ | `get_action_details` | Automation | Get detailed information about a specific action |
738
+ | `get_action_types` | Automation | Get available action types |
739
+ | `get_action_tags` | Automation | Get available action tags |
740
+ | `get_action_matches` | Automation | Get action matches for a given search space |
741
+ | `submit_automation_action` | Automation | Submit an automation action for execution |
742
+ | `get_action_instance_details` | Automation | Get details of an automation action run result |
743
+ | `list_action_instances` | Automation | List automation action run results |
744
+ | `delete_action_instance` | Automation | Delete an automation action run result |
736
745
  | `get_event` | Events | Get Specific Event by ID |
737
746
  | `get_kubernetes_info_events` | Events | Get Kubernetes Info Events |
738
747
  | `get_agent_monitoring_events` | Events | Get Agent Monitoring Events |
@@ -740,6 +749,26 @@ Here is an example of a GitHub Copilot response:
740
749
  | `get_incidents` | Events | Get Incidents |
741
750
  | `get_changes` | Events | Get Changes |
742
751
  | `get_events_by_ids` | Events | Get Events by IDs |
752
+ | `get_website_page_load` | Website Metrics | Get website monitoring beacons for a specific page load|
753
+ | `get_website_beacon_metrics_v2` | Website Metrics | Get website beacon metrics using the v2 API |
754
+ | `get_website_catalog_metrics` | Website Catalog | Get website monitoring metrics catalog |
755
+ | `get_website_catalog_tags` | Website Catalog | Get website monitoring tags catalog |
756
+ | `get_website_tag_catalog` | Website Catalog | Get website monitoring tag catalog |
757
+ | `get_website_beacon_groups` | Website Analyze | Get grouped website beacon metrics |
758
+ | `get_website_beacons` | Website Analyze | Get all website beacon metrics |
759
+ | `get_websites` | Website Configuration | Get all websites |
760
+ | `get_website` | Website Configuration | Get a specific website by ID |
761
+ | `create_website` | Website Configuration | Create a new website configuration |
762
+ | `delete_website` | Website Configuration | Delete a website configuration |
763
+ | `rename_website` | Website Configuration | Rename a website configuration |
764
+ | `get_website_geo_location_configuration` | Website Configuration | Get geo-location configuration for a website |
765
+ | `update_website_geo_location_configuration` | Website Configuration | Update geo-location configuration for a website |
766
+ | `get_website_ip_masking_configuration` | Website Configuration | Get IP masking configuration for a website |
767
+ | `update_website_ip_masking_configuration` | Website Configuration | Update IP masking configuration for a website |
768
+ | `get_website_geo_mapping_rules` | Website Configuration | Get custom geo mapping rules for website |
769
+ | `set_website_geo_mapping_rules` | Website Configuration | Set custom geo mapping rules for website |
770
+ | `upload_source_map_file` | Website Configuration | Upload source map file for a website |
771
+ | `clear_source_map_upload_configuration` | Website Configuration | Clear source map upload configuration for a website |
743
772
 
744
773
 
745
774
  ## Tool Filtering
@@ -748,30 +777,29 @@ The MCP server supports selective tool loading to optimize performance and reduc
748
777
 
749
778
  ### Available Tool Categories
750
779
 
751
- - **`infra`**: Infrastructure monitoring tools
752
- - Infrastructure Resources: Host monitoring, snapshot management, software inventory
753
- - Infrastructure Catalog: Plugin metadata, metrics definitions, tag management
754
- - Infrastructure Topology: Host relationships and system topology visualization
755
- - Infrastructure Analyze: Entity metrics, aggregation, and plugin discovery
756
- - Infrastructure Metrics: Performance data collection
757
-
758
- - **`app`**: Application performance tools
759
- - Application Resources: Service and endpoint discovery
760
- - Application Metrics: Performance measurement across application components
761
- - Application Alert Configuration: Smart alert management
762
- - Application Catalog: Metadata and definitions
763
- - Application Topology: Service dependency mapping
764
- - Application Analyze: Application performance analysis
765
- - Application Settings: Configuration management
766
- - Application Global Alert: Global alert management
780
+ - **`router`**: Unified application and infrastructure management
781
+ - `manage_instana_resources`: Single tool for application metrics, alert configurations, settings, and catalog
782
+ - Supports application perspectives, endpoints, services, and manual services
783
+ - Manages both application-specific and global alert configurations
784
+ - Provides access to application tag catalog and metric catalog
785
+
786
+ - **`dashboard`**: Custom dashboard management
787
+ - `manage_custom_dashboards`: CRUD operations for custom dashboards
788
+ - Supports dashboard creation, retrieval, updates, and deletion
789
+ - Manages shareable users and API tokens for dashboards
790
+
791
+ - **`infra`**: Infrastructure analysis tools
792
+ - `analyze_infrastructure_elicitation`: Two-pass infrastructure analysis with entity/metric elicitation
793
+ - Supports multiple entity types (JVM, Kubernetes, Docker, hosts, databases, etc.)
794
+ - Flexible metric aggregation, filtering, grouping, and time range queries
795
+
796
+ - **`automation`**: Automation action tools
797
+ - Action catalog management and action execution
798
+ - Action history and instance tracking
767
799
 
768
800
  - **`events`**: Event monitoring tools
769
801
  - Events: Kubernetes events, agent monitoring, incidents, issues, changes and system event tracking
770
802
 
771
- - **`automation`**: Automation-related tools
772
- - Action Catalog: Automation action discovery and management
773
- - Action History: Tracking and managing automation action history
774
-
775
803
  - **`website`**: Website monitoring tools
776
804
  - Website Metrics: Performance measurement for websites
777
805
  - Website Catalog: Website metadata and definitions
@@ -783,14 +811,20 @@ The MCP server supports selective tool loading to optimize performance and reduc
783
811
  #### Using CLI (PyPI Installation)
784
812
 
785
813
  ```bash
786
- # Enable only infrastructure and events tools
787
- mcp-instana --tools infra,events --transport streamable-http
814
+ # Enable only router (unified app/infra management) and events tools
815
+ mcp-instana --tools router,events --transport streamable-http
816
+
817
+ # Enable only infrastructure analysis tools
818
+ mcp-instana --tools infra --transport streamable-http
819
+
820
+ # Enable router and infrastructure analysis
821
+ mcp-instana --tools router,infra --transport streamable-http
788
822
 
789
- # Enable only application tools
790
- mcp-instana --tools app --transport streamable-http
823
+ # Enable events and website tools
824
+ mcp-instana --tools events,website --transport streamable-http
791
825
 
792
- # Enable automation and website tools
793
- mcp-instana --tools automation,website --transport streamable-http
826
+ # Enable dashboard and router tools
827
+ mcp-instana --tools dashboard,router --transport streamable-http
794
828
 
795
829
  # Enable all tools (default behavior)
796
830
  mcp-instana --transport streamable-http
@@ -802,14 +836,20 @@ mcp-instana --list-tools
802
836
  #### Using Development Installation
803
837
 
804
838
  ```bash
805
- # Enable only infrastructure and events tools
806
- uv run src/core/server.py --tools infra,events --transport streamable-http
839
+ # Enable only router (unified app/infra management) and events tools
840
+ uv run src/core/server.py --tools router,events --transport streamable-http
807
841
 
808
- # Enable only application tools
809
- uv run src/core/server.py --tools app --transport streamable-http
842
+ # Enable only infrastructure analysis tools
843
+ uv run src/core/server.py --tools infra --transport streamable-http
810
844
 
811
- # Enable automation and website tools
812
- uv run src/core/server.py --tools automation,website --transport streamable-http
845
+ # Enable router and infrastructure analysis
846
+ uv run src/core/server.py --tools router,infra --transport streamable-http
847
+
848
+ # Enable events and website tools
849
+ uv run src/core/server.py --tools events,website --transport streamable-http
850
+
851
+ # Enable dashboard and router tools
852
+ uv run src/core/server.py --tools dashboard,router --transport streamable-http
813
853
 
814
854
  # Enable all tools (default behavior)
815
855
  uv run src/core/server.py --transport streamable-http
@@ -1032,47 +1072,14 @@ The project uses a **two-file dependency management strategy**:
1032
1072
  - Docker BuildKit for multi-architecture builds (enabled by default in recent Docker versions)
1033
1073
 
1034
1074
  #### **Build Command**
1035
-
1036
- **Single Architecture Build (Default):**
1037
1075
  ```bash
1038
- # Build for your local architecture (automatic detection)
1076
+ # Build the optimized production image
1039
1077
  docker build -t mcp-instana:latest .
1040
1078
 
1041
1079
  # Build with a specific tag
1042
- docker build -t mcp-instana:v1.0.0 .
1043
- ```
1080
+ docker build -t mcp-instana:< image_tag > .
1044
1081
 
1045
- **Multi-Architecture Build:**
1046
- ```bash
1047
- # Set up Docker BuildKit builder if you haven't already
1048
- docker buildx create --name multiarch --driver docker-container --use
1049
-
1050
- # Build and push a multi-architecture image to a registry
1051
- docker buildx build --platform linux/amd64,linux/arm64 -t username/mcp-instana:latest --push .
1052
- ```
1053
-
1054
- **Using the Helper Script:**
1055
- ```bash
1056
- # Make the script executable
1057
- chmod +x build_multiarch.sh
1058
-
1059
- # Build for local architecture
1060
- ./build_multiarch.sh
1061
-
1062
- # Build and push multi-architecture image
1063
- ./build_multiarch.sh --registry username/ --push
1064
- ```
1065
-
1066
- #### **What the Build Does**
1067
- 1. **Multi-stage build** for optimal size and security
1068
- 2. **Builder stage**: Installs only runtime dependencies from `pyproject-runtime.toml`
1069
- 3. **Runtime stage**: Creates minimal production image with non-root user
1070
- 4. **Security**: No hardcoded secrets, proper user permissions
1071
- 5. **Optimization**: Only essential dependencies (20 vs 95+ in development)
1072
-
1073
- ### Running the Docker Container
1074
-
1075
- #### **Basic Usage**
1082
+ #### **Run Command**
1076
1083
  ```bash
1077
1084
  # Run the container (no credentials needed in the container)
1078
1085
  docker run -p 8080:8080 mcp-instana
@@ -1081,135 +1088,6 @@ docker run -p 8080:8080 mcp-instana
1081
1088
  docker run -p 8081:8080 mcp-instana
1082
1089
  ```
1083
1090
 
1084
-
1085
-
1086
- #### **Docker Compose Example**
1087
- ```yaml
1088
- version: '3.8'
1089
- services:
1090
- mcp-instana:
1091
- build: .
1092
- ports:
1093
- - "8080:8080"
1094
- restart: unless-stopped
1095
- healthcheck:
1096
- test: ["CMD", "python", "-c", "import requests; requests.get('http://127.0.0.1:8080/health', timeout=5)"]
1097
- interval: 30s
1098
- timeout: 10s
1099
- retries: 3
1100
- start_period: 40s
1101
- ```
1102
-
1103
- ### Multi-Architecture Support
1104
-
1105
- The Docker image supports multiple processor architectures, making it portable across different environments:
1106
-
1107
- #### **Supported Architectures**
1108
- - ✅ **amd64/x86_64**: Standard Intel/AMD processors (Windows, Linux, most cloud VMs)
1109
- - ✅ **arm64/aarch64**: Apple Silicon (M1/M2/M3), AWS Graviton, Raspberry Pi 4, etc.
1110
-
1111
- #### **Benefits of Multi-Architecture Images**
1112
- - **Cross-Platform Compatibility**: Run the same image on any supported architecture
1113
- - **Seamless Deployment**: No need to build different images for different environments
1114
- - **CI/CD Simplification**: Build once, deploy anywhere
1115
- - **Cloud Flexibility**: Switch between cloud providers and instance types without rebuilding images
1116
-
1117
- #### **How It Works**
1118
- 1. The multi-architecture image is a "manifest list" containing images for each architecture
1119
- 2. When you pull the image, Docker automatically selects the correct architecture for your system
1120
- 3. The image runs natively on your architecture without emulation, ensuring optimal performance
1121
-
1122
- ### Docker Security Features
1123
-
1124
- #### **Security Best Practices Implemented**
1125
- - ✅ **Non-root user**: Container runs as `mcpuser` (not root)
1126
- - ✅ **No secrets in container**: Credentials are passed via HTTP headers from clients, not stored in the container
1127
- - ✅ **Minimal dependencies**: Only 20 essential runtime dependencies
1128
- - ✅ **Multi-stage build**: Build tools don't make it to final image
1129
- - ✅ **Health checks**: Built-in container health monitoring
1130
- - ✅ **Optimized base image**: Uses `python:3.11-slim`
1131
- - ✅ **Multi-architecture support**: Run natively on any supported platform
1132
-
1133
- #### **Image Size Optimization**
1134
- - **Original approach**: 95+ dependencies → ~1-2GB+ image
1135
- - **Optimized approach**: 20 dependencies → ~266MB image
1136
- - **Size reduction**: ~70-80% smaller images
1137
- - **Benefits**: Faster deployments, lower storage costs, reduced attack surface
1138
-
1139
- ### Testing the Docker Container
1140
-
1141
- #### **Health Check**
1142
- ```bash
1143
- # Check if container is healthy
1144
- docker ps
1145
-
1146
- # Test the MCP endpoint
1147
- curl http://localhost:8080/mcp/
1148
- ```
1149
-
1150
- #### **MCP Inspector Testing**
1151
- ```bash
1152
- # Test with MCP Inspector
1153
- npx @modelcontextprotocol/inspector http://localhost:8080/mcp/
1154
- ```
1155
-
1156
- #### **Logs and Debugging**
1157
- ```bash
1158
- # View container logs
1159
- docker logs <container_id>
1160
-
1161
- # Follow logs in real-time
1162
- docker logs -f <container_id>
1163
-
1164
- # Execute commands in running container
1165
- docker exec -it <container_id> /bin/bash
1166
- ```
1167
-
1168
- ### Production Deployment
1169
-
1170
- #### **Recommended Production Setup**
1171
- 1. **Run container without credentials** - The container runs in Streamable HTTP mode, so no Instana credentials are needed in the container
1172
- 2. **Configure clients with credentials** - Pass Instana credentials via HTTP headers from MCP clients (Claude Desktop, GitHub Copilot, etc.)
1173
- 3. **Set up proper logging** and monitoring
1174
- 4. **Configure health checks** for container orchestration
1175
- 5. **Use container orchestration** (Kubernetes, Docker Swarm, etc.)
1176
- 6. **Implement proper backup** and disaster recovery
1177
-
1178
- #### **Kubernetes Example**
1179
- ```yaml
1180
- apiVersion: apps/v1
1181
- kind: Deployment
1182
- metadata:
1183
- name: mcp-instana
1184
- spec:
1185
- replicas: 2
1186
- selector:
1187
- matchLabels:
1188
- app: mcp-instana
1189
- template:
1190
- metadata:
1191
- labels:
1192
- app: mcp-instana
1193
- spec:
1194
- containers:
1195
- - name: mcp-instana
1196
- image: mcp-instana:latest
1197
- ports:
1198
- - containerPort: 8080
1199
- livenessProbe:
1200
- httpGet:
1201
- path: /health
1202
- port: 8080
1203
- initialDelaySeconds: 30
1204
- periodSeconds: 10
1205
- readinessProbe:
1206
- httpGet:
1207
- path: /health
1208
- port: 8080
1209
- initialDelaySeconds: 5
1210
- periodSeconds: 5
1211
- ```
1212
-
1213
1091
  ## Troubleshooting
1214
1092
 
1215
1093
  ### **Docker Issues**
@@ -1218,12 +1096,10 @@ spec:
1218
1096
  ```bash
1219
1097
  # Check container logs
1220
1098
  docker logs <container_id>
1221
-
1222
1099
  # Common issues:
1223
1100
  # 1. Port already in use
1224
1101
  # 2. Invalid container image
1225
1102
  # 3. Missing dependencies
1226
-
1227
1103
  # Credentials are passed via HTTP headers from the MCP client
1228
1104
  ```
1229
1105
 
@@ -1231,7 +1107,6 @@ docker logs <container_id>
1231
1107
  ```bash
1232
1108
  # Test container connectivity
1233
1109
  docker exec -it <container_id> curl http://127.0.0.1:8080/health
1234
-
1235
1110
  # Check port mapping
1236
1111
  docker port <container_id>
1237
1112
  ```
@@ -1240,7 +1115,6 @@ docker port <container_id>
1240
1115
  ```bash
1241
1116
  # Check container resource usage
1242
1117
  docker stats <container_id>
1243
-
1244
1118
  # Monitor container health
1245
1119
  docker inspect <container_id> | grep -A 10 Health
1246
1120
  ```
@@ -1256,3 +1130,4 @@ docker inspect <container_id> | grep -A 10 Health
1256
1130
  - If that works, your Python environment may not be able to verify the certificate and might not have access to the same certificates as your shell or system. Ensure your Python environment uses system certificates (macOS). You can do this by installing certificates to Python:
1257
1131
  `//Applications/Python\ 3.13/Install\ Certificates.command`
1258
1132
  - If you cannot reach the endpoint with SSL verification, try without it. If that works, check your system's CA certificates and ensure they are up-to-date.
1133
+ ```