snow-flow 1.1.76 → 1.1.78
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.
- package/.claude-flow/queen/queen-memory.db +0 -0
- package/CLAUDE.md +34 -5
- package/README.md +256 -384
- package/dist/agents/base-agent.d.ts +92 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +228 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/coordinator.d.ts +200 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +775 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/flow-builder-agent.d.ts +18 -0
- package/dist/agents/flow-builder-agent.d.ts.map +1 -0
- package/dist/agents/flow-builder-agent.js +536 -0
- package/dist/agents/flow-builder-agent.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +61 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/queen-agent-example.d.ts +23 -0
- package/dist/agents/queen-agent-example.d.ts.map +1 -0
- package/dist/agents/queen-agent-example.js +241 -0
- package/dist/agents/queen-agent-example.js.map +1 -0
- package/dist/agents/queen-agent.d.ts +180 -0
- package/dist/agents/queen-agent.d.ts.map +1 -0
- package/dist/agents/queen-agent.js +909 -0
- package/dist/agents/queen-agent.js.map +1 -0
- package/dist/agents/queen-agent.test.d.ts +6 -0
- package/dist/agents/queen-agent.test.d.ts.map +1 -0
- package/dist/agents/queen-agent.test.js.map +1 -0
- package/dist/agents/script-writer-agent.d.ts +22 -0
- package/dist/agents/script-writer-agent.d.ts.map +1 -0
- package/dist/agents/script-writer-agent.js +695 -0
- package/dist/agents/script-writer-agent.js.map +1 -0
- package/dist/agents/security-agent.d.ts +23 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +619 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/test-agent.d.ts +26 -0
- package/dist/agents/test-agent.d.ts.map +1 -0
- package/dist/agents/test-agent.js +735 -0
- package/dist/agents/test-agent.js.map +1 -0
- package/dist/agents/test-agents.d.ts +7 -0
- package/dist/agents/test-agents.d.ts.map +1 -0
- package/dist/agents/test-agents.js +65 -0
- package/dist/agents/test-agents.js.map +1 -0
- package/dist/agents/widget-creator-agent.d.ts +18 -0
- package/dist/agents/widget-creator-agent.d.ts.map +1 -0
- package/dist/agents/widget-creator-agent.js +440 -0
- package/dist/agents/widget-creator-agent.js.map +1 -0
- package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
- package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
- package/dist/cli/snow-flow-cli-integration.js +385 -0
- package/dist/cli/snow-flow-cli-integration.js.map +1 -0
- package/dist/cli.js +466 -150
- package/dist/cli.js.map +1 -1
- package/dist/config/snow-flow-config.d.ts +1454 -0
- package/dist/config/snow-flow-config.d.ts.map +1 -0
- package/dist/config/snow-flow-config.js +403 -0
- package/dist/config/snow-flow-config.js.map +1 -0
- package/dist/health/system-health.d.ts +123 -0
- package/dist/health/system-health.d.ts.map +1 -0
- package/dist/health/system-health.js +580 -0
- package/dist/health/system-health.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
- package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp.js +2 -0
- package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
- package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
- package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
- package/dist/mcp/shared/agent-context-provider.js +292 -0
- package/dist/mcp/shared/agent-context-provider.js.map +1 -0
- package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
- package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
- package/dist/mcp/shared/base-mcp-server.js +216 -0
- package/dist/mcp/shared/base-mcp-server.js.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.js +423 -0
- package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +20 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/mcp-integration-example.d.ts +6 -0
- package/dist/memory/mcp-integration-example.d.ts.map +1 -0
- package/dist/memory/mcp-integration-example.js +282 -0
- package/dist/memory/mcp-integration-example.js.map +1 -0
- package/dist/memory/memory-client.d.ts +184 -0
- package/dist/memory/memory-client.d.ts.map +1 -0
- package/dist/memory/memory-client.js +325 -0
- package/dist/memory/memory-client.js.map +1 -0
- package/dist/memory/memory-operations.d.ts +170 -0
- package/dist/memory/memory-operations.d.ts.map +1 -0
- package/dist/memory/memory-operations.js +639 -0
- package/dist/memory/memory-operations.js.map +1 -0
- package/dist/memory/memory-system.d.ts +118 -0
- package/dist/memory/memory-system.d.ts.map +1 -0
- package/dist/memory/memory-system.js +477 -0
- package/dist/memory/memory-system.js.map +1 -0
- package/dist/memory/memory-test.d.ts +6 -0
- package/dist/memory/memory-test.d.ts.map +1 -0
- package/dist/memory/memory-test.js +162 -0
- package/dist/memory/memory-test.js.map +1 -0
- package/dist/memory/swarm-memory.d.ts +135 -0
- package/dist/memory/swarm-memory.d.ts.map +1 -0
- package/dist/memory/swarm-memory.js +378 -0
- package/dist/memory/swarm-memory.js.map +1 -0
- package/dist/monitoring/performance-tracker.d.ts +157 -0
- package/dist/monitoring/performance-tracker.d.ts.map +1 -0
- package/dist/monitoring/performance-tracker.js +571 -0
- package/dist/monitoring/performance-tracker.js.map +1 -0
- package/dist/queen/agent-factory.d.ts +3 -0
- package/dist/queen/agent-factory.d.ts.map +1 -1
- package/dist/queen/agent-factory.js +52 -0
- package/dist/queen/agent-factory.js.map +1 -1
- package/dist/queen/queen-memory.d.ts +8 -2
- package/dist/queen/queen-memory.d.ts.map +1 -1
- package/dist/queen/queen-memory.js +46 -4
- package/dist/queen/queen-memory.js.map +1 -1
- package/dist/snow-flow-system.d.ts +132 -0
- package/dist/snow-flow-system.d.ts.map +1 -0
- package/dist/snow-flow-system.js +396 -0
- package/dist/snow-flow-system.js.map +1 -0
- package/dist/types/todo.types.d.ts +61 -0
- package/dist/types/todo.types.d.ts.map +1 -0
- package/dist/types/todo.types.js +7 -0
- package/dist/types/todo.types.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +101 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +548 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -2
- package/deploy.sh +0 -366
- package/docker/base/Dockerfile.base +0 -45
- package/docker/generate-services.js +0 -244
- package/docker/nginx/Dockerfile +0 -71
- package/docker/nginx/consul-template.hcl +0 -64
- package/docker/nginx/healthcheck.sh +0 -178
- package/docker/nginx/nginx.conf +0 -210
- package/docker/nginx/supervisord.conf +0 -57
- package/docker/nginx/templates/upstreams.conf.tpl +0 -48
- package/docker/services/automation-mcp/Dockerfile +0 -32
- package/docker/services/automation-mcp/config/service.json +0 -28
- package/docker/services/automation-mcp/entrypoint.js +0 -51
- package/docker/services/deployment-mcp/Dockerfile +0 -32
- package/docker/services/deployment-mcp/entrypoint.js +0 -51
- package/docker/services/flow-composer-mcp/Dockerfile +0 -32
- package/docker/services/flow-composer-mcp/config/service.json +0 -28
- package/docker/services/flow-composer-mcp/entrypoint.js +0 -51
- package/docker/services/graph-memory-mcp/Dockerfile +0 -32
- package/docker/services/graph-memory-mcp/config/service.json +0 -28
- package/docker/services/graph-memory-mcp/entrypoint.js +0 -51
- package/docker/services/integration-mcp/Dockerfile +0 -32
- package/docker/services/integration-mcp/config/service.json +0 -28
- package/docker/services/integration-mcp/entrypoint.js +0 -51
- package/docker/services/intelligent-mcp/Dockerfile +0 -32
- package/docker/services/intelligent-mcp/config/service.json +0 -28
- package/docker/services/intelligent-mcp/entrypoint.js +0 -51
- package/docker/services/operations-mcp/Dockerfile +0 -32
- package/docker/services/operations-mcp/config/service.json +0 -28
- package/docker/services/operations-mcp/entrypoint.js +0 -51
- package/docker/services/platform-development-mcp/Dockerfile +0 -32
- package/docker/services/platform-development-mcp/config/service.json +0 -28
- package/docker/services/platform-development-mcp/entrypoint.js +0 -51
- package/docker/services/reporting-analytics-mcp/Dockerfile +0 -32
- package/docker/services/reporting-analytics-mcp/config/service.json +0 -28
- package/docker/services/reporting-analytics-mcp/entrypoint.js +0 -51
- package/docker/services/security-compliance-mcp/Dockerfile +0 -32
- package/docker/services/security-compliance-mcp/config/service.json +0 -28
- package/docker/services/security-compliance-mcp/entrypoint.js +0 -51
- package/docker/services/update-set-mcp/Dockerfile +0 -32
- package/docker/services/update-set-mcp/config/service.json +0 -28
- package/docker/services/update-set-mcp/entrypoint.js +0 -51
- package/docker-compose.override.yml +0 -132
- package/docker-compose.prod.yml +0 -340
- package/docker-compose.yml +0 -579
- package/k8s/automation-mcp.yaml +0 -232
- package/k8s/configmap.yaml +0 -237
- package/k8s/deployment-mcp.yaml +0 -232
- package/k8s/flow-composer-mcp.yaml +0 -232
- package/k8s/generate-k8s-manifests.js +0 -453
- package/k8s/graph-memory-mcp.yaml +0 -232
- package/k8s/infrastructure.yaml +0 -456
- package/k8s/ingress.yaml +0 -361
- package/k8s/integration-mcp.yaml +0 -232
- package/k8s/intelligent-mcp.yaml +0 -232
- package/k8s/kustomization.yaml +0 -111
- package/k8s/mcp-services.yaml +0 -2552
- package/k8s/monitoring.yaml +0 -515
- package/k8s/namespace.yaml +0 -80
- package/k8s/operations-mcp.yaml +0 -232
- package/k8s/platform-development-mcp.yaml +0 -232
- package/k8s/rbac.yaml +0 -140
- package/k8s/reporting-analytics-mcp.yaml +0 -232
- package/k8s/security-compliance-mcp.yaml +0 -232
- package/k8s/update-set-mcp.yaml +0 -232
- package/test-clean-install/.claude/config.json +0 -12
- package/test-clean-install/.env.example +0 -49
- package/test-clean-install/CLAUDE.md +0 -26
- package/test-clean-install/README.md +0 -23
- package/test-global-install/.claude/config.json +0 -12
- package/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
- package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/test-global-install/README.md +0 -23
- package/test-init-debug/.claude/config.json +0 -12
- package/test-init-debug/CLAUDE.md +0 -693
- package/test-init-debug/README.md +0 -392
- package/test-init-real/.claude/config.json +0 -12
- package/test-init-real/.claude/mcp-config.json +0 -128
- package/test-init-real/.claude/settings.json +0 -37
- package/test-init-real/CLAUDE.md +0 -693
- package/test-init-real/README.md +0 -392
- package/test-init-real/activate-mcp.sh +0 -15
package/docker/nginx/Dockerfile
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Nginx Load Balancer with Consul Template Integration
|
|
2
|
-
FROM nginx:alpine
|
|
3
|
-
|
|
4
|
-
LABEL service="nginx-load-balancer" \
|
|
5
|
-
version="1.0.0" \
|
|
6
|
-
description="Dynamic Load Balancer for MCP Services"
|
|
7
|
-
|
|
8
|
-
# Install consul-template and other necessary tools
|
|
9
|
-
RUN apk update && apk add --no-cache \
|
|
10
|
-
curl \
|
|
11
|
-
wget \
|
|
12
|
-
unzip \
|
|
13
|
-
openssl \
|
|
14
|
-
ca-certificates \
|
|
15
|
-
supervisor \
|
|
16
|
-
&& rm -rf /var/cache/apk/*
|
|
17
|
-
|
|
18
|
-
# Install consul-template
|
|
19
|
-
ENV CONSUL_TEMPLATE_VERSION=0.32.0
|
|
20
|
-
RUN wget https://releases.hashicorp.com/consul-template/${CONSUL_TEMPLATE_VERSION}/consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip \
|
|
21
|
-
&& unzip consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip -d /usr/local/bin \
|
|
22
|
-
&& rm consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip \
|
|
23
|
-
&& chmod +x /usr/local/bin/consul-template
|
|
24
|
-
|
|
25
|
-
# Create necessary directories
|
|
26
|
-
RUN mkdir -p /etc/consul-template/templates \
|
|
27
|
-
/var/log/nginx \
|
|
28
|
-
/var/www/html \
|
|
29
|
-
/etc/nginx/conf.d \
|
|
30
|
-
/etc/nginx/ssl
|
|
31
|
-
|
|
32
|
-
# Copy consul-template configuration
|
|
33
|
-
COPY consul-template.hcl /etc/consul-template/consul-template.hcl
|
|
34
|
-
COPY templates/ /etc/consul-template/templates/
|
|
35
|
-
|
|
36
|
-
# Copy nginx configuration
|
|
37
|
-
COPY nginx.conf /etc/nginx/nginx.conf.template
|
|
38
|
-
|
|
39
|
-
# Copy supervisor configuration
|
|
40
|
-
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
|
41
|
-
|
|
42
|
-
# Generate self-signed SSL certificates for development
|
|
43
|
-
RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
|
|
44
|
-
-keyout /etc/nginx/ssl/nginx.key \
|
|
45
|
-
-out /etc/nginx/ssl/nginx.crt \
|
|
46
|
-
-subj "/C=US/ST=State/L=City/O=Organization/CN=mcp-services.local"
|
|
47
|
-
|
|
48
|
-
# Create initial nginx config
|
|
49
|
-
RUN cp /etc/nginx/nginx.conf.template /etc/nginx/nginx.conf
|
|
50
|
-
|
|
51
|
-
# Create status page
|
|
52
|
-
RUN echo '{"status":"starting","message":"Load balancer initializing","timestamp":"'$(date -Iseconds)'"}' > /var/www/html/status.json
|
|
53
|
-
|
|
54
|
-
# Health check script
|
|
55
|
-
COPY healthcheck.sh /usr/local/bin/healthcheck.sh
|
|
56
|
-
RUN chmod +x /usr/local/bin/healthcheck.sh
|
|
57
|
-
|
|
58
|
-
# Environment variables
|
|
59
|
-
ENV CONSUL_URL=http://consul:8500 \
|
|
60
|
-
NGINX_LOG_LEVEL=info \
|
|
61
|
-
CONSUL_TEMPLATE_LOG_LEVEL=info
|
|
62
|
-
|
|
63
|
-
# Expose ports
|
|
64
|
-
EXPOSE 80 443 8080
|
|
65
|
-
|
|
66
|
-
# Health check
|
|
67
|
-
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
|
|
68
|
-
CMD /usr/local/bin/healthcheck.sh
|
|
69
|
-
|
|
70
|
-
# Use supervisor to manage both nginx and consul-template
|
|
71
|
-
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# Consul Template configuration for dynamic nginx upstream configuration
|
|
2
|
-
|
|
3
|
-
consul {
|
|
4
|
-
address = "consul:8500"
|
|
5
|
-
retry {
|
|
6
|
-
enabled = true
|
|
7
|
-
attempts = 12
|
|
8
|
-
backoff = "250ms"
|
|
9
|
-
max_backoff = "1m"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
reload_signal = "SIGHUP"
|
|
14
|
-
kill_signal = "SIGINT"
|
|
15
|
-
max_stale = "10m"
|
|
16
|
-
log_level = "info"
|
|
17
|
-
|
|
18
|
-
# Template for main nginx configuration
|
|
19
|
-
template {
|
|
20
|
-
source = "/etc/consul-template/templates/nginx.conf.tpl"
|
|
21
|
-
destination = "/etc/nginx/nginx.conf"
|
|
22
|
-
create_dest_dirs = true
|
|
23
|
-
command = "nginx -t && nginx -s reload"
|
|
24
|
-
command_timeout = "60s"
|
|
25
|
-
error_on_missing_key = false
|
|
26
|
-
perms = 0644
|
|
27
|
-
backup = true
|
|
28
|
-
left_delimiter = "{{"
|
|
29
|
-
right_delimiter = "}}"
|
|
30
|
-
wait {
|
|
31
|
-
min = "2s"
|
|
32
|
-
max = "10s"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
# Template for individual service upstreams (for more granular control)
|
|
37
|
-
template {
|
|
38
|
-
source = "/etc/consul-template/templates/upstreams.conf.tpl"
|
|
39
|
-
destination = "/etc/nginx/conf.d/upstreams.conf"
|
|
40
|
-
create_dest_dirs = true
|
|
41
|
-
command = "nginx -t && nginx -s reload"
|
|
42
|
-
command_timeout = "60s"
|
|
43
|
-
error_on_missing_key = false
|
|
44
|
-
perms = 0644
|
|
45
|
-
backup = true
|
|
46
|
-
wait {
|
|
47
|
-
min = "2s"
|
|
48
|
-
max = "10s"
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
# Template for service status monitoring
|
|
53
|
-
template {
|
|
54
|
-
source = "/etc/consul-template/templates/status.json.tpl"
|
|
55
|
-
destination = "/var/www/html/status.json"
|
|
56
|
-
create_dest_dirs = true
|
|
57
|
-
error_on_missing_key = false
|
|
58
|
-
perms = 0644
|
|
59
|
-
backup = false
|
|
60
|
-
wait {
|
|
61
|
-
min = "5s"
|
|
62
|
-
max = "15s"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Health check script for nginx load balancer
|
|
3
|
-
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
INTERNAL_MODE=false
|
|
7
|
-
if [ "$1" = "--internal" ]; then
|
|
8
|
-
INTERNAL_MODE=true
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
# Colors for output (only for non-internal mode)
|
|
12
|
-
if [ "$INTERNAL_MODE" = "false" ]; then
|
|
13
|
-
RED='\033[0;31m'
|
|
14
|
-
GREEN='\033[0;32m'
|
|
15
|
-
YELLOW='\033[1;33m'
|
|
16
|
-
NC='\033[0m' # No Color
|
|
17
|
-
else
|
|
18
|
-
RED=''
|
|
19
|
-
GREEN=''
|
|
20
|
-
YELLOW=''
|
|
21
|
-
NC=''
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
# Function to log messages
|
|
25
|
-
log() {
|
|
26
|
-
if [ "$INTERNAL_MODE" = "false" ]; then
|
|
27
|
-
echo -e "$1"
|
|
28
|
-
fi
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# Check if nginx is running
|
|
32
|
-
check_nginx() {
|
|
33
|
-
if ! pgrep -x "nginx" > /dev/null; then
|
|
34
|
-
log "${RED}❌ Nginx is not running${NC}"
|
|
35
|
-
return 1
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
# Check if nginx responds on health endpoint
|
|
39
|
-
if ! curl -f -s http://localhost:8080/nginx-health > /dev/null 2>&1; then
|
|
40
|
-
log "${RED}❌ Nginx health endpoint not responding${NC}"
|
|
41
|
-
return 1
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
log "${GREEN}✅ Nginx is healthy${NC}"
|
|
45
|
-
return 0
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
# Check if consul-template is running
|
|
49
|
-
check_consul_template() {
|
|
50
|
-
if ! pgrep -x "consul-template" > /dev/null; then
|
|
51
|
-
log "${RED}❌ Consul-template is not running${NC}"
|
|
52
|
-
return 1
|
|
53
|
-
fi
|
|
54
|
-
|
|
55
|
-
log "${GREEN}✅ Consul-template is running${NC}"
|
|
56
|
-
return 0
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
# Check consul connectivity
|
|
60
|
-
check_consul() {
|
|
61
|
-
CONSUL_URL=${CONSUL_URL:-"http://consul:8500"}
|
|
62
|
-
|
|
63
|
-
if ! curl -f -s "$CONSUL_URL/v1/status/leader" > /dev/null 2>&1; then
|
|
64
|
-
log "${YELLOW}⚠️ Consul is not reachable at $CONSUL_URL${NC}"
|
|
65
|
-
return 1
|
|
66
|
-
fi
|
|
67
|
-
|
|
68
|
-
log "${GREEN}✅ Consul is reachable${NC}"
|
|
69
|
-
return 0
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
# Check MCP service availability
|
|
73
|
-
check_mcp_services() {
|
|
74
|
-
CONSUL_URL=${CONSUL_URL:-"http://consul:8500"}
|
|
75
|
-
|
|
76
|
-
# Get list of MCP services from Consul
|
|
77
|
-
SERVICES=$(curl -s "$CONSUL_URL/v1/agent/services" 2>/dev/null || echo "{}")
|
|
78
|
-
|
|
79
|
-
if [ "$SERVICES" = "{}" ]; then
|
|
80
|
-
log "${YELLOW}⚠️ No services registered in Consul${NC}"
|
|
81
|
-
return 0
|
|
82
|
-
fi
|
|
83
|
-
|
|
84
|
-
# Count healthy MCP services
|
|
85
|
-
HEALTHY_COUNT=0
|
|
86
|
-
TOTAL_COUNT=0
|
|
87
|
-
|
|
88
|
-
# This is a simplified check - in production you'd parse JSON properly
|
|
89
|
-
for service in deployment-mcp flow-composer-mcp intelligent-mcp update-set-mcp graph-memory-mcp operations-mcp platform-development-mcp integration-mcp automation-mcp security-compliance-mcp reporting-analytics-mcp; do
|
|
90
|
-
TOTAL_COUNT=$((TOTAL_COUNT + 1))
|
|
91
|
-
|
|
92
|
-
# Check if service has healthy instances
|
|
93
|
-
if curl -f -s "$CONSUL_URL/v1/health/service/$service?passing=true" | grep -q "Service"; then
|
|
94
|
-
HEALTHY_COUNT=$((HEALTHY_COUNT + 1))
|
|
95
|
-
fi
|
|
96
|
-
done
|
|
97
|
-
|
|
98
|
-
if [ $HEALTHY_COUNT -eq 0 ]; then
|
|
99
|
-
log "${RED}❌ No healthy MCP services found${NC}"
|
|
100
|
-
return 1
|
|
101
|
-
elif [ $HEALTHY_COUNT -lt $TOTAL_COUNT ]; then
|
|
102
|
-
log "${YELLOW}⚠️ Only $HEALTHY_COUNT/$TOTAL_COUNT MCP services are healthy${NC}"
|
|
103
|
-
else
|
|
104
|
-
log "${GREEN}✅ All $HEALTHY_COUNT MCP services are healthy${NC}"
|
|
105
|
-
fi
|
|
106
|
-
|
|
107
|
-
return 0
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
# Update status file
|
|
111
|
-
update_status() {
|
|
112
|
-
STATUS_FILE="/var/www/html/status.json"
|
|
113
|
-
TIMESTAMP=$(date -Iseconds)
|
|
114
|
-
|
|
115
|
-
if [ $1 -eq 0 ]; then
|
|
116
|
-
cat > "$STATUS_FILE" << EOF
|
|
117
|
-
{
|
|
118
|
-
"status": "healthy",
|
|
119
|
-
"message": "Load balancer is operating normally",
|
|
120
|
-
"timestamp": "$TIMESTAMP",
|
|
121
|
-
"checks": {
|
|
122
|
-
"nginx": "passing",
|
|
123
|
-
"consul_template": "passing",
|
|
124
|
-
"consul": "passing",
|
|
125
|
-
"mcp_services": "passing"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
EOF
|
|
129
|
-
else
|
|
130
|
-
cat > "$STATUS_FILE" << EOF
|
|
131
|
-
{
|
|
132
|
-
"status": "unhealthy",
|
|
133
|
-
"message": "One or more health checks failed",
|
|
134
|
-
"timestamp": "$TIMESTAMP",
|
|
135
|
-
"checks": {
|
|
136
|
-
"nginx": "unknown",
|
|
137
|
-
"consul_template": "unknown",
|
|
138
|
-
"consul": "unknown",
|
|
139
|
-
"mcp_services": "unknown"
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
EOF
|
|
143
|
-
fi
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
# Main health check routine
|
|
147
|
-
main() {
|
|
148
|
-
log "${GREEN}🔍 Starting health check...${NC}"
|
|
149
|
-
|
|
150
|
-
OVERALL_STATUS=0
|
|
151
|
-
|
|
152
|
-
# Core checks (critical)
|
|
153
|
-
if ! check_nginx; then
|
|
154
|
-
OVERALL_STATUS=1
|
|
155
|
-
fi
|
|
156
|
-
|
|
157
|
-
if ! check_consul_template; then
|
|
158
|
-
OVERALL_STATUS=1
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
# Optional checks (warnings only)
|
|
162
|
-
check_consul || true
|
|
163
|
-
check_mcp_services || true
|
|
164
|
-
|
|
165
|
-
# Update status file
|
|
166
|
-
update_status $OVERALL_STATUS
|
|
167
|
-
|
|
168
|
-
if [ $OVERALL_STATUS -eq 0 ]; then
|
|
169
|
-
log "${GREEN}✅ Overall health: HEALTHY${NC}"
|
|
170
|
-
else
|
|
171
|
-
log "${RED}❌ Overall health: UNHEALTHY${NC}"
|
|
172
|
-
fi
|
|
173
|
-
|
|
174
|
-
exit $OVERALL_STATUS
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
# Run main function
|
|
178
|
-
main
|
package/docker/nginx/nginx.conf
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
# Dynamic nginx configuration with Consul Template integration
|
|
2
|
-
# This configuration will be dynamically updated by consul-template
|
|
3
|
-
|
|
4
|
-
worker_processes auto;
|
|
5
|
-
worker_cpu_affinity auto;
|
|
6
|
-
|
|
7
|
-
error_log /var/log/nginx/error.log info;
|
|
8
|
-
pid /var/run/nginx.pid;
|
|
9
|
-
|
|
10
|
-
events {
|
|
11
|
-
worker_connections 4096;
|
|
12
|
-
use epoll;
|
|
13
|
-
multi_accept on;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
http {
|
|
17
|
-
# Basic settings
|
|
18
|
-
sendfile on;
|
|
19
|
-
tcp_nopush on;
|
|
20
|
-
tcp_nodelay on;
|
|
21
|
-
keepalive_timeout 65;
|
|
22
|
-
types_hash_max_size 2048;
|
|
23
|
-
client_max_body_size 50M;
|
|
24
|
-
|
|
25
|
-
# MIME types
|
|
26
|
-
include /etc/nginx/mime.types;
|
|
27
|
-
default_type application/octet-stream;
|
|
28
|
-
|
|
29
|
-
# Logging format
|
|
30
|
-
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
31
|
-
'$status $body_bytes_sent "$http_referer" '
|
|
32
|
-
'"$http_user_agent" "$http_x_forwarded_for" '
|
|
33
|
-
'rt=$request_time uct="$upstream_connect_time" '
|
|
34
|
-
'uht="$upstream_header_time" urt="$upstream_response_time"';
|
|
35
|
-
|
|
36
|
-
# Custom log format for MCP services
|
|
37
|
-
log_format mcp_access '$remote_addr - $remote_user [$time_local] '
|
|
38
|
-
'"$request" $status $body_bytes_sent '
|
|
39
|
-
'"$http_referer" "$http_user_agent" '
|
|
40
|
-
'service="$upstream_addr" response_time=$request_time';
|
|
41
|
-
|
|
42
|
-
access_log /var/log/nginx/access.log main;
|
|
43
|
-
|
|
44
|
-
# Gzip compression
|
|
45
|
-
gzip on;
|
|
46
|
-
gzip_vary on;
|
|
47
|
-
gzip_proxied any;
|
|
48
|
-
gzip_comp_level 6;
|
|
49
|
-
gzip_types text/plain text/css text/xml text/javascript
|
|
50
|
-
application/json application/javascript application/xml+rss
|
|
51
|
-
application/atom+xml image/svg+xml;
|
|
52
|
-
|
|
53
|
-
# Rate limiting
|
|
54
|
-
limit_req_zone $binary_remote_addr zone=mcp_limit:10m rate=10r/s;
|
|
55
|
-
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
|
|
56
|
-
|
|
57
|
-
# Upstream health check
|
|
58
|
-
upstream_conf_cache_timeout 60s;
|
|
59
|
-
|
|
60
|
-
# SSL settings
|
|
61
|
-
ssl_protocols TLSv1.2 TLSv1.3;
|
|
62
|
-
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
|
|
63
|
-
ssl_prefer_server_ciphers off;
|
|
64
|
-
ssl_session_cache shared:SSL:10m;
|
|
65
|
-
ssl_session_timeout 1h;
|
|
66
|
-
|
|
67
|
-
# Security headers
|
|
68
|
-
add_header X-Frame-Options DENY always;
|
|
69
|
-
add_header X-Content-Type-Options nosniff always;
|
|
70
|
-
add_header X-XSS-Protection "1; mode=block" always;
|
|
71
|
-
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
72
|
-
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';" always;
|
|
73
|
-
|
|
74
|
-
# Health check for load balancer itself
|
|
75
|
-
server {
|
|
76
|
-
listen 8080;
|
|
77
|
-
location /nginx-health {
|
|
78
|
-
access_log off;
|
|
79
|
-
return 200 "nginx is healthy\n";
|
|
80
|
-
add_header Content-Type text/plain;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
# Main load balancer configuration
|
|
85
|
-
server {
|
|
86
|
-
listen 80;
|
|
87
|
-
listen 443 ssl http2;
|
|
88
|
-
|
|
89
|
-
# SSL certificate (will be mounted or generated)
|
|
90
|
-
ssl_certificate /etc/nginx/ssl/nginx.crt;
|
|
91
|
-
ssl_certificate_key /etc/nginx/ssl/nginx.key;
|
|
92
|
-
|
|
93
|
-
server_name mcp-services.local _;
|
|
94
|
-
|
|
95
|
-
# Rate limiting
|
|
96
|
-
limit_req zone=mcp_limit burst=20 nodelay;
|
|
97
|
-
limit_conn conn_limit 100;
|
|
98
|
-
|
|
99
|
-
# Global health check endpoint
|
|
100
|
-
location /health {
|
|
101
|
-
access_log off;
|
|
102
|
-
return 200 '{"status":"healthy","services":"all","timestamp":"$time_iso8601"}';
|
|
103
|
-
add_header Content-Type application/json;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
# Metrics endpoint for monitoring
|
|
107
|
-
location /nginx_status {
|
|
108
|
-
stub_status;
|
|
109
|
-
access_log off;
|
|
110
|
-
allow 127.0.0.1;
|
|
111
|
-
allow 10.0.0.0/8;
|
|
112
|
-
allow 172.16.0.0/12;
|
|
113
|
-
allow 192.168.0.0/16;
|
|
114
|
-
deny all;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
# Dynamic upstream configuration (populated by consul-template)
|
|
118
|
-
{{range services}}{{if .Tags | contains "mcp-server"}}
|
|
119
|
-
# Upstream for {{.Name}}
|
|
120
|
-
upstream {{.Name}}_backend {
|
|
121
|
-
least_conn;
|
|
122
|
-
{{range service .Name}}
|
|
123
|
-
server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=30s weight=1;
|
|
124
|
-
{{end}}
|
|
125
|
-
keepalive 32;
|
|
126
|
-
}
|
|
127
|
-
{{end}}{{end}}
|
|
128
|
-
|
|
129
|
-
# Service routing based on path prefixes
|
|
130
|
-
{{range services}}{{if .Tags | contains "mcp-server"}}
|
|
131
|
-
location /{{.Name}}/ {
|
|
132
|
-
access_log /var/log/nginx/{{.Name}}.log mcp_access;
|
|
133
|
-
|
|
134
|
-
proxy_pass http://{{.Name}}_backend/;
|
|
135
|
-
proxy_http_version 1.1;
|
|
136
|
-
proxy_set_header Upgrade $http_upgrade;
|
|
137
|
-
proxy_set_header Connection 'upgrade';
|
|
138
|
-
proxy_set_header Host $host;
|
|
139
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
140
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
141
|
-
proxy_set_header X-Forwarded-Proto $scheme;
|
|
142
|
-
proxy_cache_bypass $http_upgrade;
|
|
143
|
-
|
|
144
|
-
# Timeouts
|
|
145
|
-
proxy_connect_timeout 5s;
|
|
146
|
-
proxy_send_timeout 60s;
|
|
147
|
-
proxy_read_timeout 60s;
|
|
148
|
-
|
|
149
|
-
# Health check
|
|
150
|
-
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
|
151
|
-
proxy_next_upstream_tries 3;
|
|
152
|
-
}
|
|
153
|
-
{{end}}{{end}}
|
|
154
|
-
|
|
155
|
-
# Direct service access (for development/debugging)
|
|
156
|
-
{{range services}}{{if .Tags | contains "mcp-server"}}
|
|
157
|
-
location ~ ^/direct/{{.Name}}/(.*)$ {
|
|
158
|
-
access_log /var/log/nginx/{{.Name}}_direct.log mcp_access;
|
|
159
|
-
|
|
160
|
-
proxy_pass http://{{.Name}}_backend/$1;
|
|
161
|
-
proxy_http_version 1.1;
|
|
162
|
-
proxy_set_header Upgrade $http_upgrade;
|
|
163
|
-
proxy_set_header Connection 'upgrade';
|
|
164
|
-
proxy_set_header Host $host;
|
|
165
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
166
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
167
|
-
proxy_set_header X-Forwarded-Proto $scheme;
|
|
168
|
-
proxy_cache_bypass $http_upgrade;
|
|
169
|
-
|
|
170
|
-
proxy_connect_timeout 5s;
|
|
171
|
-
proxy_send_timeout 60s;
|
|
172
|
-
proxy_read_timeout 60s;
|
|
173
|
-
}
|
|
174
|
-
{{end}}{{end}}
|
|
175
|
-
|
|
176
|
-
# Fallback for root path
|
|
177
|
-
location / {
|
|
178
|
-
return 200 '{
|
|
179
|
-
"message": "ServiceNow MCP Load Balancer",
|
|
180
|
-
"version": "1.0.0",
|
|
181
|
-
"services": [
|
|
182
|
-
{{range $i, $service := services}}{{if .Tags | contains "mcp-server"}}{{if $i}},{{end}}
|
|
183
|
-
{
|
|
184
|
-
"name": "{{.Name}}",
|
|
185
|
-
"path": "/{{.Name}}/",
|
|
186
|
-
"direct_path": "/direct/{{.Name}}/",
|
|
187
|
-
"instances": {{service .Name | len}},
|
|
188
|
-
"health": "/{{.Name}}/health"
|
|
189
|
-
}{{end}}{{end}}
|
|
190
|
-
],
|
|
191
|
-
"timestamp": "$time_iso8601"
|
|
192
|
-
}';
|
|
193
|
-
add_header Content-Type application/json;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
# Custom error pages
|
|
197
|
-
error_page 404 /404.html;
|
|
198
|
-
error_page 500 502 503 504 /50x.html;
|
|
199
|
-
|
|
200
|
-
location = /404.html {
|
|
201
|
-
return 404 '{"error":"Not Found","message":"Service not found","timestamp":"$time_iso8601"}';
|
|
202
|
-
add_header Content-Type application/json;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
location = /50x.html {
|
|
206
|
-
return 500 '{"error":"Server Error","message":"Service temporarily unavailable","timestamp":"$time_iso8601"}';
|
|
207
|
-
add_header Content-Type application/json;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
[supervisord]
|
|
2
|
-
nodaemon=true
|
|
3
|
-
logfile=/var/log/nginx/supervisord.log
|
|
4
|
-
logfile_maxbytes=50MB
|
|
5
|
-
logfile_backups=10
|
|
6
|
-
loglevel=info
|
|
7
|
-
pidfile=/tmp/supervisord.pid
|
|
8
|
-
|
|
9
|
-
[unix_http_server]
|
|
10
|
-
file=/tmp/supervisor.sock
|
|
11
|
-
chmod=0700
|
|
12
|
-
|
|
13
|
-
[supervisorctl]
|
|
14
|
-
serverurl=unix:///tmp/supervisor.sock
|
|
15
|
-
|
|
16
|
-
[rpcinterface:supervisor]
|
|
17
|
-
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
|
18
|
-
|
|
19
|
-
# Consul Template - runs first to generate initial config
|
|
20
|
-
[program:consul-template]
|
|
21
|
-
command=/usr/local/bin/consul-template -config=/etc/consul-template/consul-template.hcl
|
|
22
|
-
autostart=true
|
|
23
|
-
autorestart=true
|
|
24
|
-
priority=100
|
|
25
|
-
startsecs=5
|
|
26
|
-
startretries=3
|
|
27
|
-
stdout_logfile=/var/log/nginx/consul-template.log
|
|
28
|
-
stderr_logfile=/var/log/nginx/consul-template-error.log
|
|
29
|
-
environment=CONSUL_HTTP_ADDR="%(ENV_CONSUL_URL)s"
|
|
30
|
-
|
|
31
|
-
# Nginx - starts after consul-template has run at least once
|
|
32
|
-
[program:nginx]
|
|
33
|
-
command=/usr/sbin/nginx -g "daemon off;"
|
|
34
|
-
autostart=false
|
|
35
|
-
autorestart=true
|
|
36
|
-
priority=200
|
|
37
|
-
startsecs=5
|
|
38
|
-
startretries=3
|
|
39
|
-
stdout_logfile=/var/log/nginx/nginx.log
|
|
40
|
-
stderr_logfile=/var/log/nginx/nginx-error.log
|
|
41
|
-
|
|
42
|
-
# Health monitor - monitors service health and updates status
|
|
43
|
-
[program:health-monitor]
|
|
44
|
-
command=/bin/sh -c "while true; do /usr/local/bin/healthcheck.sh --internal > /dev/null 2>&1 || true; sleep 30; done"
|
|
45
|
-
autostart=true
|
|
46
|
-
autorestart=true
|
|
47
|
-
priority=300
|
|
48
|
-
startsecs=10
|
|
49
|
-
stdout_logfile=/var/log/nginx/health-monitor.log
|
|
50
|
-
stderr_logfile=/var/log/nginx/health-monitor-error.log
|
|
51
|
-
|
|
52
|
-
# Event listener to start nginx after consul-template is ready
|
|
53
|
-
[eventlistener:nginx-starter]
|
|
54
|
-
command=/bin/sh -c "echo 'Waiting for initial consul-template run...' && sleep 10 && supervisorctl start nginx"
|
|
55
|
-
events=PROCESS_STATE_RUNNING
|
|
56
|
-
autostart=true
|
|
57
|
-
autorestart=false
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# Dynamic upstream configuration generated by consul-template
|
|
2
|
-
# This file is automatically generated - do not edit manually
|
|
3
|
-
|
|
4
|
-
{{range services}}{{if .Tags | contains "mcp-server"}}
|
|
5
|
-
# Upstream configuration for {{.Name}}
|
|
6
|
-
upstream {{.Name}}_backend {
|
|
7
|
-
least_conn;
|
|
8
|
-
|
|
9
|
-
{{range service .Name "passing"}}
|
|
10
|
-
server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=30s weight=1;
|
|
11
|
-
{{else}}
|
|
12
|
-
# No healthy instances available for {{.Name}}
|
|
13
|
-
server 127.0.0.1:65535 backup;
|
|
14
|
-
{{end}}
|
|
15
|
-
|
|
16
|
-
# Connection pooling
|
|
17
|
-
keepalive 32;
|
|
18
|
-
keepalive_requests 100;
|
|
19
|
-
keepalive_timeout 60s;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
{{end}}{{end}}
|
|
23
|
-
|
|
24
|
-
# Health check backend for monitoring all services
|
|
25
|
-
upstream health_check_backend {
|
|
26
|
-
server 127.0.0.1:8080;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
# Monitoring and metrics
|
|
30
|
-
upstream consul_backend {
|
|
31
|
-
server consul:8500;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
{{if service "prometheus"}}
|
|
35
|
-
upstream prometheus_backend {
|
|
36
|
-
{{range service "prometheus"}}
|
|
37
|
-
server {{.Address}}:{{.Port}};
|
|
38
|
-
{{end}}
|
|
39
|
-
}
|
|
40
|
-
{{end}}
|
|
41
|
-
|
|
42
|
-
{{if service "grafana"}}
|
|
43
|
-
upstream grafana_backend {
|
|
44
|
-
{{range service "grafana"}}
|
|
45
|
-
server {{.Address}}:{{.Port}};
|
|
46
|
-
{{end}}
|
|
47
|
-
}
|
|
48
|
-
{{end}}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# ServiceNow Automation MCP Server
|
|
2
|
-
FROM ../base/Dockerfile.base AS automation-mcp
|
|
3
|
-
|
|
4
|
-
LABEL service="automation-mcp" \
|
|
5
|
-
version="1.0.0" \
|
|
6
|
-
description="ServiceNow Automation MCP Server" \
|
|
7
|
-
port="3009"
|
|
8
|
-
|
|
9
|
-
# Set service-specific environment
|
|
10
|
-
ENV SERVICE_NAME=automation-mcp \
|
|
11
|
-
SERVER_PORT=3009 \
|
|
12
|
-
NODE_ENV=production
|
|
13
|
-
|
|
14
|
-
# Copy service-specific configuration
|
|
15
|
-
COPY docker/services/automation-mcp/config/ ./config/
|
|
16
|
-
|
|
17
|
-
# Copy only the necessary service files
|
|
18
|
-
COPY src/mcp/servicenow-automation-mcp.ts ./src/mcp/
|
|
19
|
-
COPY src/mcp/http-transport-wrapper.ts ./src/mcp/
|
|
20
|
-
COPY src/mcp/service-discovery-client.ts ./src/mcp/
|
|
21
|
-
|
|
22
|
-
# Copy service entry point
|
|
23
|
-
COPY docker/services/automation-mcp/entrypoint.js ./
|
|
24
|
-
|
|
25
|
-
# Rebuild for this specific service
|
|
26
|
-
RUN npm run build
|
|
27
|
-
|
|
28
|
-
# Expose port
|
|
29
|
-
EXPOSE 3009
|
|
30
|
-
|
|
31
|
-
# Start the service
|
|
32
|
-
CMD ["node", "entrypoint.js"]
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"service": {
|
|
3
|
-
"name": "automation-mcp",
|
|
4
|
-
"displayName": "ServiceNow Automation MCP Server",
|
|
5
|
-
"port": 3009,
|
|
6
|
-
"healthCheck": {
|
|
7
|
-
"path": "/health",
|
|
8
|
-
"interval": "30s",
|
|
9
|
-
"timeout": "10s",
|
|
10
|
-
"retries": 3
|
|
11
|
-
},
|
|
12
|
-
"resources": {
|
|
13
|
-
"limits": {
|
|
14
|
-
"memory": "512Mi",
|
|
15
|
-
"cpu": "500m"
|
|
16
|
-
},
|
|
17
|
-
"requests": {
|
|
18
|
-
"memory": "256Mi",
|
|
19
|
-
"cpu": "250m"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"scaling": {
|
|
23
|
-
"minReplicas": 1,
|
|
24
|
-
"maxReplicas": 3,
|
|
25
|
-
"targetCPU": 70
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|