Skip to main content
Glama

Genkit MCP

Official
by firebase
action.ts2.96 kB
/** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { logger } from 'genkit/logging'; import { toDisplayPath } from 'genkit/tracing'; import { type Telemetry } from '../metrics.js'; import { createCommonLogAttributes, extractOuterFeatureNameFromPath, truncate, truncatePath, } from '../utils.js'; class ActionTelemetry implements Telemetry { tick( span: ReadableSpan, logInputAndOutput: boolean, projectId?: string ): void { if (!logInputAndOutput) { return; } const attributes = span.attributes; const actionName = (attributes['genkit:name'] as string) || '<unknown>'; const subtype = attributes['genkit:metadata:subtype'] as string; if (subtype === 'tool' || actionName === 'generate') { const path = (attributes['genkit:path'] as string) || '<unknown>'; const input = truncate(attributes['genkit:input'] as string); const output = truncate(attributes['genkit:output'] as string); const sessionId = attributes['genkit:sessionId'] as string; const threadName = attributes['genkit:threadName'] as string; let featureName = extractOuterFeatureNameFromPath(path); if (!featureName || featureName === '<unknown>') { featureName = actionName; } if (input) { this.writeLog( span, 'Input', featureName, path, input, projectId, sessionId, threadName ); } if (output) { this.writeLog( span, 'Output', featureName, path, output, projectId, sessionId, threadName ); } } } private writeLog( span: ReadableSpan, tag: string, featureName: string, qualifiedPath: string, content: string, projectId?: string, sessionId?: string, threadName?: string ) { const path = truncatePath(toDisplayPath(qualifiedPath)); const sharedMetadata = { ...createCommonLogAttributes(span, projectId), path, qualifiedPath, featureName, sessionId, threadName, }; logger.logStructured(`${tag}[${path}, ${featureName}]`, { ...sharedMetadata, content, }); } } const actionTelemetry = new ActionTelemetry(); export { actionTelemetry };

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