chore: finalize containerized MCP setup and fix memory-mcp native module issues
Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 2s
Monorepo Pipeline / 🧹 Lint (push) Failing after 9s
Monorepo Pipeline / 🧪 Test (push) Failing after 9s
Monorepo Pipeline / 🏗️ Build (push) Failing after 8s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 2s
Monorepo Pipeline / 🧹 Lint (push) Failing after 9s
Monorepo Pipeline / 🧪 Test (push) Failing after 9s
Monorepo Pipeline / 🏗️ Build (push) Failing after 8s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
This commit is contained in:
@@ -11,6 +11,68 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- mcp-network
|
- mcp-network
|
||||||
|
|
||||||
|
gitea-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/gitea-mcp
|
||||||
|
container_name: gitea-mcp
|
||||||
|
ports:
|
||||||
|
- "3001:3001"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
|
memory-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/memory-mcp
|
||||||
|
container_name: memory-mcp
|
||||||
|
ports:
|
||||||
|
- "3002:3002"
|
||||||
|
depends_on:
|
||||||
|
- qdrant
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
|
umami-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/umami-mcp
|
||||||
|
container_name: umami-mcp
|
||||||
|
ports:
|
||||||
|
- "3003:3003"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
|
serpbear-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/serpbear-mcp
|
||||||
|
container_name: serpbear-mcp
|
||||||
|
ports:
|
||||||
|
- "3004:3004"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
|
glitchtip-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/glitchtip-mcp
|
||||||
|
container_name: glitchtip-mcp
|
||||||
|
ports:
|
||||||
|
- "3005:3005"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
|
klz-payload-mcp:
|
||||||
|
build:
|
||||||
|
context: ./packages/klz-payload-mcp
|
||||||
|
container_name: klz-payload-mcp
|
||||||
|
ports:
|
||||||
|
- "3006:3006"
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- mcp-network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
mcp-network:
|
mcp-network:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import { fileURLToPath } from 'url';
|
|||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
// Try to load .env.local first (contains credentials usually)
|
// Try to load .env.local first (contains credentials usually)
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
// Fallback to .env (contains defaults)
|
// Fallback to .env (contains defaults)
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
// Now boot the compiled MCP index
|
// Now boot the compiled MCP index
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
|
|||||||
15
packages/glitchtip-mcp/Dockerfile
Normal file
15
packages/glitchtip-mcp/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM node:20-bookworm-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json ./
|
||||||
|
RUN corepack enable pnpm && pnpm install --ignore-workspace
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:20-bookworm-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/package.json ./
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/start.js"]
|
||||||
@@ -4,8 +4,8 @@ import { fileURLToPath } from 'url';
|
|||||||
|
|
||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
console.error('Failed to start GlitchTip MCP Server:', err);
|
console.error('Failed to start GlitchTip MCP Server:', err);
|
||||||
|
|||||||
15
packages/klz-payload-mcp/Dockerfile
Normal file
15
packages/klz-payload-mcp/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM node:20-bookworm-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json ./
|
||||||
|
RUN corepack enable pnpm && pnpm install --ignore-workspace
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:20-bookworm-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/package.json ./
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/start.js"]
|
||||||
@@ -4,8 +4,8 @@ import { fileURLToPath } from 'url';
|
|||||||
|
|
||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
console.error('Failed to start KLZ Payload MCP Server:', err);
|
console.error('Failed to start KLZ Payload MCP Server:', err);
|
||||||
|
|||||||
18
packages/memory-mcp/Dockerfile
Normal file
18
packages/memory-mcp/Dockerfile
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
FROM node:20-bookworm-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json ./
|
||||||
|
RUN corepack enable pnpm && pnpm install --ignore-workspace
|
||||||
|
RUN for dir in $(find /app/node_modules -type d -name "sharp" | grep "node_modules/sharp$"); do \
|
||||||
|
echo "module.exports = {};" > "$dir/lib/index.js" || true; \
|
||||||
|
done
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:20-bookworm-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/package.json ./
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/start.js"]
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
"@modelcontextprotocol/sdk": "^1.5.0",
|
"@modelcontextprotocol/sdk": "^1.5.0",
|
||||||
"@qdrant/js-client-rest": "^1.12.0",
|
"@qdrant/js-client-rest": "^1.12.0",
|
||||||
"@xenova/transformers": "^2.17.2",
|
"@xenova/transformers": "^2.17.2",
|
||||||
|
"onnxruntime-node": "^1.14.0",
|
||||||
"dotenv": "^17.3.1",
|
"dotenv": "^17.3.1",
|
||||||
"express": "^5.2.1",
|
"express": "^5.2.1",
|
||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
@@ -25,4 +26,4 @@
|
|||||||
"typescript": "^5.5.3",
|
"typescript": "^5.5.3",
|
||||||
"vitest": "^2.1.3"
|
"vitest": "^2.1.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,9 +5,9 @@ import { fileURLToPath } from 'url';
|
|||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
// Try to load .env.local first (contains credentials usually)
|
// Try to load .env.local first (contains credentials usually)
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
// Fallback to .env (contains defaults)
|
// Fallback to .env (contains defaults)
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
// Now boot the compiled MCP index
|
// Now boot the compiled MCP index
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
|
|||||||
15
packages/serpbear-mcp/Dockerfile
Normal file
15
packages/serpbear-mcp/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM node:20-bookworm-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json ./
|
||||||
|
RUN corepack enable pnpm && pnpm install --ignore-workspace
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:20-bookworm-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/package.json ./
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/start.js"]
|
||||||
@@ -4,8 +4,8 @@ import { fileURLToPath } from 'url';
|
|||||||
|
|
||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
console.error('Failed to start SerpBear MCP Server:', err);
|
console.error('Failed to start SerpBear MCP Server:', err);
|
||||||
|
|||||||
15
packages/umami-mcp/Dockerfile
Normal file
15
packages/umami-mcp/Dockerfile
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
FROM node:20-bookworm-slim AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json ./
|
||||||
|
RUN corepack enable pnpm && pnpm install --ignore-workspace
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
COPY src ./src
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM node:20-bookworm-slim
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/package.json ./
|
||||||
|
COPY --from=builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=builder /app/dist ./dist
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/start.js"]
|
||||||
@@ -4,8 +4,8 @@ import { fileURLToPath } from 'url';
|
|||||||
|
|
||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
||||||
|
|
||||||
config({ path: resolve(__dirname, '../../../.env.local') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env.local') });
|
||||||
config({ path: resolve(__dirname, '../../../.env') });
|
config({ quiet: true, path: resolve(__dirname, '../../../.env') });
|
||||||
|
|
||||||
import('./index.js').catch(err => {
|
import('./index.js').catch(err => {
|
||||||
console.error('Failed to start Umami MCP Server:', err);
|
console.error('Failed to start Umami MCP Server:', err);
|
||||||
|
|||||||
7
pnpm-lock.yaml
generated
7
pnpm-lock.yaml
generated
@@ -423,9 +423,6 @@ importers:
|
|||||||
express:
|
express:
|
||||||
specifier: ^5.2.1
|
specifier: ^5.2.1
|
||||||
version: 5.2.1
|
version: 5.2.1
|
||||||
zod:
|
|
||||||
specifier: ^3.23.8
|
|
||||||
version: 3.25.76
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/express':
|
'@types/express':
|
||||||
specifier: ^5.0.6
|
specifier: ^5.0.6
|
||||||
@@ -12025,7 +12022,7 @@ snapshots:
|
|||||||
|
|
||||||
axios@1.13.5:
|
axios@1.13.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.11(debug@4.3.7)
|
follow-redirects: 1.15.11
|
||||||
form-data: 4.0.5
|
form-data: 4.0.5
|
||||||
proxy-from-env: 1.1.0
|
proxy-from-env: 1.1.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -13410,6 +13407,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
tabbable: 6.4.0
|
tabbable: 6.4.0
|
||||||
|
|
||||||
|
follow-redirects@1.15.11: {}
|
||||||
|
|
||||||
follow-redirects@1.15.11(debug@4.3.7):
|
follow-redirects@1.15.11(debug@4.3.7):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
debug: 4.3.7
|
debug: 4.3.7
|
||||||
|
|||||||
Reference in New Issue
Block a user