---
title: "Référence d'API — @nodefony/devkit"
source: docs/api/devkit.md
url: https://nodefony.github.io/nodefony-core/docs/api/devkit/
---


[Documentation](../../) › [Référence d'API](../) › `@nodefony/devkit`

> Générée depuis les déclarations de types publiées de `@nodefony/devkit` **10.0.0-beta.5** : exactement ce que reçoit une application qui l'installe. Cette page n'existe dans aucun dépôt — pour la corriger, on corrige le TSDoc du code.

## `@nodefony/devkit`

`import { … } from "@nodefony/devkit"` — 21 symboles.

### Classes (5)

#### `DevkitController`

```ts
class DevkitController extends Controller
```

La carte de visite de l'application, servie en HTTP.

- `constructor(context: ContextType)`
- `card(): Promise<import("@nodefony/http").Http2Response | import("@nodefony/http").HttpResponse | import("@nodefony/http").WebsocketResponse>` — `GET /nodefony/devkit/api/card` — qui répond, et où aller ensuite.

#### `DevkitService`

```ts
class DevkitService extends Service implements IDevkitService
```

Service principal du module — la logique vit ici, pas dans les controllers (un controller traduit du HTTP/WS ; un service, lui, est réutilisable par la CLI, un job, un autre module).

- `module: Module`
- `constructor(module: Module)`
- `init(): Promise<this>` — Hook de démarrage d'un service : appelé UNE fois par le kernel, après la construction.
- `getCard(): IDevkitCard` — Carte de visite de l'application — recalculée à CHAQUE lecture.
- `mcpSettings(): IDevkitConfig["mcp"]` — Réglages du serveur MCP, tels que l'application les a effectivement.
- `mcpToolDeps(): IMcpToolDeps` — Ce dont les outils MCP intégrés ont besoin pour répondre.
- `mcpTools(): IMcpTool[]` — Les outils `nodefony_*` retenus par l'allowlist `mcp.tools`.
- `declaredMcpScopes(): readonly string[]` — Les scopes que la porte MCP EXIGE — dérivés des outils qu'elle déclare.
- `publishedProtectedResources(): readonly IProtectedResourceInput[]` — Ce que ce module protège, à publier en RFC 9728 — la porte MCP, ou rien.
- `mcpGate(): IMcpGate` — La porte MCP de développement — définie au premier usage, une fois.
- `profileSessionGate(): ITicketSessionGate` — La porte de session du profilage — définie au premier usage, une fois.
- `status(): { ready: boolean; }` — Snapshot de lecture — état courant du service.

#### `McpController`

```ts
class McpController extends Controller
```

Porte **Model Context Protocol** de DÉVELOPPEMENT — celle par laquelle l'agent de code du développeur interroge l'application.

- `constructor(context: ContextType)`
- `mcp(body: unknown): Promise<unknown>` — `/nodefony/mcp` — `POST` sert un message JSON-RPC ; `GET` et `DELETE` rendent `405` + `Allow: POST` (verbes retirés par la révision `2026-07-28`).

#### `ProfileSessionController`

```ts
class ProfileSessionController extends Controller
```

Ouvre la session au nom de laquelle `nodefony_profile_route` tire ses requêtes.

- `constructor(context: ContextType)`
- `profileSession(): Promise<unknown>` — `POST /nodefony/devkit/profile-session` — rachète le ticket et ouvre la session.

#### `default`

```ts
class DevkitModule extends Module
```

- `constructor(kernel: Kernel)`
- `onKernelRegister(): Promise<this>` — Valide la config au boot — défauts du schéma fusionnés avec ce que l'app passe dans `use()`.
- `getMcpTools(): IMcpTool[]` — Déclare les outils `nodefony_*` — comme n'importe quel module.

### Fonctions (4)

#### `buildCard`

```ts
function buildCard(input: ICardInput): ICard
```

Construit la carte de visite d'une application à partir de son état.

#### `builtinMcpTools`

```ts
function builtinMcpTools(deps: IMcpToolDeps): Record<BuiltinMcpToolKey, IMcpTool>
```

Catalogue intégré du framework, indexé par clé d'allowlist.

#### `defineDevkitConfig`

```ts
function defineDevkitConfig(config?: IDevkitConfigInput): IDevkitConfig
```

#### `selectBuiltinMcpTools`

```ts
function selectBuiltinMcpTools(allowlist: readonly string[], deps: IMcpToolDeps): IMcpTool[]
```

Les outils du catalogue que l'allowlist de configuration retient.

### Constantes (2)

#### `BUILTIN_MCP_TOOL_KEYS`

```ts
const BUILTIN_MCP_TOOL_KEYS: readonly [ "inspect", "card", "check", "symbols", "docs", "admin_list", "admin_call", "observe", "profile_route" ]
```

Clés des outils intégrés — ce que l'allowlist de configuration nomme.

#### `devkitConfigSchema`

```ts
const devkitConfigSchema: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; mcp: z.ZodDefault<z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; allowedOrigins: z.ZodDefault<z.ZodArray<z.ZodString>>; allowRemote: z.ZodDefault<z.ZodBoolean>; authorization: z.ZodDefault<z.ZodObject<{ authorizationServers: z.ZodDefault<z.ZodArray<z.ZodString>>; resource: z.ZodDefault<z.ZodString>; additionalResource …
```

### Interfaces (2)

#### `IDevkitService`

```ts
interface IDevkitService
```

API publique de `DevkitService` (injectable, nom `devkit`).

- `status(): { ready: boolean; }` — Snapshot de lecture — état courant du service.
- `getCard(): IDevkitCard` — Carte de visite de l'application, DÉRIVÉE de l'état du Kernel.
- `mcpSettings(): IDevkitConfig["mcp"]` — Réglages effectifs du serveur MCP (défauts du schéma + surcharges de l'app).
- `mcpToolDeps(): IMcpToolDeps` — Ce dont les outils MCP intégrés ont besoin pour répondre.
- `mcpTools(): IMcpTool[]` — Les outils `nodefony_*` que l'allowlist `mcp.tools` retient — ceux que le module déclare par `getMcpTools()`.
- `declaredMcpScopes(): readonly string[]` — Les scopes que la porte MCP EXIGE, dérivés des outils déclarés.
- `mcpGate(): IMcpGate` — La porte MCP de développement (`POST /nodefony/mcp`), bâtie sur `defineMcpGate` à partir de `devkit.mcp.*` — définie une fois, au premier usage.
- `profileSessionGate(): ITicketSessionGate` — La porte de session du profilage (`POST /nodefony/devkit/profile-session`), bâtie sur `defineTicketSessionGate` — définie une fois, au premier usage.

#### `IMcpToolDeps`

```ts
interface IMcpToolDeps
```

Ce dont les outils INTÉGRÉS ont besoin — injecté, jamais lu ici.

- `broker: IAdminBrokerLike` — Le service `adminBroker` du conteneur, ou `undefined` s'il manque.
- `getCard: () => unknown` — Compose la carte de visite de l'application.
- `projectRoot: string` — Racine depuis laquelle lire le disque (graphe symbolique, diagnostic).
- `getProfiler: () => IProfilerReader` — Le profileur de développement (`"profiler"` du conteneur), ou `undefined` hors développement : `nodefony_observe` le dit au lieu de planter.
- `servesTraffic?: () => boolean` — Ce process sert-il des requêtes ?
- `onShutdown?: ((listener: () => Promise<void>) => () => void)` — S'abonne à l'arrêt du serveur pour la durée d'un appel (rapport partiel de `nodefony_observe`) ; absent hors application.
- `profileRoute?: Pick<IProfileRouteDeps, "getTarget" | "issueTicket" | "closeSession" | "rolesWithin">` — Ce que `nodefony_profile_route` demande à l'application : son adresse d'écoute, l'ouverture et la fermeture de la session de profilage, la comparaison des rôles de deux comptes.

### Types (8)

#### `BuiltinMcpToolKey`

```ts
type BuiltinMcpToolKey = (typeof BUILTIN_MCP_TOOL_KEYS)[number]
```

Clé d'un outil intégré.

#### `IDevkitAppInfo`

```ts
type IDevkitAppInfo = ICardAppInfo
```

Identité de l'application qui répond.

#### `IDevkitCard`

```ts
type IDevkitCard = ICard
```

Le contrat de la carte est celui du CŒUR — ces noms n'en sont que les alias, conservés parce qu'ils forment la surface publique de ce module.

#### `IDevkitCardInput`

```ts
type IDevkitCardInput = ICardInput
```

L'état minimal dont la carte se dérive — injecté, jamais lu.

#### `IDevkitConfig`

```ts
type IDevkitConfig = z.output<typeof devkitConfigSchema>
```

Config telle que le CODE la lit — défauts appliqués, rien d'optionnel.

#### `IDevkitConfigInput`

```ts
type IDevkitConfigInput = z.input<typeof devkitConfigSchema>
```

Config telle que l'APP l'écrit dans `use()` — tous les champs optionnels.

#### `IDevkitDoor`

```ts
type IDevkitDoor = ICardDoor
```

Une PORTE : un endroit où aller chercher la suite.

#### `IDevkitVerb`

```ts
type IDevkitVerb = ICardVerb
```

Un VERBE : une commande à lancer (toujours préfixée `npx`).

---

[← Toutes les références d'API](../)
