Download src/tools/MCPTool/MCPTool.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 2.17 kB
-
https://huggingface.co/chenbhao/codev/resolve/e91c8197c9918ff9e5df3140e8c36282bb30e9a2/src/tools/MCPTool/MCPTool.ts
- Command line
-
hf download hf://chenbhao/codev@e91c8197c9918ff9e5df3140e8c36282bb30e9a2/src/tools/MCPTool/MCPTool.ts
-
curl -L -o MCPTool.ts https://huggingface.co/chenbhao/codev/resolve/e91c8197c9918ff9e5df3140e8c36282bb30e9a2/src/tools/MCPTool/MCPTool.ts
2.17 kB
| import { z } from 'zod/v4' | |
| import { buildTool, type ToolDef } from '../../Tool.js' | |
| import { lazySchema } from '../../utils/lazySchema.js' | |
| import type { PermissionResult } from '../../utils/permissions/PermissionResult.js' | |
| import { isOutputLineTruncated } from '../../utils/terminal.js' | |
| import { DESCRIPTION, PROMPT } from './prompt.js' | |
| import { | |
| renderToolResultMessage, | |
| renderToolUseMessage, | |
| renderToolUseProgressMessage, | |
| } from './UI.js' | |
| // Allow any input object since MCP tools define their own schemas | |
| export const inputSchema = lazySchema(() => z.object({}).passthrough()) | |
| type InputSchema = ReturnType<typeof inputSchema> | |
| export const outputSchema = lazySchema(() => | |
| z.string().describe('MCP tool execution result'), | |
| ) | |
| type OutputSchema = ReturnType<typeof outputSchema> | |
| export type Output = z.infer<OutputSchema> | |
| // Re-export MCPProgress from centralized types to break import cycles | |
| export type { MCPProgress } from '../../types/tools.js' | |
| export const MCPTool = buildTool({ | |
| isMcp: true, | |
| // Overridden in mcpClient.ts with the real MCP tool name + args | |
| isOpenWorld() { | |
| return false | |
| }, | |
| // Overridden in mcpClient.ts | |
| name: 'mcp', | |
| maxResultSizeChars: 100_000, | |
| // Overridden in mcpClient.ts | |
| async description() { | |
| return DESCRIPTION | |
| }, | |
| // Overridden in mcpClient.ts | |
| async prompt() { | |
| return PROMPT | |
| }, | |
| get inputSchema(): InputSchema { | |
| return inputSchema() | |
| }, | |
| get outputSchema(): OutputSchema { | |
| return outputSchema() | |
| }, | |
| // Overridden in mcpClient.ts | |
| async call() { | |
| return { | |
| data: '', | |
| } | |
| }, | |
| async checkPermissions(): Promise<PermissionResult> { | |
| return { | |
| behavior: 'passthrough', | |
| message: 'MCPTool requires permission.', | |
| } | |
| }, | |
| renderToolUseMessage, | |
| // Overridden in mcpClient.ts | |
| userFacingName: () => 'mcp', | |
| renderToolUseProgressMessage, | |
| renderToolResultMessage, | |
| isResultTruncated(output: Output): boolean { | |
| return isOutputLineTruncated(output) | |
| }, | |
| mapToolResultToToolResultBlockParam(content, toolUseID) { | |
| return { | |
| tool_use_id: toolUseID, | |
| type: 'tool_result', | |
| content, | |
| } | |
| }, | |
| } satisfies ToolDef<InputSchema, Output>) | |