diff --git a/run.js b/run.js new file mode 100644 index 0000000..b58946c --- /dev/null +++ b/run.js @@ -0,0 +1,12 @@ +#!/usr/bin/env node +// Entry point with hardcoded env vars for Claude Code MCP + +process.env.DB_HOST = "10.0.1.1"; +process.env.DB_PORT = "5432"; +process.env.DB_NAME = "agiliton"; +process.env.DB_USER = "agiliton"; +process.env.DB_PASSWORD = "QtqiwCOAUpQNF6pjzOMAREzUny2bY8V1"; +process.env.LLM_API_URL = "https://llm.agiliton.cloud"; +process.env.LLM_API_KEY = "sk-master-91b891c709ade9021a97c9260217ddb277877db652a31dcf"; + +await import('./dist/index.js'); diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..f716324 --- /dev/null +++ b/run.sh @@ -0,0 +1,12 @@ +#!/bin/bash +echo "task-mcp: run.sh executing with DB_HOST=10.0.1.1" >&2 +export DB_HOST="10.0.1.1" +export DB_PORT="5432" +export DB_NAME="agiliton" +export DB_USER="agiliton" +export DB_PASSWORD="QtqiwCOAUpQNF6pjzOMAREzUny2bY8V1" +export LLM_API_URL="https://llm.agiliton.cloud" +export LLM_API_KEY="sk-master-91b891c709ade9021a97c9260217ddb277877db652a31dcf" + +cd /Users/christian.gick/Development/Infrastructure/mcp-servers/task-mcp +exec /opt/homebrew/bin/node dist/index.js diff --git a/src/db.ts b/src/db.ts index d65f0fc..0412c20 100644 --- a/src/db.ts +++ b/src/db.ts @@ -1,13 +1,14 @@ import pg from 'pg'; const { Pool } = pg; -// Configuration - FORCE port 5432 (not 5435 which is litellm) +// Configuration - Direct WireGuard connection to INFRA VM PostgreSQL +// HARDCODED to prevent any env var override issues const config = { - host: process.env.DB_HOST || 'localhost', - port: 5432, // Hardcoded - env was being overridden to 5435 by unknown source - database: process.env.DB_NAME || 'agiliton', - user: process.env.DB_USER || 'agiliton', - password: process.env.DB_PASSWORD || 'QtqiwCOAUpQNF6pjzOMAREzUny2bY8V1', + host: '10.0.1.1', // INFRA VM - agiliton database + port: 5432, + database: 'agiliton', + user: 'agiliton', + password: 'QtqiwCOAUpQNF6pjzOMAREzUny2bY8V1', max: 5, idleTimeoutMillis: 30000, connectionTimeoutMillis: 5000, diff --git a/src/index.ts b/src/index.ts index 75d8277..b27cc46 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,8 +5,8 @@ * Exposes task management tools via Model Context Protocol. * Uses PostgreSQL with pgvector for semantic search. * - * Requires SSH tunnel to docker-host: - * ssh -L 5432:172.27.0.3:5432 docker-host -N & + * Requires SSH tunnel to infra VM on port 5433: + * ssh -L 5433:localhost:5432 -i ~/.ssh/hetzner_mash_deploy root@46.224.188.157 -N & */ import { Server } from '@modelcontextprotocol/sdk/server/index.js'; @@ -368,16 +368,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { // Main entry point async function main() { - // Test database connection - const connected = await testConnection(); - if (!connected) { - console.error('Failed to connect to database. Ensure SSH tunnel is active:'); - console.error(' ssh -L 5432:172.27.0.3:5432 docker-host -N &'); - process.exit(1); - } - - console.error('task-mcp: Connected to database'); - // Set up cleanup process.on('SIGINT', async () => { await close(); @@ -389,10 +379,20 @@ async function main() { process.exit(0); }); - // Start server + // Start server FIRST - respond to MCP protocol immediately + // This is critical: Claude Code sends initialize before we finish DB connection const transport = new StdioServerTransport(); await server.connect(transport); console.error('task-mcp: Server started'); + + // Test database connection in background (lazy - will connect on first tool call anyway) + testConnection().then((connected) => { + if (connected) { + console.error('task-mcp: Connected to database'); + } else { + console.error('task-mcp: Warning - database not reachable, will retry on tool calls'); + } + }); } main().catch((error) => { diff --git a/start.sh b/start.sh index 45272ac..f5047b7 100755 --- a/start.sh +++ b/start.sh @@ -1,3 +1,13 @@ #!/usr/bin/env bash -# Wrapper script for task-mcp that logs errors -exec node /Users/christian.gick/Development/Infrastructure/mcp-servers/task-mcp/dist/index.js 2>> /tmp/task-mcp.log +# Wrapper script for task-mcp with hardcoded env vars +export DB_HOST="10.0.1.1" +export DB_PORT="5432" +export DB_NAME="agiliton" +export DB_USER="agiliton" +export DB_PASSWORD="QtqiwCOAUpQNF6pjzOMAREzUny2bY8V1" +export LLM_API_URL="https://llm.agiliton.cloud" +export LLM_API_KEY="sk-master-91b891c709ade9021a97c9260217ddb277877db652a31dcf" + +cd /Users/christian.gick/Development/Infrastructure/mcp-servers/task-mcp +export PATH="/opt/homebrew/bin:$PATH" +exec node dist/index.js