Genkit MCP

Official
Apache 2.0
197
1,663

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows integration with the filesystem server through MCP, enabling reading files from allowed directories

젠킷 MCP

[!경고]
이 플러그인은 실험적이므로 장기적으로 지원되지 않을 수 있으며 API는 자주 중단되는 변경 사항을 받을 수 있습니다.

이 플러그인은 Genkit과 모델 컨텍스트 프로토콜 (MCP) 간의 통합을 제공합니다. MCP는 개발자가 클라이언트에 도구, 리소스 및 프롬프트를 제공하는 "서버"를 구축할 수 있도록 하는 개방형 표준입니다. Genkit MCP를 통해 Genkit 개발자는 MCP 도구, 프롬프트 및 리소스를 클라이언트로 사용하는 동시에 도구와 프롬프트를 서버로 제공할 수 있습니다.

설치

시작하려면 Genkit과 MCP 플러그인이 필요합니다.

지엑스피1

MCP 클라이언트

MCP 클라이언트를 생성하려면 mcpClient 함수를 호출하여 MCP 서버용 Genkit 플러그인을 생성합니다. 예를 들어, 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 : SSE MCP 전송을 사용하여 연결할 원격 서버의 URL입니다.
    • ** serverWebsocketUrl : WebSocket MCP 전송을 사용하여 연결할 원격 서버의 URL입니다.
    • transport : 서버에 연결하기 위한 기존 MCP 전송 개체입니다.
  • rawToolResponses : (선택 사항) 부울 플래그입니다. true 이면 도구 응답이 원시 MCP 형식으로 반환되고, 그렇지 않으면 Genkit 호환성을 위해 처리됩니다.

MCP 작업 사용

Genkit MCP 클라이언트는 사용 가능한 도구와 프롬프트를 자동으로 검색하고 Genkit에 등록하여 다른 도구와 프롬프트를 사용할 수 있는 모든 곳에서 사용할 수 있도록 합니다. 리소스에 액세스하려면 서버의 리소스에 액세스하는 특수 도구인 list_resourcesread_resource 가 등록됩니다.

모든 MCP 작업은 사용자가 제공한 이름으로 네임스페이스가 지정되므로 filesystem 이라는 클라이언트는 filesystem/read_file 과 같은 도구를 등록합니다.

도구 응답

MCP 도구는 대부분의 Genkit 도구처럼 구조화된 응답이 아닌 content 배열을 반환합니다. 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().optional() }), default: { action: 'clap your hands' }, }, }, `If you're happy and you know it, {{action}}.` ); mcpServer(ai, { name: 'example_server', version: '0.0.1' }).start();

위 코드는 add 라는 도구와 happy 라는 프롬프트를 노출하는 stdio 전송을 사용하여 MCP 서버를 시작합니다. 다른 전송으로 서버를 시작하려면 mcpServer(...).start(otherTransport) 사용합니다.

알려진 제한 사항

  • MCP 프롬프트는 문자열 매개변수만 사용할 수 있으므로 스키마에 대한 입력은 문자열 속성 값만 있는 개체여야 합니다.
  • MCP 프롬프트는 usermodel 메시지만 지원합니다. system 메시지는 지원되지 않습니다.
  • MCP 프롬프트는 메시지 내에서 단일 "유형"만 지원하므로 동일한 메시지에 미디어와 텍스트를 혼합할 수 없습니다.

MCP 서버 테스트

공식 검사기를 사용하여 MCP 서버를 테스트할 수 있습니다. 예를 들어, 서버 코드가 dist/index.js 파일로 컴파일된 경우 다음을 실행할 수 있습니다.

npx @modelcontextprotocol/inspector dist/index.js

검사기를 시작하면 프롬프트와 작업을 나열하고 수동으로 테스트할 수 있습니다.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Genkit 과 Model Context Protocol(MCP) 간의 통합을 제공합니다.

  1. Installation
    1. MCP Client
      1. mcpClient() Options
      2. Using MCP Actions
      3. Tool Responses
    2. MCP Server
      1. Known Limitations
      2. Testing your MCP server
    ID: m6x141u6rd