External MCP
Pair another local application with a restricted, user-approved Synara task surface.
External MCP lets another local application—such as Codex, Claude Code, or an MCP-capable desktop client—create and inspect restricted Synara tasks through a user-approved integration.
It is separate from the internal Agent Gateway injected into supported provider sessions already running inside Synara.
Internal gateway or external integration
| Surface | Caller | Authority model |
|---|---|---|
| Agent Gateway | A provider session inside a Synara task | Thread-scoped capabilities and caller-turn authority |
| External MCP | Another paired local application | User-created integration with selected projects, scopes, limits, and revocable credentials |
Use External MCP when work begins outside Synara but should execute through Synara’s durable task and worktree pipeline.
Create the integration
Open Integrations
Start Synara and open Settings → Integrations.
Define access
Name the integration and choose whether it can use every current and future project or only selected projects.
Safe defaults restrict task creation to managed worktrees and approval-required execution. Keep those defaults unless the workflow genuinely requires broader authority.
Review advanced permissions
Local-checkout execution, broader task reads, and full-access execution are independent high-impact scopes. Grant only what the external client needs.
Create and pair
Choose Create integration. For an agentic MCP client, copy the generated setup prompt into that client. For a client that cannot complete the guided prompt, use the copy-ready configuration after completing pairing in Synara.
Verify the connection
The integration moves through waiting, paired, and connected states. The setup flow verifies the connection with synara_overview.
The generated setup is preferred because it uses the exact executable and data directory of the running Synara installation. It does not require you to guess a global Synara command, project ID, model slug, request ID, or credential path.
Pairing lifecycle
If a pairing code expires or the page reloads, use Resume pairing. For an already paired integration, Continue setup restores the generated setup instructions.
A new pairing code does not replace a previously paired credential automatically.
The MCP client configuration contains the local bridge command and integration identifier. It does not contain the raw integration credential.
External tool surface
The advertised tool catalog is filtered by the integration’s granted scopes. It can include:
synara_overview— allowed projects, paths, provider availability, scopes, defaults, limits, activity, and suggested next stepssynara_capabilities— valid provider/model construction and safety limits for an allowed projectsynara_list_allowed_projects— only projects granted to the integrationsynara_create_task— one durable task for one stablerequestIdsynara_wait_for_task— wait for an authorized task without changing itsynara_read_task— read tasks owned by the integration, with broader project reads requiring a separate scope
External MCP intentionally exposes a smaller surface than the internal Agent Gateway.
Create a task safely
Task creation requires an explicit:
projectId- Provider
- Model
- Prompt
- Stable
requestId
Safe defaults are:
- Managed worktree environment
- Approval-required runtime mode
Use synara_overview and synara_capabilities first. Do not guess IDs, model slugs, or option shapes.
A stable request ID makes retry behavior durable:
- Reusing it with the same plan replays the existing result
- Reusing it with a different plan is rejected
- An ambiguous client response should be retried with the same ID after reading current state
Do not generate a new request ID merely because the first response was lost.
Project and task ownership
An integration can create tasks only in projects it is allowed to use.
By default, it reads tasks it created. Reading other tasks in an allowed project requires a separate tasks:read-project permission.
Keep integrations narrow:
- A CI assistant may need one repository
- A personal coding client may need several selected projects
- A general local orchestrator may need all projects, but still should not receive unnecessary full-access or local-checkout authority
Limits and active task slots
Each integration has project, capability, rate, and active-agent-task limits.
An active slot is reserved while task creation is in progress and remains occupied while the owned task’s current turn is pending or running. Idempotent retries of the same request do not consume another slot.
When a limit is reached, inspect active tasks and finish, interrupt, or wait for them. Do not create additional integrations to evade an intentional safety limit.
Security model
External MCP is designed for local use:
- The external endpoint is available only while Synara is loopback-only.
- Configuring published or remote server access disables the external endpoint rather than exposing it remotely.
- Credentials use a fixed external-MCP audience and cannot authenticate browser, WebSocket, internal provider-session, or general server-token paths.
- Credentials are expiring and revocable.
- Synara stores credential hashes in its server database rather than raw server-side credentials.
- The local credential file is stored under the Synara home directory with restrictive POSIX permissions where supported.
- The bridge verifies the running local instance with a fresh challenge before forwarding credentials or pairing codes.
On Windows, the credential remains under the current user profile but does not receive the same POSIX mode guarantee. Protect the Windows account and Synara data directory accordingly.
Audit and privacy
Audit rows can record:
- Integration identity
- Tool name
- Request ID
- Project
- Environment and runtime mode
- Outcome
- Created task IDs
Full prompts are not copied into audit rows or durable recovery plans.
Still treat prompts as sensitive application data. Do not place secrets in them merely because the audit layer omits their full text.
Revocation
Revoke an integration from Settings → Integrations.
Revocation takes effect immediately for new requests and continuing long-running operations. Create and pair a new integration rather than trying to reuse a revoked credential.
Also revoke an integration when:
- The external client or machine is no longer trusted
- Project access should be reduced
- A credential file may have been copied
- The integration was created for a temporary workflow
- You no longer understand why it needs its current scopes
Manual configuration
Use generated setup whenever possible. Manual configuration is appropriate for clients that cannot execute the guided prompt.
A generated bridge command includes:
- The exact runtime executable
- The exact Synara server entry point
mcp serve- The integration identifier
- The actual Synara home directory
ELECTRON_RUN_AS_NODE=1where desktop packaging requires it
Do not copy a configuration from another Synara installation without updating its executable and home directory. The bridge intentionally fails rather than silently connecting to an ambiguous or unsafe instance.
Failure handling
Waiting for pairing never completes
Use Resume pairing, confirm Synara is still running, and restart the guided setup. Do not manually paste raw credentials into the client configuration.
Paired but not connected
The client has a credential but has not successfully called the bridge. Verify the generated command, executable paths, Synara home directory, and local client logs.
The wrong projects appear
Review the integration’s selected projects and scopes. synara_list_allowed_projects should never return projects outside that grant.
Task creation is rejected
Read synara_overview and synara_capabilities. Check project access, provider availability, model selection, active-task limits, and whether the requested environment or runtime mode requires an ungranted scope.
A retry conflicts with the request ID
The new plan differs from the original durable request. Use the original plan or create a new intentional request ID after confirming you want a distinct task.
No instance or multiple instances are found
Close stale Synara instances or use the generated configuration for the intended installation. The bridge will not guess between ambiguous local runtimes.
The credential is revoked or expired
Create and pair a new integration. Do not weaken validation or modify the credential file to bypass lifecycle checks.
External MCP checklist
- The integration has a clear purpose and owner
- Only required projects are allowed
- Managed worktree and approval-required defaults are preserved where possible
- Advanced scopes are individually justified
- Generated setup uses the intended Synara installation
-
synara_overviewverifies the connection - Stable request IDs are reused for retries
- Created tasks and active slots are monitored
- Audit information and prompts are treated appropriately
- Temporary or untrusted integrations are revoked
Pairing another client grants it real ability to create Synara work. Keep project access and execution permissions narrow, and revoke integrations that are no longer needed.