@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.
- package/package.json +1 -1
- package/src/tools.js +62 -0
package/package.json
CHANGED
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 {
|