MCP Fusion/Security and governance/Credentials
Credentials
Bring Your Own Credentials : déclarez les champs de secrets dont votre connecteur a besoin et laissez chaque acheteur configurer ses propres clés dans le tableau de bord Vinkius pendant que le runtime les injecte à chaque requête.
Un connecteur qui code en dur la clé d’API d’un fournisseur ne peut servir qu’un seul déploiement. Un connecteur qui déclare ses champs de credentials peut être publié, et chaque acheteur configure ses propres clés. MCP Fusion appelle cela Bring Your Own Credentials, et c’est ce qui rend un connecteur publiable sur le marketplace.
Déclarez les champs
import { defineCredentials } from '@mcpfusion/core';
export const credentials = defineCredentials({
openai_key: {
type: 'api_key',
label: 'OpenAI API key',
required: true,
sensitive: true,
validation: /^sk-/,
},
zendesk_subdomain: {
type: 'uri',
label: 'Zendesk subdomain',
required: true,
sensitive: false,
},
});| Type de champ | À utiliser pour |
|---|---|
api_key | Clés avec un préfixe connu |
token | Jetons opaques comme les PAT |
password | Secrets qui ne doivent jamais être renvoyés |
uri | Endpoints et sous-domaines, non sensibles |
Comment les acheteurs les configurent
L’acheteur ouvre votre connecteur dans la Vinkius console et remplit le formulaire de credentials. Il s’agit du même éditeur que celui documenté dans les docs Cloud sur Credentials : badges obligatoires, stockage chiffré et un verdict de test de connexion. Vous ne voyez jamais leurs valeurs et ils ne voient jamais les vôtres.
Comment le runtime les injecte
Quand votre connecteur s’exécute sur la Vinkius Edge, le runtime injecte les secrets de l’acheteur dans globalThis.__vinkius_secrets à chaque requête, isolés par acheteur. Votre serveur les lit via un seul accessor :
import { requireCredential } from '@mcpfusion/core';
.handle(async (input, ctx) => {
const openai = requireCredential('openai_key');
return callOpenAI(openai, input.prompt);
});Si une credential obligatoire est manquante, une CredentialMissingError typée apparaît avec des indications, au lieu d’un undefined brut au fin fond d’un appel.
Développement local
En local, placez les mêmes clés dans votre environnement. Le framework lit d’abord l’environnement, donc le même serveur tourne sur votre portable et sur l’Edge sans modification de code. Fusion bloque toujours la PII en local par défaut, donc le pare-feu de sortie fonctionne aussi en développement.
Les secrets injectés par le runtime sont propres à chaque requête et à chaque acheteur. Rien de sensible n’est stocké dans votre bundle, et c’est exactement ce qui permet à un seul build de votre connecteur de servir chaque acheteur avec ses propres clés.
Pourquoi c’est important
- Un build, plusieurs acheteurs. Publiez une fois, chaque acheteur apporte ses propres clés fournisseur.
- Vous ne détenez jamais de secrets. Le stockage chiffré et l’injection par requête se font sur la plateforme.
- La rotation est une opération de console. L’acheteur met à jour une clé dans le tableau de bord, votre code ne change jamais.
Prochaines étapes
- Deploy: expédiez le connecteur vers Vinkius Cloud gratuitement
- Tools: lisez les credentials dans les handlers
- Governance: prouvez que la surface est restée sûre d’une release à l’autre
