learning_ai_common_plat/services/mcp-server/src/server.ts
saravanakumardb1 d7aa90b021 feat(mcp-server): 4 MCP tool gaps + 3 new A2A pipelines (Priority 3/6/7)
MCP tool gaps filled (DOMAIN_PRODUCTS.md alignment):
- jarvis.memory.create — POST /jarvis/agents/:agentId/memory (sessionId, type, content, importance, tags, expiresAt)
- jarvis.teams.listMembers — GET /jarvis/teams/:teamId/members (role, status, joinedAt)
- nomgap.fasting.getSession — GET /fasting/sessions/:id (client func already existed, MCP tool was missing)
- peakpulse.weather.getSnapshot — extracts weather field from peakpulseSessionGet response

New A2A pipelines (all registered in server.ts):
- transcript-extraction-pipeline.ts: lysnrai.transcripts.runExtractionPipeline
  - TranscriptCollectorAgent -> ExtractionBatchAgent -> ExtractionReportAgent
  - Queries transcripts missing extractedAt, runs extraction, returns batch report + dryRun support
- sync-conflict-pipeline.ts: chronomind.sync.diagnoseConflicts
  - ConflictDetectorAgent -> SyncStateInspectorAgent -> DiagnosticsSessionAgent -> ConflictReportAgent
  - Queries telemetry for sync_conflict events, classifies pattern, creates diagnostics session on conflict
- route-safety-pipeline.ts: peakpulse.sessions.assessSafety
  - SessionDataAgent -> RouteProfileAgent -> SafetyAnalysisAgent -> SafetyReportAgent
  - Fetches GPS + weather, evaluates UV/wind/altitude/speed risk factors, enriches with extraction entities

Client additions (jarvis-client.ts):
  jarvisMemoryCreate, jarvisTeamsListMembers + JarvisTeamMemberDoc interface

MCP server total: 93 tools across 17 namespaces
2026-03-05 15:18:21 -08:00

72 lines
3.4 KiB
TypeScript

/**
* ByteLyst MCP Server — port 4007
*
* Exposes tool namespaces:
* platform.telemetry.* — query events, clusters, metrics, policy CRUD
* platform.diagnostics.* — manage debug sessions, read logs/traces, cancel
* extraction.* — run extraction, list models, cache stats, sidecar health
* support.* — compound tools (createDebugPack, runIncidentPipeline)
* mindlyst.* — memory, brains, briefs, streaks, reflections, extractions
* lysnrai.* — transcripts, sessions, orgs, apiTokens, stt
* jarvis.* — agents, sessions, memory (JarvisJr coaching platform)
* chronomind.* — timers, routines, syncStatus
* nomgap.* — fasting sessions, push triggers
* peakpulse.* — adventure sessions, GPS routes, stats
* tracker.* — items, votes, comments, public roadmap
* flags.* — feature flag CRUD + kill switch
* jobs.* — background job list, trigger, run history
* maintenance.* — maintenance mode + scheduled windows
* settings.* — user settings + kill switch check
* webhooks.* — subscription CRUD, deliveries, test, rotate secret
*
* Auth: JWT Bearer tokens issued by platform-service (same JWT_SECRET).
* Role gating: viewer / admin / super_admin per tool.
*/
import { createServiceApp, startService } from '@bytelyst/fastify-core';
import { config } from './lib/config.js';
import { parseJwt } from './lib/auth.js';
import { toolRoutes } from './modules/tools/routes.js';
// Register all tool namespaces (side-effect: populates the tool registry)
import './modules/platform/telemetry-tools.js';
import './modules/platform/telemetry-policy-tools.js';
import './modules/platform/diagnostics-tools.js';
import './modules/extraction/extraction-tools.js';
import './modules/support/debug-pack.js';
import './modules/a2a/pipeline-tool.js';
import './modules/a2a/daily-brief-pipeline.js';
import './modules/a2a/marketplace-cert-pipeline.js';
import './modules/a2a/safety-monitor-pipeline.js';
import './modules/a2a/sync-diagnostics-pipeline.js';
import './modules/a2a/transcript-extraction-pipeline.js';
import './modules/a2a/sync-conflict-pipeline.js';
import './modules/a2a/route-safety-pipeline.js';
import './modules/mindlyst/mindlyst-tools.js';
import './modules/lysnrai/lysnrai-tools.js';
import './modules/jarvis/jarvis-tools.js';
import './modules/chronomind/chronomind-tools.js';
import './modules/nomgap/nomgap-tools.js';
import './modules/peakpulse/peakpulse-tools.js';
import './modules/tracker/tracker-tools.js';
import './modules/platform/ops-tools.js';
import './modules/platform/webhooks-tools.js';
import './modules/platform/sdk-tools.js';
const app = await createServiceApp({
name: 'mcp-server',
version: '0.1.0',
description:
'ByteLyst MCP Server — platform.*, extraction.*, support.*, mindlyst.*, lysnrai.*, jarvis.*, chronomind.*, nomgap.*, peakpulse.*, tracker.*, flags.*, jobs.*, maintenance.*, settings.*, webhooks.*',
corsOrigin: config.CORS_ORIGIN,
logLevel: config.LOG_LEVEL,
});
// Parse JWT on every request (best-effort)
app.addHook('onRequest', parseJwt);
// Register tool routes
await app.register(toolRoutes, { prefix: '/api' });
await startService(app, { port: config.PORT, host: config.HOST });