返回市场
MCP代码服务器

MCP代码服务器

作者:zbowling8 星标更新:2025-10-13

项目介绍

mcpcodeserver

NPM 版本 MIT 许可证 安装 MCP 服务器 在 VS Code 中安装 (npx)

一个模型上下文协议 (MCP) 代理服务器,将工具调用转换为 TypeScript 代码生成。LLM 可以编写 TypeScript 代码来自然地调用多个工具,从而减少令牌开销并利用 LLM 的强大代码生成能力。

❌ 没有 mcpcodeserver

LLM 进行多次顺序工具调用,消耗令牌并且难以处理复杂的工作流:

  • ❌ LLM 和工具之间多次往返
  • ❌ 复杂的工具调用序列容易出错
  • ❌ 数据难以在工具之间传递
  • ❌ 错误处理和控制流程有限

✅ 使用 mcpcodeserver

LLM 编写 TypeScript 代码来自然地调用多个工具:

  • ✅ 编写代码按顺序调用多个工具
  • ✅ 自然地使用变量、循环和条件语句
  • ✅ 使用 try/catch 进行更好的错误处理
  • ✅ 通过组合操作减少令牌使用
  • ✅ 利用 LLM 强大的代码生成能力

快速开始

  1. 在您的 MCP 客户端中安装 mcpcodeserver(参见下面的安装部分)
  2. 创建一个带有子 MCP 服务器的 mcp.json 配置文件
  3. 开始使用它——您的 LLM 现在可以生成并执行调用您工具的 TypeScript 代码
// 代替多次工具调用,编写如下代码:
const files = await filesystem.list_directory({ path: "/tmp" });
const results = await Promise.all(
  files.map(file => filesystem.read_file({ path: file.path }))
);
return results.filter(content => content.includes("important"));

概览

mcpcodeserver 是一个独特的 MCP 服务器,它:

  • 作为 MCP 客户端连接到一个或多个子 MCP 服务器
  • 发现所有来自子服务器的工具
  • 向父 LLM 客户端暴露三个强大的工具:
    1. list_servers - 列出连接到此 MCP 服务器的所有可用子服务器
    2. get_tool_definitions - 返回发现工具的 TypeScript 类型定义(可选按服务器过滤)
    3. generate_and_execute_code - 在沙箱中生成并执行调用这些工具的 TypeScript 代码

这种架构允许 LLM 通过编写代码而不是进行顺序工具调用来编排复杂的多工具工作流,这通常对现代语言模型来说更高效且自然。

相关研究与工作

这种方法受到最近研究的启发,表明当生成可执行代码时,LLM 的表现优于直接进行工具调用:

  • CodeAct:当生成代码时,LLM 代理表现更好 (Apple, ICML 2024) - 表明当使用统一的行动空间(即可执行的 Python 代码)而不是预定义的工具调用格式时,LLM 代理的成功率提高了高达 20%。
  • Cloudflare Code Mode - 一个类似的实现,将 MCP 工具转换为 TypeScript API,表明“LLM 更擅长编写调用 MCP 的代码,而不是直接调用 MCP”。

这项研究的关键见解是,LLM 对真实世界的代码进行了广泛的训练,但对合成工具调用格式的接触有限,因此代码生成对于复杂的代理工作流来说是一种更自然和有效的方法。

为什么使用这个?

传统工具调用问题

  • LLM 和工具之间的多次往返会消耗令牌
  • LLM 经常难以处理复杂的工具调用序列
  • 每次工具调用都需要理解并格式化 JSON 模式
  • 数据难以在不经过 LLM 的情况下在工具之间传递

代码生成解决方案

  • 编写 TypeScript 代码按顺序调用多个工具
  • 自然地使用变量、循环和条件语句
  • 使用 try/catch 进行更好的错误处理
  • 通过组合操作减少令牌使用
  • 利用 LLM 强大的代码生成能力

动态工具发现

mcpcodeserver 自动监控子 MCP 服务器中的工具变化,并在添加、删除或修改工具时通知父客户端:

  • 自动刷新:每 30 秒检查一次工具变化
  • 实时通知:向父客户端发送 notifications/tools/list_changed
  • 动态更新:工具定义和摘要自动更新
  • 无需手动刷新:父 LLM 接收到刷新其工具知识的通知

这确保了父 LLM 始终拥有最新的工具定义,而无需手动干预。

服务器过滤

为了减少上下文窗口的使用并提高专注度,mcpcodeserver 支持按特定服务器过滤工具定义:

  • 列出可用服务器:使用 list_servers 查看所有已连接的子服务器
  • 过滤工具定义:使用 get_tool_definitions 并带 server_names 参数获取特定服务器的工具
  • 减少冗余:获取专注于 TypeScript 定义,而不使 LLM 的上下文窗口过载
  • 方法命名空间:所有生成的函数都以前缀服务器名称(例如,pizzashop_create_pizzafilesystem_read_file

示例用法:

// 列出可用服务器
const servers = await list_servers({});
// 返回:["pizzashop", "filesystem", "memory"]

// 获取所有工具定义
const allTools = await get_tool_definitions({});

// 获取仅 pizzashop 工具
const pizzashopTools = await get_tool_definitions({
  server_names: ["pizzashop"]
});

高级 MCP 功能

mcpcodeserver 支持在父服务器和子服务器都支持的情况下传递高级 MCP 协议功能:

  • 引诱:子服务器可以在工具执行期间请求用户输入,这些输入会被传递给父客户端
  • 根目录:列出并聚合所有子服务器的根目录,提供可用资源的统一视图
  • 采样:启用 LLM 采样请求传递给子服务器以实现高级 AI 能力

这些功能会自动向父客户端宣传,并在底层子 MCP 服务器支持时无缝工作。

快速开始

立即使用 npx(无需安装):

# 从 GitHub
npx github:zbowling/mcpcodeserver --help

# 或者发布到 npm
npx mcpcodeserver --help

🛠️ 安装

要求

  • Node.js >= v18.0.0
  • Cursor, Claude Code, VSCode, Windsurf 或其他 MCP 客户端

通过 Smithery 安装

要通过 Smithery 自动安装 mcpcodeserver:

npx -y @smithery/cli@latest install mcpcodeserver --client <client-name> --key <smithery-key>

在 Cursor 中安装

前往:设置 -> Cursor 设置 -> MCP -> 添加新的全局 MCP 服务器

推荐的方法是在您的 Cursor ~/.cursor/mcp.json 文件中粘贴以下配置。您也可以通过在项目文件夹中创建 .cursor/mcp.json 来在特定项目中安装。

Cursor 一键安装

安装 MCP 服务器

Cursor 本地服务器连接

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Cursor 远程服务器连接(如果您设置了 HTTP 传输)

{
  "mcpServers": {
    "mcpcodeserver": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

在 Claude Code 中安装

运行此命令。更多信息请参阅 Claude Code MCP 文档

Claude Code 本地服务器连接

claude mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json

Claude Code 远程服务器连接

claude mcp add --transport http mcpcodeserver http://localhost:3000/mcp

在 VSCode 中安装

VSCode 一键安装

在 VS Code 中安装 (npx)

VSCode 手动配置

添加到您的 VSCode MCP 设置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在 Windsurf 中安装

Windsurf 一键安装

在 Windsurf 中安装

在 AI 编码助手中安装

对于 ContinueCline,和 RooCode,添加到您的配置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在 Amp 中安装

在您的终端中运行此命令。更多信息请参阅 Amp MCP 文档

amp mcp add mcpcodeserver -- npx -y mcpcodeserver --config /path/to/your/mcp.json

在文本编辑器中安装

对于 AiderCodiumZedNova,和 Sublime Text,添加到您的配置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在 Neovim 中安装

添加到您的 Neovim MCP 配置:

{
  mcpServers = {
    mcpcodeserver = {
      command = "npx",
      args = {"-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"}
    }
  }
}

在 Emacs 中安装

添加到您的 Emacs MCP 配置:

(setq mcp-servers
      '((mcpcodeserver
         :command "npx"
         :args ("-y" "mcpcodeserver" "--config" "/path/to/your/mcp.json"))))

在 JetBrains IDE 中安装

对于 IntelliJ IDEAWebStormPyCharm,和 Android Studio,添加到您的 MCP 设置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在 AI 工具中安装

对于 CodeiumTabnineGitHub Copilot,和 Amazon CodeWhisperer,添加到您的 MCP 设置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在云 IDE 中安装

对于 ReplitCodeSandboxStackBlitzGitPodGitHub CodespacesGitLab Web IDE,和 Bitbucket Cloud,添加到您的 MCP 设置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在其他工具中安装

对于 XcodeFleetSourcegraph,和 JetBrains Gateway,添加到您的 MCP 配置:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

在远程开发中安装

对于远程开发环境,您可以使用 HTTP 传输:

{
  "mcpServers": {
    "mcpcodeserver": {
      "url": "http://your-server:3000/mcp"
    }
  }
}

配置文件

创建一个 mcp.json 配置文件来定义您的子 MCP 服务器:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "env": { "DEBUG": "false" }
    },
    "memory": {
      "command": "npx", 
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server