@goonnguyen/human-mcp 1.0.2 → 1.2.0

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.
@@ -0,0 +1,128 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ human-mcp:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ image: human-mcp:latest
9
+ container_name: human-mcp-server
10
+ restart: unless-stopped
11
+ ports:
12
+ - "3000:3000"
13
+ environment:
14
+ # Core Configuration
15
+ - NODE_ENV=production
16
+ - GOOGLE_GEMINI_API_KEY=${GOOGLE_GEMINI_API_KEY}
17
+ - GOOGLE_GEMINI_MODEL=${GOOGLE_GEMINI_MODEL:-gemini-2.5-flash}
18
+
19
+ # Transport Configuration
20
+ - TRANSPORT_TYPE=http
21
+ - HTTP_PORT=3000
22
+ - HTTP_HOST=0.0.0.0
23
+ - HTTP_SESSION_MODE=${HTTP_SESSION_MODE:-stateful}
24
+ - HTTP_ENABLE_SSE=${HTTP_ENABLE_SSE:-true}
25
+ - HTTP_ENABLE_JSON_RESPONSE=${HTTP_ENABLE_JSON_RESPONSE:-true}
26
+
27
+ # Security Configuration
28
+ - HTTP_CORS_ENABLED=${HTTP_CORS_ENABLED:-true}
29
+ - HTTP_CORS_ORIGINS=${HTTP_CORS_ORIGINS:-*}
30
+ - HTTP_DNS_REBINDING_ENABLED=${HTTP_DNS_REBINDING_ENABLED:-true}
31
+ - HTTP_ALLOWED_HOSTS=${HTTP_ALLOWED_HOSTS:-127.0.0.1,localhost}
32
+ - HTTP_ENABLE_RATE_LIMITING=${HTTP_ENABLE_RATE_LIMITING:-false}
33
+ - HTTP_SECRET=${HTTP_SECRET:-}
34
+
35
+ # Server Configuration
36
+ - MAX_REQUEST_SIZE=${MAX_REQUEST_SIZE:-100MB}
37
+ - ENABLE_CACHING=${ENABLE_CACHING:-true}
38
+ - CACHE_TTL=${CACHE_TTL:-3600}
39
+ - REQUEST_TIMEOUT=${REQUEST_TIMEOUT:-300000}
40
+ - FETCH_TIMEOUT=${FETCH_TIMEOUT:-60000}
41
+
42
+ # Rate Limiting
43
+ - RATE_LIMIT_REQUESTS=${RATE_LIMIT_REQUESTS:-100}
44
+ - RATE_LIMIT_WINDOW=${RATE_LIMIT_WINDOW:-60000}
45
+
46
+ # Logging
47
+ - LOG_LEVEL=${LOG_LEVEL:-info}
48
+
49
+ volumes:
50
+ # Optional: Mount a volume for persistent data if needed
51
+ - ./data:/app/data
52
+
53
+ labels:
54
+ - "traefik.enable=true"
55
+ - "traefik.http.routers.human-mcp.rule=Host(`${DOMAIN:-localhost}`)"
56
+ - "traefik.http.routers.human-mcp.entrypoints=websecure"
57
+ - "traefik.http.routers.human-mcp.tls.certresolver=letsencrypt"
58
+ - "traefik.http.services.human-mcp.loadbalancer.server.port=3000"
59
+
60
+ networks:
61
+ - human-mcp-network
62
+
63
+ # Resource limits for production
64
+ deploy:
65
+ resources:
66
+ limits:
67
+ cpus: '1.0'
68
+ memory: 1G
69
+ reservations:
70
+ cpus: '0.5'
71
+ memory: 512M
72
+
73
+ # Health check
74
+ healthcheck:
75
+ test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
76
+ interval: 30s
77
+ timeout: 10s
78
+ retries: 3
79
+ start_period: 15s
80
+
81
+ # Optional: Traefik reverse proxy for production deployment
82
+ traefik:
83
+ image: traefik:v3.1
84
+ container_name: traefik
85
+ restart: unless-stopped
86
+ profiles:
87
+ - proxy
88
+ ports:
89
+ - "80:80"
90
+ - "443:443"
91
+ - "8080:8080" # Traefik dashboard (disable in production)
92
+ environment:
93
+ - TRAEFIK_API_DASHBOARD=true
94
+ - TRAEFIK_API_INSECURE=true
95
+ - TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=:80
96
+ - TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS=:443
97
+ - TRAEFIK_PROVIDERS_DOCKER=true
98
+ - TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT=false
99
+ - TRAEFIK_CERTIFICATESRESOLVERS_LETSENCRYPT_ACME_EMAIL=${ACME_EMAIL:-admin@example.com}
100
+ - TRAEFIK_CERTIFICATESRESOLVERS_LETSENCRYPT_ACME_STORAGE=/letsencrypt/acme.json
101
+ - TRAEFIK_CERTIFICATESRESOLVERS_LETSENCRYPT_ACME_HTTPCHALLENGE_ENTRYPOINT=web
102
+ volumes:
103
+ - /var/run/docker.sock:/var/run/docker.sock:ro
104
+ - ./letsencrypt:/letsencrypt
105
+ networks:
106
+ - human-mcp-network
107
+
108
+ # Optional: Redis for session storage (if needed for scaling)
109
+ redis:
110
+ image: redis:7-alpine
111
+ container_name: human-mcp-redis
112
+ restart: unless-stopped
113
+ profiles:
114
+ - redis
115
+ ports:
116
+ - "6379:6379"
117
+ volumes:
118
+ - redis-data:/data
119
+ networks:
120
+ - human-mcp-network
121
+ command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
122
+
123
+ volumes:
124
+ redis-data:
125
+
126
+ networks:
127
+ human-mcp-network:
128
+ driver: bridge
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goonnguyen/human-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.2.0",
4
4
  "description": "Human MCP: Bringing Human Capabilities to Coding Agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,11 +14,15 @@
14
14
  "inspector": "mcp-inspector stdio -- bun run src/index.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@modelcontextprotocol/sdk": "^1.4.0",
18
- "zod": "^3.23.0",
19
17
  "@google/generative-ai": "^0.21.0",
18
+ "@modelcontextprotocol/sdk": "^1.4.0",
19
+ "compression": "^1.8.1",
20
+ "cors": "^2.8.5",
21
+ "express": "^5.1.0",
22
+ "fluent-ffmpeg": "^2.1.3",
23
+ "helmet": "^8.1.0",
20
24
  "sharp": "^0.33.0",
21
- "fluent-ffmpeg": "^2.1.3"
25
+ "zod": "^3.23.0"
22
26
  },
23
27
  "devDependencies": {
24
28
  "@modelcontextprotocol/inspector": "^0.2.0",
@@ -27,6 +31,9 @@
27
31
  "@semantic-release/github": "^11.0.5",
28
32
  "@semantic-release/npm": "^12.0.2",
29
33
  "@types/bun": "latest",
34
+ "@types/compression": "^1.8.1",
35
+ "@types/cors": "^2.8.19",
36
+ "@types/express": "^5.0.3",
30
37
  "@types/fluent-ffmpeg": "^2.1.26",
31
38
  "semantic-release": "^24.2.7",
32
39
  "typescript": "^5.6.0"