makepad/apps/director/Cargo.toml
Admin 0f39445982 ai: Claude Desktop drives any app with the F10 panel -- pick "Claude Desktop" in the panel's provider menu and the app serves its tools to it over MCP
- The loopback MCP server moves from Director into libs/ai/services (mcp::server); Director re-exports it, its lane tokens and tests unchanged. The dispatcher now names the server and its instructions; a TokenStore can live in memory only (ephemeral).
- mcp::host: while Claude Desktop is the provider the panel serves its registry's tools (service__tool names) on an ephemeral 127.0.0.1 port with a fresh bearer token, and writes ~/.makepad/mcp/<exe-stem>.json {pid, port, token, title} (0600 in a 0700 dir), removed when the provider changes or the panel goes. Calls queue to the UI thread and run through EngineCore::call_external: a card in the transcript, destructive calls held for the person's confirm (the pane opens for it), the result sent back when the card lands.
- mcp::mcpb: "Connect to Claude Desktop" writes <exe-stem>.mcpb (a stored zip, manifest_version 0.3, binary server = this executable with --mcp) and opens it so Claude Desktop shows its install dialog.
- platform mcp_relay: `<app> --mcp`, checked first in app_main before any Cx, window, GPU or audio, relays newline JSON-RPC on stdio to the running app's endpoint. It answers initialize/ping itself and tools/list from the app's last list while the app is down, starts the app (detached, MAKEPAD_AI_PROVIDER=claude-desktop, engine up with the pane closed) on the first call that needs it, waits up to 20 s for its file, and exits when stdin closes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 00:43:05 +02:00

54 lines
1.4 KiB
TOML

# Director: AI accounts, agent lanes with their terminals, editors and the disk map.
[package]
name = "makepad-director"
version = "2.0.0"
edition = "2021"
default-run = "director"
[lib]
name = "makepad_director"
path = "src/lib.rs"
[[bin]]
name = "director"
path = "src/main.rs"
[[bin]]
name = "director-git-guard"
path = "src/bin/director_git_guard.rs"
test = false
bench = false
[[bin]]
name = "director-rustc-guard"
path = "src/bin/director_rustc_guard.rs"
test = false
bench = false
[[bin]]
name = "director-flow"
path = "src/bin/director_flow.rs"
test = false
bench = false
[dependencies]
makepad-widgets = { path = "../../widgets" }
makepad-diskmap = { path = "../../libs/diskmap" }
makepad-workspace = { path = "../../libs/workspace" }
makepad-terminal = { path = "../terminal" }
makepad-wm-theme = { path = "../../libs/wm_theme" }
makepad-wm-api = { path = "../../libs/wm_api" }
makepad-aichat = { path = "../aichat", default-features = false, features = ["engine"] }
makepad-ai-services = { path = "../../libs/ai/services" }
makepad-strict-json = { path = "../../libs/strict_json" }
makepad-code-editor = { path = "../../code_editor" }
makepad-code-arch = { path = "../../libs/code_arch" }
makepad-git = { path = "../../libs/git" }
[target.'cfg(any(target_os = "macos", target_os = "linux", windows))'.dependencies]
makepad-agents = { path = "../../tools/agents" }
[dev-dependencies]
makepad-draw = { path = "../../draw" }