Aller au contenu principal

Publier un serveur MCP

Cet exemple vous guide dans la configuration d’un MCPServer Mastra de base avec le transport stdio, sa création et sa préparation à la publication sur NPM.

Installer les dépendances
Lien direct vers Installer les dépendances

Installez les packages nécessaires :

npm install @mastra/mcp @mastra/core tsup

Configurer un serveur MCP
Lien direct vers Configurer un serveur MCP

  1. Créez un fichier pour votre serveur stdio, par exemple src/mastra/stdio.ts.

  2. Ajoutez le code suivant au fichier. N’oubliez pas d’importer vos véritables Tools Mastra et de donner un nom approprié au serveur.

    src/mastra/stdio.ts
    #!/usr/bin/env node
    import { MCPServer } from '@mastra/mcp'
    import { weatherTool } from './tools'

    const server = new MCPServer({
    name: 'my-mcp-server',
    version: '1.0.0',
    tools: { weatherTool },
    })

    server.startStdio().catch(error => {
    console.error('Error running MCP server:', error)
    process.exit(1)
    })
  3. Mettez à jour votre package.json pour inclure l’entrée bin qui pointe vers le fichier de serveur créé, ainsi qu’un script qui crée le serveur avec les sorties ESM et CJS.

    package.json
    {
    "bin": "dist/stdio.mjs",
    "scripts": {
    "build:mcp": "tsup src/mastra/stdio.ts --format esm,cjs --no-splitting --dts && echo '#!/usr/bin/env node' | cat - dist/stdio.mjs > temp && mv temp dist/stdio.mjs && chmod +x dist/stdio.mjs"
    }
    }

    La commande de création génère des sorties ESM (.mjs) et CJS (.cjs) pour une compatibilité maximale. Le shebang (#!/usr/bin/env node) est ajouté au début de l’artefact ESM afin de le rendre directement exécutable, et l’entrée bin pointe vers ce fichier.

  4. Exécutez la commande de création :

    npm run build:mcp

    Cette commande compile le code de votre serveur aux formats ESM et CJS, et rend le fichier de sortie ESM exécutable. Sur les systèmes de type Unix, l’étape chmod +x rend le fichier directement exécutable. Les utilisateurs Windows devront peut-être utiliser WSL ou gérer l’exécution directement avec Node.js.

Publier sur NPM
Lien direct vers Publier sur NPM

Pour rendre votre serveur MCP accessible à d’autres personnes, ou à vous-même, via npx ou comme dépendance, vous pouvez le publier sur NPM.

  1. Vérifiez que vous disposez d’un compte NPM et que vous êtes connecté (npm login).

  2. Assurez-vous que le nom de votre package dans package.json est unique et disponible.

  3. Après la création, exécutez la commande de publication depuis la racine de votre projet :

    npm publish --access public

    Pour plus de détails sur la publication de packages, consultez la documentation NPM.

Utiliser un serveur MCP publié
Lien direct vers Utiliser un serveur MCP publié

Une fois publié, votre serveur MCP peut être utilisé par un MCPClient en indiquant la commande qui exécute votre package. Vous pouvez également utiliser tout autre client MCP, tel que Claude Desktop, Cursor ou Windsurf.

import { MCPClient } from '@mastra/mcp'

const mcp = new MCPClient({
servers: {
// Give this MCP server instance a name
yourServerName: {
command: 'npx',
args: ['-y', '@your-org-name/your-package-name@latest'], // Replace with your package name
},
},
})

// You can then get tools or toolsets from this configuration to use in your agent
const tools = await mcp.listTools()
const toolsets = await mcp.listToolsets()

Remarque : si vous avez publié sans scope d’organisation, args peut être égal à ["-y", "your-package-name@latest"].