Skip to main content
Glama

@arizeai/phoenix-mcp

Official
by Arize-ai
playgroundStoreUtils.ts3.57 kB
import { fromOpenAIToolCall, fromOpenAIToolDefinition, toOpenAIToolCall, toOpenAIToolDefinition, } from "@phoenix/schemas"; import { assertUnreachable } from "@phoenix/typeUtils"; import { ChatMessage, Tool } from "./types"; /** * Best effort attempts to convert instance tools to the providers schema * If the tool definition cannot be converted, it will be returned as is * @returns A list of playground {@link Tool|Tools} */ export const convertInstanceToolsToProvider = ({ instanceTools, provider, }: { instanceTools: Tool[]; provider: ModelProvider; }): Tool[] => { return instanceTools.map((tool) => { switch (provider) { case "OPENAI": case "DEEPSEEK": case "XAI": case "OLLAMA": case "AZURE_OPENAI": { const maybeOpenAIToolDefinition = toOpenAIToolDefinition( tool.definition ); return { ...tool, definition: maybeOpenAIToolDefinition ?? tool.definition, }; } case "ANTHROPIC": { const maybeOpenAIToolDefinition = toOpenAIToolDefinition( tool.definition ); const definition = maybeOpenAIToolDefinition ? fromOpenAIToolDefinition({ toolDefinition: maybeOpenAIToolDefinition, targetProvider: provider, }) : tool.definition; return { ...tool, definition, }; } case "AWS": { // Keep AWS tool definitions in OpenAI format // The backend will handle the conversion to AWS format const maybeOpenAIToolDefinition = toOpenAIToolDefinition( tool.definition ); const definition = maybeOpenAIToolDefinition ? fromOpenAIToolDefinition({ toolDefinition: maybeOpenAIToolDefinition, targetProvider: provider, }) : tool.definition; return { ...tool, definition, }; } // TODO(apowell): #5348 Add Google tool definition case "GOOGLE": return tool; default: assertUnreachable(provider); } }); }; /** * Best effort attempts to convert message tool calls to the providers schema * If the tool definition cannot be converted, it will be returned as is * @returns A list of {@link ChatMessage} tool calls */ export const convertMessageToolCallsToProvider = ({ toolCalls, provider, }: { toolCalls: ChatMessage["toolCalls"]; provider: ModelProvider; }): ChatMessage["toolCalls"] => { if (toolCalls == null) { return; } return toolCalls.map((toolCall) => { switch (provider) { case "OPENAI": case "DEEPSEEK": case "XAI": case "OLLAMA": case "AZURE_OPENAI": { return toOpenAIToolCall(toolCall) ?? toolCall; } case "ANTHROPIC": { const maybeOpenAIToolCall = toOpenAIToolCall(toolCall); return maybeOpenAIToolCall != null ? fromOpenAIToolCall({ toolCall: maybeOpenAIToolCall, targetProvider: provider, }) : toolCall; } case "AWS": { const maybeAwsToolCall = toOpenAIToolCall(toolCall); return maybeAwsToolCall != null ? fromOpenAIToolCall({ toolCall: maybeAwsToolCall, targetProvider: provider, }) : toolCall; } // TODO(apowell): #5348 Add Google tool call case "GOOGLE": return toolCall; default: assertUnreachable(provider); } }); };

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/Arize-ai/phoenix'

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