Token导航 LogoToken导航TokenDH.com
Code Mode (code-mode) logo
AI代理未说明官方级别未说明来源级核验

Code Mode (code-mode)

MCP Server

通过代码执行实现工具调用的首个库,可将AI代理从繁琐的工具调用转变为高效的代码执行。

工具数

0

提示词数

0

GitHub Stars

1,458

资源数

0
AI代理代码执行PythonClaude多协议支持Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

universal-tool-calling-protocol

提供方

universal-tool-calling-protocol

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

🤖 Code-Mode Library: First library for tool calls via code execution

](https://www.npmjs.com/package/@utcp/code-mode)

将您的AI代理从笨重的工具调用者转变为高效的代码执行者——只需3行。

为什么这会改变一切

LLM擅长编写代码,但在工具调用方面遇到了困难。与其直接公开数百个工具,不如给他们一个执行TypeScript代码并访问整个工具包的工具。

苹果, 云耀,以及 人类 与传统的转储函数信息相比,代码模式是一种更有效的工具调用方法,然后提取JSON进行函数调用。

基准测试

独立 Python基准测试研究 通过以下方式验证性能声明 每年节省9536美元的成本 每天1000个场景:

场景复杂性传统代码模式改进
简单(2-3个工具)3次迭代1次执行快67%
中等(4-7工具)8次迭代1次执行速度提高75%
复杂(8+工具)16次迭代1次执行速度提高88%

为什么代码模式占主导地位:

批量优势 -单个代码块替换多个API调用\ 认知效率 -LLM擅长代码生成与工具编排\ 计算效率 -操作之间没有上下文重新处理

入门指南

从三行开始

import { CodeModeUtcpClient } from '@utcp/code-mode';

const client = await CodeModeUtcpClient.create();                    // 1. Initialize
await client.registerManual({ name: 'github', /* MCP config */ });  // 2. Add tools  
const { result } = await client.callToolChain(`/* TypeScript */`);   // 3. Execute code

就是这样。你的AI代理现在可以在一个请求中执行复杂的工作流,而不是几十个。

所得

渐进式工具发现

// Agent discovers tools dynamically, loads only what it needs
const tools = await client.searchTools('github pull request');
// Instead of 500 tool definitions → 3 relevant tools

自然代码执行

const { result, logs } = await client.callToolChain(`
  // Chain multiple operations in one request
  const pr = await github.get_pull_request({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  const comments = await github.get_pull_request_comments({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  const reviews = await github.get_pull_request_reviews({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  
  // Process data efficiently in-sandbox
  return {
    title: pr.title,
    commentCount: comments.length,
    approvals: reviews.filter(r => r.state === 'APPROVED').length
  };
`);
// Single API call replaces 15+ traditional tool calls

自动生成的TypeScript接口

namespace github {
  interface get_pull_requestInput {
    /** Repository owner */
    owner: string;
    /** Repository name */ 
    repo: string;
    /** Pull request number */
    pull_number: number;
  }
}

企业就绪

  • 安全VM沙盒 Node.js隔离防止未经授权的访问
  • 超时保护 –可配置的执行限制可防止代码失控
  • 完全可观测性 –完整的控制台输出捕获和错误处理
  • 零外部依赖 –工具只能通过注册的UTCP/MCP服务器访问
  • 运行时反思 –自适应工作流的动态界面发现

如果你在一家企业工作,需要支持,请预约咨询 这里.

通用协议支持

适用于 任何工具生态系统:

协议描述用法
主控程序模型上下文协议服务器call_template_type: 'mcp'
超文本传输协议具有自动发现功能的REST APIcall_template_type: 'http'\
文件本地JSON/YAML配置call_template_type: 'file'
命令行界面命令行工具执行call_template_type: 'cli'

安装

npm install @utcp/code-mode

更简单:即用型MCP服务器

想要无需任何设置的代码模式吗? 将我们的即插即用MCP服务器与Claude Desktop或任何MCP客户端一起使用:

{
  "mcpServers": {
    "code-mode": {
      "command": "npx",
      "args": ["@utcp/code-mode-mcp"],
      "env": {
        "UTCP_CONFIG_FILE": "/path/to/your/.utcp_config.json"
      }
    }
  }
}

就是这样! 无需安装,不需要Node.js知识。这 代码模式MCP服务器 自动:

  • 通过下载并运行最新版本 npx
  • 从JSON加载工具配置
  • 为Claude Desktop提供代码执行功能
  • 给你 call_tool_chain 作为执行TypeScript的MCP工具

非常适合非开发人员 谁想要克劳德桌面的代码模式功能!

直接使用TypeScript

1. MCP服务器集成

连接到任何模型上下文协议服务器:

call_template_type 是一个单独的插件包。安装并导入 启动时打包一次,这样它就可以在客户端注册自己;插件 注册为导入的副作用。对于 mcp那是 @utcp/mcp. 同样的模式也适用于其他运输方式: @utcp/http, @utcp/text等等。 ``bash npm install @utcp/mcp ``
import '@utcp/mcp';                      // registers the 'mcp' call template
import { CodeModeUtcpClient } from '@utcp/code-mode';

const client = await CodeModeUtcpClient.create();

// Connect to GitHub MCP server
await client.registerManual({
  name: 'github',
  call_template_type: 'mcp',
  config: {
    mcpServers: {
      github: {
        transport: 'stdio',              // required by @utcp/mcp
        command: 'docker',
        args: ['run', '-i', '--rm', '-e', 'GITHUB_PERSONAL_ACCESS_TOKEN', 'mcp/github'],
        env: { GITHUB_PERSONAL_ACCESS_TOKEN: process.env.GITHUB_TOKEN }
      }
    }
  }
});

2. 执行多步骤工作流

用单个代码执行替换15+个工具调用:

const { result, logs } = await client.callToolChain(`
  // Traditional: 4 separate API round trips → Code Mode: 1 execution
  const pr = await github.get_pull_request({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  const comments = await github.get_pull_request_comments({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  const reviews = await github.get_pull_request_reviews({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  const files = await github.get_pull_request_files({ owner: 'microsoft', repo: 'vscode', pull_number: 1234 });
  
  // Process data in-sandbox (no token overhead)
  const summary = {
    title: pr.title,
    state: pr.state,
    author: pr.user.login,
    stats: {
      comments: comments.length,
      reviews: reviews.length, 
      filesChanged: files.length,
      approvals: reviews.filter(r => r.state === 'APPROVED').length
    },
    topDiscussion: comments.slice(0, 3).map(c => ({
      author: c.user.login,
      preview: c.body.substring(0, 100) + '...'
    }))
  };
  
  console.log(\`PR "\${pr.title}" analysis complete\`);
  return summary;
`);

console.log('Analysis Result:', result);
// console output: 'PR "Fix memory leak in hooks" analysis complete'

______________________________________________________________________

高级功能

多协议工具链

在一次执行中混合和匹配不同的工具生态系统:

// Register multiple tool sources
await client.registerManual({ name: 'github', call_template_type: 'mcp', /* config */ });
await client.registerManual({ name: 'slack', call_template_type: 'http', /* config */ });
await client.registerManual({ name: 'db', call_template_type: 'file', file_path: './db-tools.json' }); // This loads a UTCP manual from a json file

const result = await client.callToolChain(`
  // Fetch PR data from GitHub (MCP)
  const pr = await github.get_pull_request({ owner: 'company', repo: 'api', pull_number: 42 });
  
  // Query deployment status from database (File)
  const deployment = await db.get_deployment_status({ pr_id: pr.id });
  
  // Send notification to Slack (HTTP)
  await slack.post_message({
    channel: '#releases',
    text: \`PR #42 "\${pr.title}" deployed to \${deployment.environment}\`
  });
  
  return { pr: pr.title, environment: deployment.environment };
`);

运行时接口反思

工具可以动态发现和适应可用接口:

const result = await client.callToolChain(`
  // Discover available tools at runtime
  console.log('Available interfaces:', __interfaces);
  
  // Get specific tool interface for validation
  const prInterface = __getToolInterface('github.get_pull_request');
  console.log('PR tool expects:', prInterface);
  
  // Use interface info for dynamic workflows
  const hasSlackTools = __interfaces.includes('namespace slack');
  if (hasSlackTools) {
    await slack.post_message({ channel: '#dev', text: 'Analysis complete' });
  }
  
  return { toolsAvailable: hasSlackTools };
`);

上下文高效数据处理

在不增加模型上下文的情况下处理大型数据集:

const result = await client.callToolChain(`
  // Fetch large dataset
  const allIssues = await github.list_repository_issues({ owner: 'facebook', repo: 'react' });
  console.log('Fetched', allIssues.length, 'total issues');
  
  // Process efficiently in-sandbox
  const criticalBugs = allIssues
    .filter(issue => issue.labels.some(l => l.name === 'bug'))
    .filter(issue => issue.labels.some(l => l.name === 'high priority'))
    .map(issue => ({
      number: issue.number,
      title: issue.title,
      author: issue.user.login,
      daysOld: Math.floor((Date.now() - new Date(issue.created_at)) / (1000 * 60 * 60 * 24))
    }))
    .sort((a, b) => b.daysOld - a.daysOld);
  
  // Only return processed summary (not 10,000 raw issues)
  return {
    totalIssues: allIssues.length,
    criticalBugs: criticalBugs.slice(0, 10), // Top 10 oldest critical bugs
    summary: \`Found \${criticalBugs.length} critical bugs, oldest is \${criticalBugs[0]?.daysOld} days old\`
  };
`);

错误处理和可观察性

具有完全透明执行的内置错误处理:

const { result, logs } = await client.callToolChain(`
  try {
    console.log('Starting multi-step workflow...');
    
    const data = await external_api.fetch_data({ id: 'user-123' });
    console.log('Data fetched successfully');
    
    const processed = await data_processor.transform(data);
    console.warn('Processing completed with', processed.warnings.length, 'warnings');
    
    return processed;
  } catch (error) {
    console.error('Workflow failed:', error.message);
    throw error; // Propagates to outer error handling
  }
`, 30000); // 30-second timeout

// Complete observability
console.log('Result:', result);
console.log('Execution logs:', logs);
// ['Starting multi-step workflow...', 'Data fetched successfully', '[WARN] Processing completed with 2 warnings']

自定义超时

为不同的工作负载类型配置执行限制:

// Quick operations (5 seconds)
const quickResult = await client.callToolChain(`return await ping.check();`, 5000);

// Heavy data processing (2 minutes) 
const heavyResult = await client.callToolChain(`
  const bigData = await database.export_full_dataset();
  return await analytics.process_dataset(bigData);
`, 120000);

______________________________________________________________________

AI代理集成

与任何AI框架即插即用。内置的提示模板处理所有复杂性:

import { CodeModeUtcpClient } from '@utcp/code-mode';

const systemPrompt = `
You are an AI assistant with access to tools via UTCP CodeMode.
${CodeModeUtcpClient.AGENT_PROMPT_TEMPLATE}
Additional instructions...
`;

// Works with any AI library
const response = await openai.chat.completions.create({
  model: 'gpt-4',
  messages: [
    { role: 'system', content: systemPrompt },
    { role: 'user', content: 'Analyze the latest PR in microsoft/vscode' }
  ]
});

该模板提供了以下方面的全面指导:

  • 工具发现工作流程(searchTools__interfacescallToolChain)
  • 分层访问模式(manual.tool() 语法)
  • 接口自检(__getToolInterface())
  • 错误处理和最佳实践

______________________________________________________________________

API 参考

核心方法

callToolChain(code: string, timeout?: number)

以完全的工具访问和可观察性执行TypeScript代码。

  • 退货: {result: any, logs: string[]} 带有执行结果和捕获的控制台输出
  • 默认超时:30秒

getAllToolsTypeScriptInterfaces()

为IDE集成生成完整的TypeScript接口。

  • 退货:包含所有命名空间接口定义的字符串

searchTools(query: string) *(来自UtcpClient)*

使用自然语言查询发现工具。

  • 退货:一系列带有描述和界面的相关工具

静态方法

CodeModeUtcpClient.create(root_dir?, config?)

使用可选配置创建新的客户端实例。

CodeModeUtcpClient.AGENT_PROMPT_TEMPLATE

AI代理的生产就绪提示模板。

______________________________________________________________________

安全与性能

设计安全

  • Node.js虚拟机沙盒 –孤立的执行上下文
  • 没有文件系统访问权限 –仅通过注册服务器使用工具
  • 超时保护 –可配置的执行限制
  • 零网络接入 –没有暴露的外部依赖项或API密钥

性能优化

  • 最小内存占用 –VM上下文是轻量级的
  • 高效的工具缓存 –TypeScript接口自动缓存
  • 流媒体控制台输出 –无缓冲的实时日志捕获
  • 标识符净化 –优雅地处理无效的TypeScript标识符

______________________________________________________________________

开发经验

IDE集成

生成TypeScript定义以获得完整的IntelliSense支持:

# Generate tool interfaces  
const interfaces = await client.getAllToolsTypeScriptInterfaces();
await fs.writeFile('generated-tools.d.ts', interfaces);

# Add to tsconfig.json
{
  "compilerOptions": {
    "typeRoots": ["./generated-tools.d.ts"]
  }
}

调试和监控

生产部署的内置可观察性:

const { result, logs } = await client.callToolChain(userCode);

// Ship logs to your monitoring system
logs.forEach(log => {
  if (log.startsWith('[ERROR]')) monitoring.error(log);
  if (log.startsWith('[WARN]')) monitoring.warn(log);
});

______________________________________________________________________

基准方法

全面的Python学习 测试过的 16个现实场景 穿过:

  • 财务工作流程 (发票、费用跟踪)
  • DevOps运营 (部署、监控)
  • 数据处理 (分析、报告)
  • 业务自动化 (CRM、通知)

测试模型: 克劳德·海库,双子座闪电侠\ 定价依据: 0.25美元/百万输入,1.25美元/百万输出代币\ 规模: 1000个场景/天=代码模式每年节省9536美元

了解更多

许可证

MPL-2.0 –具有商业友好条款的开源。

目录标签

目录标签

AI代理代码执行PythonClaude多协议支持本地部署工具调用TypeScript

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP