mcpcodeserver MCP Server

официальный

Вместо прямого вызова инструментов MCP сервер mcpcodeserver преобразует вызовы инструментов MCP в программы на TypeScript, обеспечивая более интеллектуальную оркестрацию с низкой задержкой со стороны LLM.

Документация

mcpcodeserver

NPM Version MIT licensed Install MCP Server Install in VS Code (npx)

Прокси-сервер Model Context Protocol (MCP), который преобразует вызовы инструментов в генерацию кода TypeScript. Вместо множественных обращений к инструментам туда и обратно, LLM могут писать код TypeScript, естественным образом вызывающий несколько инструментов, что снижает накладные расходы на токены и использует превосходные способности LLM к генерации кода.

❌ Без mcpcodeserver

LLM выполняют множественные последовательные вызовы инструментов, расходуя токены и испытывая трудности со сложными рабочими процессами:

  • ❌ Множественные циклы обмена между LLM и инструментами
  • ❌ Сложные последовательности вызовов инструментов подвержены ошибкам
  • ❌ Данные не могут легко передаваться между инструментами
  • ❌ Ограниченная обработка ошибок и управление потоком выполнения

✅ С mcpcodeserver

LLM пишут код TypeScript, который естественным образом вызывает несколько инструментов:

  • ✅ Пишите код для последовательного вызова нескольких инструментов
  • ✅ Естественно используйте переменные, циклы и условные операторы
  • ✅ Улучшенная обработка ошибок с помощью try/catch
  • ✅ Снижение расхода токенов за счет объединения операций
  • ✅ Использование сильных способностей LLM к генерации кода

Быстрый старт

  1. Установите mcpcodeserver в вашем MCP-клиенте (см. раздел установки ниже)
  2. Создайте конфигурационный файл mcp.json с вашими дочерними MCP-серверами
  3. Начните использовать — ваша LLM теперь может генерировать и выполнять код TypeScript, вызывающий ваши инструменты
// Instead of multiple tool calls, write code like this:
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: Your LLM Agent Acts Better when Generating Code (Apple, ICML 2024) — Демонстрирует, что LLM-агенты достигают до 20% более высокого уровня успеха при использовании исполняемого кода Python в качестве единого пространства действий вместо предопределенных форматов вызова инструментов.

  • Cloudflare Code Mode — Аналогичная реализация, преобразующая инструменты MCP в API TypeScript, показывающая, что «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_pizza, filesystem_read_file)

Пример использования:

// List available servers
const servers = await list_servers({});
// Returns: ["pizzashop", "filesystem", "memory"]

// Get all tool definitions
const allTools = await get_tool_definitions({});

// Get only pizzashop tools
const pizzashopTools = await get_tool_definitions({
  server_names: ["pizzashop"]
});

Расширенные возможности MCP

mcpcodeserver поддерживает сквозную передачу расширенных функций протокола MCP, когда и родительский, и дочерние серверы их поддерживают:

  • Elicitation: Дочерние серверы могут запрашивать ввод пользователя во время выполнения инструмента, что передается родительским клиентам
  • Roots: Перечисляет и агрегирует корневые ресурсы со всех дочерних серверов, предоставляя унифицированное представление доступных ресурсов
  • Sampling: Позволяет передавать запросы LLM-сэмплирования дочерним серверам для расширенных возможностей ИИ

Эти функции автоматически анонсируются родительским клиентам и работают бесшовно, если поддерживаются нижележащими дочерними MCP-серверами.

Быстрый старт

Попробуйте немедленно с npx (установка не требуется):

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

# Or when published to npm
npx mcpcodeserver --help

🛠️ Установка

Требования

  • Node.js >= v18.0.0
  • Cursor, Claude Code, VSCode, Windsurf или другой MCP-клиент

Установка через Smithery

Для автоматической установки mcpcodeserver для любого клиента через Smithery:

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

Установка в Cursor

Перейдите: Settings -> Cursor Settings -> MCP -> Add new global MCP server

Рекомендуемый подход — вставить следующую конфигурацию в ваш файл Cursor ~/.cursor/mcp.json. Вы также можете установить в конкретном проекте, создав .cursor/mcp.json в папке вашего проекта.

Установка в Cursor в один клик

Install MCP Server

Локальное подключение к серверу 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 в один клик

Install in VS Code (npx)

Ручная настройка VSCode

Добавьте в настройки MCP VSCode:

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

Установка в Windsurf

Установка в Windsurf в один клик

Install in Windsurf

Установка в AI Coding Assistants

Для Continue, Cline и 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

Установка в текстовые редакторы

Для Aider, Codium, Zed, Nova и 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"))))

Установка в IDE JetBrains

Для IntelliJ IDEA, WebStorm, PyCharm и Android Studio добавьте в настройки MCP:

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

Установка в AI-инструменты

Для Codeium, Tabnine, GitHub Copilot и Amazon CodeWhisperer добавьте в настройки MCP:

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

Установка в облачные IDE

Для Replit, CodeSandbox, StackBlitz, GitPod, GitHub Codespaces, GitLab Web IDE и Bitbucket Cloud добавьте в настройки MCP:

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

Установка в другие инструменты

Для Xcode, Fleet, Sourcegraph и 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-brave-search"],
      "env": { "BRAVE_API_KEY": "your-api-key" }
    }
  }
}

Установка для разработки

# Install dependencies (using Bun for faster performance)
bun install

# Or with npm
npm install

# Build the project
bun run build

# Test the built server
bun dist/index.js --help

Примечание: Этот проект использует Bun для лучшей производительности, но npm/node также работают нормально.

🚨 Устранение неполадок

Ошибки «Module Not Found»

Если вы столкнулись с ERR_MODULE_NOT_FOUND, попробуйте использовать bunx вместо npx:

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

Проблемы с разрешением ESM

При ошибках типа Error: Cannot find module попробуйте флаг --experimental-vm-modules:

{
  "mcpServers": {
    "mcpcodeserver": {
      "command": "npx",
      "args": ["-y", "--node-options=--experimental-vm-modules", "mcpcodeserver", "--config", "/path/to/your/mcp.json"]
    }
  }
}

Проблемы с TLS/сертификатами

Используйте флаг --experimental-fetch для обхода проблем, связанных с TLS:

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

Общие ошибки MCP-клиента

  1. Попробуйте добавить @latest к имени пакета
  2. Используйте bunx как альтернативу npx
  3. Рассмотрите использование deno как еще одной альтернативы
  4. Убедитесь, что вы используете Node.js v18 или выше для нативной поддержки fetch

Проблемы с конфигурацией

  • Убедитесь, что ваш файл mcp.json является валидным JSON
  • Проверьте, что все команды дочерних серверов доступны в вашем PATH
  • Убедитесь, что дочерние серверы могут запускаться независимо
  • Проверьте права доступа к файлу конфигурации

Тестирование с MCP Inspector

npx -y @modelcontextprotocol/inspector npx mcpcodeserver --config /path/to/your/mcp.json

💻 Разработка

Аргументы командной строки

mcpcodeserver принимает следующие флаги CLI:

  • --config <path> – Путь к конфигурационному файлу MCP (по умолчанию: ./mcp.json)
  • --transport <stdio|http> – Используемый транспорт (по умолчанию stdio). Обратите внимание, что HTTP-транспорт автоматически предоставляет конечные точки HTTP и SSE
  • --port <number> – Порт для прослушивания при использовании транспорта http (по умолчанию 3000)
  • --help – Показать справочное сообщение

Пример с HTTP-транспортом и портом 8080:

npx mcpcodeserver --config /path/to/mcp.json --transport http --port 8080

Пример с транспортом stdio:

npx mcpcodeserver --config /path/to/mcp.json --transport stdio

Переменные окружения

Вы можете использовать переменные окружения для конфигурации:

  • MCP_CONFIG_PATH – Путь к конфигурационному файлу MCP (альтернатива --config)
  • MCP_TRANSPORT – Тип транспорта (альтернатива --transport)
  • MCP_PORT – Номер порта для HTTP-транспорта (альтернатива --port)

Пример с переменными окружения:

# .env
MCP_CONFIG_PATH=/path/to/your/mcp.json
MCP_TRANSPORT=stdio

Пример конфигурации MCP с использованием переменных окружения:

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

Примечание: Флаги CLI имеют приоритет над переменными окружения, если указаны и те, и другие.

Конфигурация для локальной разработки

Для локальной разработки вы можете запускать исходный код TypeScript напрямую:

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

Режимы работы

Режим Stdio (по умолчанию)

Сервер по умолчанию работает в режиме stdio, что идеально подходит для интеграции с MCP-клиентами, такими как Claude Desktop:

# Run in stdio mode
npx mcpcodeserver --config mcp.json

# Or with custom config path
npx mcpcodeserver --config /path/to/your/mcp.json

Режим HTTP

Для отладки, тестирования или интеграции с веб-ориентированными MCP-клиентами вы можете запустить сервер в режиме HTTP:

# Run in HTTP mode on default port 3000
npx mcpcodeserver --http --config mcp.json

# Run on custom port and host
npx mcpcodeserver --http --port 8080 --host 0.0.0.0 --config mcp.json

При работе в режиме HTTP сервер будет доступен по адресу:

  • URL сервера: http://localhost:3000/mcp (или ваш пользовательский хост:порт)
  • MCP Inspector: Используйте npx @modelcontextprotocol/inspector http://localhost:3000/mcp для отладки и тестирования

Интеграция с MCP Inspector

MCP Inspector — это мощный инструмент для отладки и тестирования MCP-серверов. При работе в режиме HTTP вы можете использовать его для:

  • Проверки доступных инструментов и их схем
  • Интерактивного тестирования вызовов инструментов
  • Отладки доступа к ресурсам и подсказкам
  • Мониторинга уведомлений в реальном времени
# Start the server in HTTP mode
npx mcpcodeserver --http --config mcp.json

# In another terminal, start the MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3000/mcp

# Or use the shorthand script (includes all example servers)
npm run inspector

Инспектор откроется в вашем браузере и предоставит полный интерфейс для изучения и тестирования вашего MCP-сервера.

Примечание: Команда npm run inspector использует mcp-test.json, который включает 8 MCP-серверов (всего 67 инструментов) из официальных примеров, включая серверы на TypeScript (npx) и Python (uvx).

Конфигурация

Создайте файл mcp.json, определяющий, к каким дочерним MCP-серверам подключаться. Используется стандартный формат конфигурации MCP-клиента:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "env": {
        "DEBUG": "false"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here"
      }
    },
    "weather": {
      "url": "http://localhost:3000/mcp",
      "transport": "sse"
    }
  }
}

Параметры конфигурации

Каждая запись сервера поддерживает:

Для транспорта stdio:

  • command (обязательно) — Команда для выполнения (например, "node", "python", "npx")
  • args (необязательно) — Массив аргументов, передаваемых команде
  • env (необязательно) — Переменные окружения для дочернего процесса

Для транспорта HTTP/SSE:

  • url (обязательно) — URL конечной точки HTTP
  • transport — Установите значение "sse" для Server-Sent Events

Использование

Запуск сервера

# Use default config (./mcp.json)
mcpcodeserver

# Use custom config location
mcpcodeserver --config /path/to/custom-mcp.json

# Show help
mcpcodeserver --help

Использование в качестве MCP-сервера

Настройте mcpcodeserver в вашем MCP-клиенте (например, Claude Desktop, Claude Code, Cline и др.):

С помощью npx (рекомендуется — установка не требуется):

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

Из GitHub (работает сразу):

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

С другими менеджерами пакетов:

// yarn
{ "command": "yarn", "args": ["dlx", "mcpcodeserver", "--config", "/path/to/mcp.json"] }

// pnpm
{ "command": "pnpm", "args": ["dlx", "mcpcodeserver", "--config", "/path/to/mcp.json"] }

// bun
{ "command": "bunx", "args": ["mcpcodeserver", "--config", "/path/to/mcp.json"] }

Смотрите examples/ для дополнительных примеров конфигурации и настроек для конкретных MCP-клиентов.

Инструмент 1: get_tool_definitions

Этот инструмент возвращает определения типов TypeScript для всех обнаруженных инструментов дочерних серверов.

Входные данные:

  • include_examples (необязательный boolean) — Включать ли примеры использования

Пример:

// Call the tool (in your MCP client)
get_tool_definitions({ include_examples: true })

Выходные данные: Возвращает код TypeScript с интерфейсами и объявлениями функций:

/**
 * Auto-generated TypeScript definitions for MCP tools
 */

interface ToolResult {
  content: Array<{
    type: string;
    text?: string;
    // ...
  }>;
  isError?: boolean;
}

/**
 * Read contents of a file
 * Server: filesystem
 * Tool: read_file
 */
interface ReadFileParams {
  path: string;
}

declare function filesystem_read_file(params: ReadFileParams): Promise<ToolResult>;

// ... more tool definitions

Инструмент 2: generate_and_execute_code

Этот инструмент выполняет код TypeScript в песочнице с доступом ко всем обнаруженным функциям инструментов.

Входные данные:

  • code (обязательная строка) — Код TypeScript/JavaScript для выполнения
  • timeout (необязательное число) — Максимальное время выполнения в миллисекундах (по умолчанию: 30000, максимум: 300000)

Пример:

// Call the tool with TypeScript code
generate_and_execute_code({
  code: `
    // Read multiple files and combine them
    const file1 = await filesystem_read_file({ path: "/tmp/file1.txt" });
    const file2 = await filesystem_read_file({ path: "/tmp/file2.txt" });

    const text1 = file1.content[0].text;
    const text2 = file2.content[0].text;

    console.log("File 1 length:", text1.length);
    console.log("File 2 length:", text2.length);

    return {
      combined: text1 + text2,
      totalLength: text1.length + text2.length
    };
  `
})

Выходные данные:

=== Console Output ===
File 1 length: 42
File 2 length: 38

=== Result ===
{
  "combined": "...",
  "totalLength": 80
}

Среда песочницы

Песочница выполнения TypeScript предоставляет:

Доступно:

  • Все обнаруженные функции инструментов (как асинхронные функции)
  • Методы консоли: console.log(), console.error(), console.warn(), console.info()
  • Базовые глобальные объекты JavaScript: Math, JSON, Date, Array, Object, String, Number, Boolean
  • Поддержка Promise и async/await
  • Обработка ошибок с помощью try/catch
  • Таймеры: setTimeout, setInterval, clearTimeout, clearInterval

Недоступно:

  • Модули Node.js (fs, http, child_process и т. д.)
  • Доступ к файловой системе (кроме как через инструменты MCP)
  • Доступ к сети (кроме как через инструменты MCP)
  • Информация о процессе

Примечание по безопасности: Это не полностью безопасная песочница. Контекст VM обеспечивает изоляцию, но не является абсолютно надёжным. Выполняйте только доверенный код.

Обработка ошибок

Ошибки в песочнице перехватываются и возвращаются с трассировкой стека:

generate_and_execute_code({
  code: `
    try {
      const result = await filesystem_read_file({ path: "/nonexistent" });
      return result;
    } catch (error) {
      console.error("Failed to read file:", error.message);
      throw error; // Re-throw to surface to parent
    }
  `
})

Тестирование с Claude Code

Хотите попробовать mcpcodeserver с Claude Code? Используйте команду для быстрой настройки:

./setup-claude-code-test.sh

Это соберёт проект, установит тестовые зависимости и покажет, что именно нужно добавить в конфигурацию Claude Code. Подробные инструкции смотрите в TESTING_WITH_CLAUDE.md.

Разработка

# Install dependencies
bun install

# Build the project
bun run build

# Watch mode for development
bun run dev

# Run the server
bun start

# Run tests
bun test                # All tests
bun run test:unit       # Unit tests only
bun run test:integration # Integration tests (requires Python)

# Code quality
bun run lint            # Check linting
bun run format          # Format code
bun run typecheck       # Type checking

Структура проекта

Подробную структуру проекта и документацию компонентов смотрите в AGENTS.md.

Варианты использования

Операции с несколькими файлами

Вместо множественных вызовов инструментов через LLM напишите код:

const files = ["/tmp/a.txt", "/tmp/b.txt", "/tmp/c.txt"];
const contents = await Promise.all(
  files.map(path => filesystem_read_file({ path }))
);
return contents.map(r => r.content[0].text);

Преобразование данных

Обрабатывайте данные между вызовами инструментов без вмешательства LLM:

const data = await api_fetch({ url: "https://api.example.com/data" });
const json = JSON.parse(data.content[0].text);
const filtered = json.items.filter(item => item.active);
return filtered.length;

Условная логика

Принимайте решения на основе результатов инструментов:

const exists = await filesystem_read_file({ path: "/tmp/config.json" });
if (exists.isError) {
  console.log("Config doesn't exist, using defaults");
  return { source: "defaults" };
} else {
  return { source: "file", config: JSON.parse(exists.content[0].text) };
}

Восстановление после ошибок

Изящно обрабатывайте ошибки, не прерывая весь рабочий процесс:

const results = [];
for (const path of ["/tmp/a.txt", "/tmp/b.txt", "/tmp/c.txt"]) {
  try {
    const content = await filesystem_read_file({ path });
    results.push({ path, success: true, data: content });
  } catch (error) {
    results.push({ path, success: false, error: error.message });
  }
}
return results;

Интеграция с вышестоящими MCP-серверами

mcpcodeserver может интегрироваться с официальными вышестоящими MCP-серверами из репозитория серверов Model Context Protocol. Это позволяет использовать реальные, готовые к работе MCP-серверы вместе с вашими пользовательскими инструментами.

Поддерживаемые вышестоящие серверы

  • filesystem: Операции с файловой системой (чтение, запись, список каталогов)
  • memory: Хранилище ключ-значение в памяти
  • sqlite: Операции с базой данных SQLite
  • github: Интеграция с GitHub API
  • brave-search: Возможности веб-поиска
  • fetch: Возможности HTTP-запросов

Пример конфигурации

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "/tmp/test.db"]
    }
  }
}

Тестирование интеграции с вышестоящими серверами

Проект включает комплексные тесты для интеграции с вышестоящими серверами:

# Run upstream servers integration tests
bun tests/integration/run-upstream-tests.ts

# Or manually test with upstream config
npx mcpcodeserver --config tests/integration/upstream-test-config.json

Кросс-серверные рабочие процессы

С вышестоящими серверами вы можете создавать мощные кросс-серверные рабочие процессы:

// Store database query results in memory and write to file
const queryResult = await sqlite_execute_sql({
  sql: "SELECT COUNT(*) as count FROM users"
});
const count = queryResult.content[0].text;

await memory_create({
  key: "user-count",
  value: count
});

await filesystem_write_file({
  path: "/tmp/user-count.txt",
  content: `Total users: ${count}`
});

Ограничения

  • Тайм-аут выполнения: Максимум 5 минут (настраивается, по умолчанию 30 секунд)
  • Память: Ограничена контекстом Node.js VM
  • Отсутствие постоянного состояния между выполнениями
  • Невозможность require/import внешних модулей
  • Не является безопасной песочницей — не запускайте ненадёжный код

Участие в разработке

Приветствуется участие в разработке! Проект построен с использованием:

  • TypeScript 5.7+
  • Node.js 18+
  • MCP TypeScript SDK 1.20+
  • Zod для валидации

Подробные рекомендации смотрите в CONTRIBUTING.md.

Поддержка

Если этот проект оказался полезным, вы можете угостить меня кофе!

Buy Me A Coffee

Лицензия

MIT

Ресурсы