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.
- {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/METADATA +186 -311
- {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/RECORD +30 -22
- {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/WHEEL +1 -1
- src/application/application_alert_config.py +393 -136
- src/application/application_analyze.py +597 -594
- src/application/application_call_group.py +528 -0
- src/application/application_catalog.py +0 -8
- src/application/application_global_alert_config.py +275 -57
- src/application/application_metrics.py +377 -237
- src/application/application_resources.py +414 -325
- src/application/application_settings.py +608 -1530
- src/application/application_topology.py +62 -62
- src/core/custom_dashboard_smart_router_tool.py +135 -0
- src/core/server.py +95 -119
- src/core/smart_router_tool.py +574 -0
- src/core/utils.py +17 -8
- src/custom_dashboard/custom_dashboard_tools.py +422 -0
- src/event/events_tools.py +57 -9
- src/infrastructure/elicitation_handler.py +338 -0
- src/infrastructure/entity_registry.py +329 -0
- src/infrastructure/infrastructure_analyze_new.py +600 -0
- src/infrastructure/{infrastructure_analyze.py → infrastructure_analyze_old.py} +1 -16
- src/infrastructure/infrastructure_catalog.py +37 -32
- src/infrastructure/infrastructure_metrics.py +93 -16
- src/infrastructure/infrastructure_resources.py +6 -24
- src/infrastructure/infrastructure_topology.py +29 -23
- src/observability.py +29 -0
- src/prompts/application/application_settings.py +58 -0
- {mcp_instana-0.3.1.dist-info → mcp_instana-0.7.0.dist-info}/entry_points.txt +0 -0
- {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
|
+
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
|
-
Requires-Dist: instana-client==1.0.
|
|
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
|
|
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,
|
|
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
|
+

|
|
513
|
+
|
|
514
|
+
**Step 3: Click the Kiro (Ghost) icon on the left sidebar to access Kiro's features.**
|
|
515
|
+

|
|
516
|
+
|
|
517
|
+
**Step 4: Select the Edit Config icon in the top right corner of the MCP Servers section.**
|
|
518
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
-
- [
|
|
639
|
-
- [
|
|
640
|
-
- [
|
|
641
|
-
- [
|
|
642
|
-
- [
|
|
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]
|
|
651
|
-
- [x] Get
|
|
652
|
-
- [x]
|
|
653
|
-
- [
|
|
654
|
-
- [
|
|
655
|
-
|
|
656
|
-
- [
|
|
657
|
-
- [x]
|
|
658
|
-
|
|
659
|
-
- [x]
|
|
660
|
-
- [
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
- [
|
|
664
|
-
- [
|
|
665
|
-
|
|
666
|
-
- [x]
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
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
|
-
| `
|
|
700
|
-
| `
|
|
701
|
-
| `
|
|
702
|
-
| `
|
|
703
|
-
| `
|
|
704
|
-
| `
|
|
705
|
-
| `
|
|
706
|
-
| `
|
|
707
|
-
| `
|
|
708
|
-
| `
|
|
709
|
-
| `
|
|
710
|
-
| `
|
|
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
|
-
- **`
|
|
752
|
-
-
|
|
753
|
-
-
|
|
754
|
-
-
|
|
755
|
-
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
-
|
|
759
|
-
-
|
|
760
|
-
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
-
|
|
764
|
-
-
|
|
765
|
-
-
|
|
766
|
-
|
|
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
|
|
787
|
-
mcp-instana --tools
|
|
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
|
|
790
|
-
mcp-instana --tools
|
|
823
|
+
# Enable events and website tools
|
|
824
|
+
mcp-instana --tools events,website --transport streamable-http
|
|
791
825
|
|
|
792
|
-
# Enable
|
|
793
|
-
mcp-instana --tools
|
|
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
|
|
806
|
-
uv run src/core/server.py --tools
|
|
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
|
|
809
|
-
uv run src/core/server.py --tools
|
|
842
|
+
# Enable only infrastructure analysis tools
|
|
843
|
+
uv run src/core/server.py --tools infra --transport streamable-http
|
|
810
844
|
|
|
811
|
-
# Enable
|
|
812
|
-
uv run src/core/server.py --tools
|
|
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
|
|
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
|
|
1043
|
-
```
|
|
1080
|
+
docker build -t mcp-instana:< image_tag > .
|
|
1044
1081
|
|
|
1045
|
-
**
|
|
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
|
+
```
|