The generated
specification upstream requires outbound network access. For a self-contained local-tool example, use Team-governed proxy.Choose a Setup Path
Setup with an agent
Install the Fentaris agent skills when you want an agent to ask setup questions, choose the project shape, configure upstream MCP servers, and run validation.
Setup with the CLI
Install
@fentaris/cli when you want generated files, fentaris.json, package scripts, and a local proxy running at the default endpoint.Manual setup
Install
@fentaris/core directly when you already have a TypeScript project or want full control over the proxy declaration.CLI Setup
Install the CLI and generate a project:local is the default boilerplate. Choose the small team-ready variant when you want API-key identity and a fail-closed tool allow-list:
src/index.ts; importing it for fentaris mcp tools does not start the proxy. The team README explains how to create its client API key manually with fentaris auth keys create.
For automation, pass the project name and scaffold choices explicitly:
--skip-install, the package manager passed to --package-manager must be installed and available on PATH.
The proxy listens on http://localhost:4000/mcp by default. Generated projects read port and path from fentaris.json, so fentaris dev and app.start() stay aligned without hardcoding the endpoint in src/index.ts.
The generated app explicitly allows all upstream operations and does not configure authentication. Replace the development policy with API-key auth and an allow-list policy before exposing the proxy outside your machine.
Generated Project
fentaris init creates these files:
src/index.tswith inspectable proxy configuration and guarded startup.fentaris.jsonfor CLI project discovery and runtimeport/pathdefaults..gitignore, TypeScript config, and package scripts.
dev watcher and start scripts load an optional project .env. The file is ignored by Git. Project vaults use macOS Keychain or an explicitly configured FENTARIS_VAULT_KEY/credential-store adapter. Fentaris never generates an unlock key into .env; environment-only bindings do not require a vault key.
The generated package.json pins @fentaris/core to a caret range that matches the CLI release (currently ^3.0.0). This makes local SDK/CLI integration tests deterministic — the app installs the same core the CLI was validated against instead of whatever happens to be latest on npm.
fentaris init initializes a git repository when git is available. Pass --skip-git to create only the project files.Local development against the monorepo
If you are working inside the Fentaris repository and want a generated project to import the local@fentaris/core instead of the pinned range, pass a workspace or file reference to --core-version:
Connect a Client
Point your MCP client to the endpoint printed byfentaris dev, usually:
fentaris dev running. In a second terminal, initialize the MCP session and save the response headers:
mcp-session-id header from the initialize response:
mcp-session-id header:
Call the First Tool
Call one tool returned bytools/list on the same session:
specification__search is absent, verify outbound access to the generated upstream and rerun tools/list.
For client-specific JSON snippets, see Client Configs.
Replace the Development Policy
The generatedPolicy.allowAll() is only for the first local run. Replace the import and fentaris(...) declaration in src/index.ts with an explicit allow-list before sharing the proxy:
app.mcp("specification", ...) block, restart fentaris dev, and initialize a new MCP session. tools/list should now expose only specification__search; a direct call to another specification__* tool should return not-permitted.
Add a Local Edge Device
Enable the disabled-by-defaultedge.controlPlane block in fentaris.json, set publicOrigin to http://127.0.0.1:4000, and restart the app. In one terminal join the device:
Validate the Project
Run the local checks before connecting a client:fentaris dev still running, verify the full runtime from the second terminal: