Files
fusion/packages/engine/package.json
gsxdsm c1613ad7f6 FN-7122: expose MCP servers as pi session tools
Connect configured MCP servers during pi chat and agent session startup so their discovered tools are available as namespaced custom tools.

- Add MCP session tool connection, tool-name sanitization, result mapping, and disposal handling.
- Merge discovered MCP tools into pi customTools while skipping readonly sessions and avoiding secret-bearing logs.
- Cover MCP tool wrapping and pi session integration with targeted tests.
- Document MCP forwarding behavior and promote the MCP SDK to an engine runtime dependency.

Files changed:
 .changeset/fn-7122-mcp-session-tools.md            |   7 +
 docs/mcp.md                                        |   2 +
 packages/engine/package.json                       |   2 +-
 .../engine/src/__tests__/mcp-session-tools.test.ts | 105 ++++++++
 .../src/__tests__/pi-mcp-session-tools.test.ts     |  24 ++
 packages/engine/src/mcp-session-tools.ts           | 262 ++++++++++++++++++++
 packages/engine/src/pi.ts                          |  71 +++++-
 pnpm-lock.yaml                                     | 264 ++++++++++++++++++++-
 8 files changed, 713 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-7122

Fusion-Task-Lineage: e7ff57e7-9bfb-41a4-9ebd-6c868bac2745

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 14:09:47 -07:00

61 lines
1.9 KiB
JSON

{
"name": "@fusion/engine",
"version": "0.49.0",
"license": "MIT",
"description": "Fusion engine: executor, merger, scheduler, and automation runtime for the Fusion AI coding agent.",
"homepage": "https://github.com/Runfusion/Fusion#readme",
"repository": {
"type": "git",
"url": "https://github.com/Runfusion/Fusion",
"directory": "packages/engine"
},
"bugs": {
"url": "https://github.com/Runfusion/Fusion/issues"
},
"type": "module",
"exports": {
".": {
"types": "./src/index.ts",
"source": "./src/index.ts",
"import": "./dist/index.js"
}
},
"publishConfig": {
"access": "public"
},
"files": [
"dist",
"README.md"
],
"scripts": {
"build": "tsc",
"typecheck": "tsc --noEmit",
"test": "vitest run --silent=passed-only --reporter=dot --project=engine-default --project=engine-reliability",
"test:core": "vitest run --silent=passed-only --reporter=dot --project=engine-core",
"test:slow": "vitest run --silent=passed-only --reporter=dot --project=engine-slow",
"test:all": "vitest run --silent=passed-only --reporter=dot",
"test:executor": "vitest run src/__tests__/executor-*.test.ts",
"test:watch": "vitest src/__tests__/executor-*.test.ts --watch"
},
"dependencies": {
"@fusion/core": "workspace:*",
"@fusion/pi-claude-cli": "workspace:*",
"@earendil-works/pi-ai": "^0.79.9",
"@earendil-works/pi-coding-agent": "^0.79.9",
"@modelcontextprotocol/sdk": "^1.0.0",
"cron-parser": "^5.5.0",
"esbuild": "^0.25.12",
"node-pty": "npm:@homebridge/node-pty-prebuilt-multiarch@^0.13.1",
"proper-lockfile": "^4.1.2",
"typebox": "^1.0.0"
},
"devDependencies": {
"@types/node": "^25.5.0",
"@types/proper-lockfile": "^4.1.4",
"@vitest/coverage-v8": "^4.1.0",
"typescript": "^5.7.0",
"vitest": "^4.1.0"
},
"private": true
}