Skip to main content
Glama
firebase
by firebase

Генкит MCP

[!ПРЕДУПРЕЖДЕНИЕ]
Этот плагин является экспериментальным, то есть он не будет поддерживаться в долгосрочной перспективе, а API-интерфейсы подвержены более частым критическим изменениям.

Этот плагин обеспечивает интеграцию между Genkit и Model Context Protocol (MCP). MCP — это открытый стандарт, позволяющий разработчикам создавать «серверы», которые предоставляют инструменты, ресурсы и подсказки клиентам. Genkit MCP позволяет разработчикам Genkit как использовать инструменты, подсказки и ресурсы MCP в качестве клиента, так и предоставлять инструменты и подсказки в качестве сервера.

Установка

Для начала вам понадобится Genkit и плагин MCP:

npm i genkit genkitx-mcp

Related MCP server: Github MCP Server

Клиент МСР

Чтобы создать MCP-клиент, вы вызываете функцию mcpClient для генерации плагина Genkit для MCP-сервера. Например, чтобы использовать пример сервера файловой системы MCP:

import { genkit } from 'genkit'; import { mcpClient } from 'genkitx-mcp'; // the filesystem server requires one or more allowed directories const ALLOWED_DIRS = ['/Users/yourusername/Desktop']; const filesystemClient = mcpClient({ name: 'filesystem', serverProcess: { command: 'npx', args: ['-y', '@modelcontextprotocol/server-everything', ...ALLOWED_DIRS], }, }); const ai = genkit({ plugins: [ filesystemClient /* ... other plugins such as model providers ...*/, ], });

Большинство серверов MCP созданы для запуска в качестве порожденных процессов на той же машине с использованием транспорта stdio . Когда вы указываете опцию serverProcess , вы указываете команду, аргументы и переменные среды для порождения сервера как подпроцесса.

Параметры mcpClient()

  • name : (обязательно) Имя этого клиента, которое определяет пространство имен его инструментов и подсказок.

  • version : (необязательно) Номер версии клиента. По умолчанию "1.0.0".

  • Вам необходимо предоставить один из следующих документов:

    • serverProcess : Параметры для запуска локального серверного процесса с использованием транспорта stdio MCP.

      • command : Путь к команде оболочки для запуска сервера MCP. Может быть, например, npx или uvx для загрузки и запуска сервера из менеджера пакетов.

      • args : (необязательно) Массив строковых аргументов для передачи команде.

      • env : (необязательно) объект значения ключа переменных среды для передачи команде.

    • serverUrl : URL-адрес удаленного сервера для подключения с использованием транспорта SSE MCP.

    • ** serverWebsocketUrl : URL-адрес удаленного сервера для подключения с использованием транспорта WebSocket MCP.

    • transport : существующий объект транспорта MCP для подключения к серверу.

  • rawToolResponses : (необязательно) Логический флаг. Если true , ответы инструмента возвращаются в необработанном формате MCP; в противном случае они обрабатываются для совместимости с Genkit.

Использование действий MCP

Клиент Genkit MCP автоматически обнаруживает доступные инструменты и подсказки и регистрирует их в Genkit, делая их доступными везде, где могут использоваться другие инструменты и подсказки. Для доступа к ресурсам регистрируются специальные инструменты list_resources и read_resource , которые будут получать доступ к ресурсам сервера.

Все действия MCP размещаются в пространстве имен под указанным вами именем, поэтому клиент с именем filesystem будет регистрировать такие инструменты, как filesystem/read_file .

Ответы инструментов

Инструменты MCP возвращают массив content , а не структурированный ответ, как большинство инструментов Genkit. Плагин Genkit MCP пытается проанализировать и привести возвращенный контент к следующему виду:

  1. Если содержимое представляет собой текст и допустимый JSON, JSON анализируется и возвращается.

  2. Если содержимое представляет собой текст, а не допустимый JSON, возвращается текст.

  3. Если содержимое содержит одну нетекстовую часть, она возвращается.

  4. Если содержимое состоит из нескольких/смешанных частей, возвращается полный ответ содержимого.

MCP-сервер

Вы также можете предоставить доступ ко всем инструментам и подсказкам из экземпляра Genkit как к серверу MCP:

import { genkit, z } from 'genkit'; import { mcpServer } from 'genkitx-mcp'; const ai = genkit({}); ai.defineTool( { name: 'add', description: 'add two numbers together', inputSchema: z.object({ a: z.number(), b: z.number() }), outputSchema: z.number(), }, async ({ a, b }) => { return a + b; } ); ai.definePrompt( { name: "happy", description: "everybody together now", input: { schema: z.object({ action: z.string().default("clap your hands").optional(), }), }, }, `If you're happy and you know it, {{action}}.` ); mcpServer(ai, { name: 'example_server', version: '0.0.1' }).start();

Вышеприведенный код запустит сервер MCP с транспортом stdio, который предоставляет инструмент add и приглашение happy . Чтобы запустить сервер с другим транспортом, используйте mcpServer(...).start(otherTransport) .

Известные ограничения

  • Приглашения MCP могут принимать только строковые параметры, поэтому входные данные для схем должны быть объектами, имеющими только строковые значения свойств.

  • Подсказки MCP поддерживают только сообщения user и model . system сообщения не поддерживаются.

  • Подсказки MCP поддерживают только один «тип» в сообщении, поэтому вы не можете смешивать медиа и текст в одном сообщении.

Тестирование вашего MCP-сервера

Вы можете протестировать свой сервер MCP с помощью официального инспектора. Например, если ваш код сервера скомпилирован в dist/index.js , вы можете запустить:

npx @modelcontextprotocol/inspector dist/index.js

После запуска инспектора вы можете составить список подсказок и действий и протестировать их вручную.

One-click Deploy
A
security – no known vulnerabilities
-
license - not tested
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/firebase/genkit'

If you have feedback or need assistance with the MCP directory API, please join our Discord server