@ateam-ai/mcp 0.3.22 → 0.3.24

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/tools.js +62 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ateam-ai/mcp",
3
- "version": "0.3.22",
3
+ "version": "0.3.24",
4
4
  "mcpName": "io.github.ariekogan/ateam-mcp",
5
5
  "description": "A-Team MCP Server — build, validate, and deploy multi-agent solutions from any AI environment",
6
6
  "type": "module",
package/src/tools.js CHANGED
@@ -1246,6 +1246,56 @@ const handlers = {
1246
1246
  security: "https://ateam-ai.com/#security",
1247
1247
  engine: "https://ateam-ai.com/#engine",
1248
1248
  },
1249
+ platform_connectors: {
1250
+ _note: "Shared infrastructure MCPs available to all solutions. Reference by id in your solution's `platform_connectors` array; tools are automatically merged into every skill's tool catalog (no bridge needed). Do NOT bundle their source in mcp_store — they run as fixed Docker services on ADAS Core.",
1251
+ available: [
1252
+ {
1253
+ id: "memory-mcp",
1254
+ name: "Memory Engine",
1255
+ purpose: "Long-term memory + ephemeral context, per-tenant per-actor",
1256
+ tool_prefixes: ["memory.", "context."],
1257
+ typical_use: "Store user preferences/facts, recall rules, persist working context across conversations",
1258
+ },
1259
+ {
1260
+ id: "docs-index-mcp",
1261
+ name: "Docs Index",
1262
+ purpose: "Source-agnostic document corpus retrieval (chunking, embeddings, cosine search)",
1263
+ tool_prefixes: ["docs.corpus.", "docs.ingest.", "docs.search", "docs.file.", "docs.sync.", "docs.stats"],
1264
+ typical_use: "Index documents from any source (Dropbox, Gmail attachments, uploaded files), answer questions with retrieved chunks + citations. Fed by source connectors (e.g. dropbox-mcp) that call docs.ingest.file.",
1265
+ },
1266
+ {
1267
+ id: "handoff-controller-mcp",
1268
+ name: "Handoff Controller",
1269
+ purpose: "Live conversation handoffs between skills in a multi-skill solution",
1270
+ tool_prefixes: ["handoff."],
1271
+ typical_use: "Pass a live conversation from one skill to another (e.g. identity-assurance → order-support), carrying grants",
1272
+ },
1273
+ {
1274
+ id: "internal-comm-mcp",
1275
+ name: "Internal Communication",
1276
+ purpose: "Skill-to-skill messaging and voice replies",
1277
+ tool_prefixes: ["comm."],
1278
+ typical_use: "Async message between skills, or send a voice reply back through the Twilio channel",
1279
+ },
1280
+ {
1281
+ id: "browser-mcp",
1282
+ name: "Browser",
1283
+ purpose: "Headless Chromium automation (Playwright)",
1284
+ tool_prefixes: ["web."],
1285
+ typical_use: "Navigate, read, click, type, screenshot any public web page; scrape data for enrichment",
1286
+ },
1287
+ ],
1288
+ how_to_use: {
1289
+ step_1: "Declare in solution: platform_connectors: [{ id: 'memory-mcp', required: true }]",
1290
+ step_2: "Tools become available in the skill's tool catalog automatically — no code to write, no bridge needed",
1291
+ step_3: "Reference tools in skill.tools[] with source.type='mcp_bridge', connection_id matching the connector id",
1292
+ },
1293
+ do_not: [
1294
+ "Do NOT include platform connector source code in mcp_store — they're managed by the platform, not by your solution",
1295
+ "Do NOT try to deploy a duplicate platform connector as a solution connector — use the platform one directly",
1296
+ "Do NOT build stdio bridge connectors for platform services — the platform auto-merges their tools",
1297
+ ],
1298
+ },
1249
1299
  critical_connector_rules: {
1250
1300
  _note: "CRITICAL: Read this before writing ANY connector code. Violations are caught at deploy time and BLOCKED.",
1251
1301
  transport: "A-Team connectors use STDIO transport — child processes communicating via stdin/stdout JSON-RPC.",
@@ -1430,12 +1480,24 @@ const handlers = {
1430
1480
  if (!effectiveSkills?.length && pullResult.skills?.length) {
1431
1481
  effectiveSkills = pullResult.skills;
1432
1482
  }
1483
+ // Synthesize connectors[] metadata from mcp_store keys if not passed inline.
1484
+ // The pull-bundle endpoint returns mcp_store (files) and solution.platform_connectors
1485
+ // (declarations) but not a top-level connectors[] array. The validator/deploy
1486
+ // pipeline expects one, so build it from the mcp_store we just pulled.
1487
+ if (!connectors?.length && Object.keys(effectiveMcpStore).length > 0) {
1488
+ connectors = Object.keys(effectiveMcpStore).map((id) => ({
1489
+ id,
1490
+ name: id,
1491
+ transport: "stdio",
1492
+ }));
1493
+ }
1433
1494
  phases.push({
1434
1495
  phase: "github_pull",
1435
1496
  status: "done",
1436
1497
  skills_found: pullResult.skills_found || 0,
1437
1498
  connectors_found: pullResult.connectors_found || 0,
1438
1499
  files_loaded: pullResult.files_loaded || 0,
1500
+ connectors_synthesized: connectors?.length || 0,
1439
1501
  });
1440
1502
  } catch (err) {
1441
1503
  return {