mcp-instana 0.3.0__py3-none-any.whl → 0.3.1__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.
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-instana
3
- Version: 0.3.0
3
+ Version: 0.3.1
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
9
  Requires-Dist: fastmcp==2.10.3
10
- Requires-Dist: instana-client==1.0.0
10
+ Requires-Dist: instana-client==1.0.1
11
11
  Requires-Dist: mcp
12
12
  Requires-Dist: pydantic==2.11.7
13
13
  Requires-Dist: python-dotenv==1.1.0
@@ -24,6 +24,7 @@ Description-Content-Type: text/markdown
24
24
 
25
25
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
26
26
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
27
+ <!-- mcp-name: io.github.instana/mcp-instana -->
27
28
  **Table of Contents**
28
29
 
29
30
  - [MCP Server for IBM Instana](#mcp-server-for-ibm-instana)
@@ -78,6 +79,10 @@ Description-Content-Type: text/markdown
78
79
  - [**Basic Usage**](#basic-usage)
79
80
  - [**Environment Variables**](#environment-variables)
80
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)
81
86
  - [Docker Security Features](#docker-security-features)
82
87
  - [**Security Best Practices Implemented**](#security-best-practices-implemented)
83
88
  - [**Image Size Optimization**](#image-size-optimization)
@@ -1024,16 +1029,40 @@ The project uses a **two-file dependency management strategy**:
1024
1029
  #### **Prerequisites**
1025
1030
  - Docker installed and running
1026
1031
  - Access to the project source code
1032
+ - Docker BuildKit for multi-architecture builds (enabled by default in recent Docker versions)
1027
1033
 
1028
1034
  #### **Build Command**
1035
+
1036
+ **Single Architecture Build (Default):**
1029
1037
  ```bash
1030
- # Build the optimized production image
1031
- docker build -t mcp-instana .
1038
+ # Build for your local architecture (automatic detection)
1039
+ docker build -t mcp-instana:latest .
1032
1040
 
1033
1041
  # Build with a specific tag
1034
1042
  docker build -t mcp-instana:v1.0.0 .
1035
1043
  ```
1036
1044
 
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
+
1037
1066
  #### **What the Build Does**
1038
1067
  1. **Multi-stage build** for optimal size and security
1039
1068
  2. **Builder stage**: Installs only runtime dependencies from `pyproject-runtime.toml`
@@ -1045,27 +1074,14 @@ docker build -t mcp-instana:v1.0.0 .
1045
1074
 
1046
1075
  #### **Basic Usage**
1047
1076
  ```bash
1048
- # Run with environment variables (recommended)
1049
- docker run -p 8080:8080 \
1050
- -e INSTANA_API_TOKEN=your_instana_token \
1051
- -e INSTANA_BASE_URL=https://your-instana-instance.instana.io \
1052
- mcp-instana
1077
+ # Run the container (no credentials needed in the container)
1078
+ docker run -p 8080:8080 mcp-instana
1053
1079
 
1054
1080
  # Run with custom port
1055
- docker run -p 8081:8080 \
1056
- -e INSTANA_API_TOKEN=your_instana_token \
1057
- -e INSTANA_BASE_URL=https://your-instana-instance.instana.io \
1058
- mcp-instana
1081
+ docker run -p 8081:8080 mcp-instana
1059
1082
  ```
1060
1083
 
1061
- #### **Environment Variables**
1062
- The container requires the following environment variables:
1063
1084
 
1064
- | Variable | Description | Example |
1065
- |----------|-------------|---------|
1066
- | `INSTANA_API_TOKEN` | Your Instana API token | `your_instana_token` |
1067
- | `INSTANA_BASE_URL` | Your Instana instance URL | `https://your-instana-instance.instana.io` |
1068
- | `PORT` | Server port (optional, defaults to 8080) | `8080` |
1069
1085
 
1070
1086
  #### **Docker Compose Example**
1071
1087
  ```yaml
@@ -1075,9 +1091,6 @@ services:
1075
1091
  build: .
1076
1092
  ports:
1077
1093
  - "8080:8080"
1078
- environment:
1079
- - INSTANA_API_TOKEN=${INSTANA_API_TOKEN}
1080
- - INSTANA_BASE_URL=${INSTANA_BASE_URL}
1081
1094
  restart: unless-stopped
1082
1095
  healthcheck:
1083
1096
  test: ["CMD", "python", "-c", "import requests; requests.get('http://127.0.0.1:8080/health', timeout=5)"]
@@ -1087,15 +1100,35 @@ services:
1087
1100
  start_period: 40s
1088
1101
  ```
1089
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
+
1090
1122
  ### Docker Security Features
1091
1123
 
1092
1124
  #### **Security Best Practices Implemented**
1093
1125
  - ✅ **Non-root user**: Container runs as `mcpuser` (not root)
1094
- - ✅ **No hardcoded secrets**: All credentials passed via environment variables
1126
+ - ✅ **No secrets in container**: Credentials are passed via HTTP headers from clients, not stored in the container
1095
1127
  - ✅ **Minimal dependencies**: Only 20 essential runtime dependencies
1096
1128
  - ✅ **Multi-stage build**: Build tools don't make it to final image
1097
1129
  - ✅ **Health checks**: Built-in container health monitoring
1098
1130
  - ✅ **Optimized base image**: Uses `python:3.11-slim`
1131
+ - ✅ **Multi-architecture support**: Run natively on any supported platform
1099
1132
 
1100
1133
  #### **Image Size Optimization**
1101
1134
  - **Original approach**: 95+ dependencies → ~1-2GB+ image
@@ -1135,11 +1168,12 @@ docker exec -it <container_id> /bin/bash
1135
1168
  ### Production Deployment
1136
1169
 
1137
1170
  #### **Recommended Production Setup**
1138
- 1. **Use environment variables** for all secrets
1139
- 2. **Set up proper logging** and monitoring
1140
- 3. **Configure health checks** for container orchestration
1141
- 4. **Use container orchestration** (Kubernetes, Docker Swarm, etc.)
1142
- 5. **Implement proper backup** and disaster recovery
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
1143
1177
 
1144
1178
  #### **Kubernetes Example**
1145
1179
  ```yaml
@@ -1162,14 +1196,6 @@ spec:
1162
1196
  image: mcp-instana:latest
1163
1197
  ports:
1164
1198
  - containerPort: 8080
1165
- env:
1166
- - name: INSTANA_API_TOKEN
1167
- valueFrom:
1168
- secretKeyRef:
1169
- name: instana-secrets
1170
- key: api-token
1171
- - name: INSTANA_BASE_URL
1172
- value: "https://your-instana-instance.instana.io"
1173
1199
  livenessProbe:
1174
1200
  httpGet:
1175
1201
  path: /health
@@ -1194,9 +1220,11 @@ spec:
1194
1220
  docker logs <container_id>
1195
1221
 
1196
1222
  # Common issues:
1197
- # 1. Missing environment variables
1198
- # 2. Port already in use
1199
- # 3. Invalid Instana credentials
1223
+ # 1. Port already in use
1224
+ # 2. Invalid container image
1225
+ # 3. Missing dependencies
1226
+
1227
+ # Credentials are passed via HTTP headers from the MCP client
1200
1228
  ```
1201
1229
 
1202
1230
  #### **Connection Issues**
@@ -52,8 +52,8 @@ src/website/website_analyze.py,sha256=0VyK8f-9vW1LzZ70b7IxKzwqSL2bWw8wDFSOCx2pEr
52
52
  src/website/website_catalog.py,sha256=Z21urtdTf8sU2SZiCwGq5OyPLaswS9lw12TCD9pS__4,7127
53
53
  src/website/website_configuration.py,sha256=hBHSFgj6GXOfLvlq8p-tBU4KFQc99uS167DBz4cjjK0,35926
54
54
  src/website/website_metrics.py,sha256=6McxbVYZq5i61Ml3QcVeHS86y2rCIPzdDuUDOxNtnMM,10954
55
- mcp_instana-0.3.0.dist-info/METADATA,sha256=pBBWf3CzWNzeHE-5yRbEVJZ3ZV5EW2w34sVepEmiyjc,47089
56
- mcp_instana-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
57
- mcp_instana-0.3.0.dist-info/entry_points.txt,sha256=p1aZ9Ks0aJKpoIy6Mk-08cGYAfkXMNbwYIlokm513A4,140
58
- mcp_instana-0.3.0.dist-info/licenses/LICENSE.md,sha256=Ox7lseFP2kBRXBjsLweW1jLmWiCyrKjwF8ZUvCbKd70,11310
59
- mcp_instana-0.3.0.dist-info/RECORD,,
55
+ mcp_instana-0.3.1.dist-info/METADATA,sha256=ihXkPTCUrBqJJ_hqtIBfi7rSfb-3xuEiQLn_-LhSwL8,48596
56
+ mcp_instana-0.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
57
+ mcp_instana-0.3.1.dist-info/entry_points.txt,sha256=p1aZ9Ks0aJKpoIy6Mk-08cGYAfkXMNbwYIlokm513A4,140
58
+ mcp_instana-0.3.1.dist-info/licenses/LICENSE.md,sha256=Ox7lseFP2kBRXBjsLweW1jLmWiCyrKjwF8ZUvCbKd70,11310
59
+ mcp_instana-0.3.1.dist-info/RECORD,,