picomcp — это TypeScript-фреймворк для создания серверов Model Context Protocol. MCP-сервер даёт ИИ-приложению (Claude, Cursor, VS Code, вашему собственному агенту) инструменты, которые оно может вызывать, ресурсы, которые оно может читать, и промпты, которые оно может предложить пользователю.
import { pico } from "picomcp";
import { z } from "zod";
pico({ name: "weather" })
.tool("forecast", {
description: "Get the forecast for a city.",
input: z.object({ city: z.string() }),
run: ({ city }) => getForecast(city),
})
.serve();Это полноценный сервер. Запустите его командой node server.ts и подключите к любому MCP-клиенту.
Почему picomcp#
- Маленький. Около 4 кБ после gzip, ноль зависимостей. Всю библиотеку можно держать в голове и проверить за одно ревью.
- Типы из вашей схемы. Передайте схему Zod, Valibot или ArkType. Обработчик получает типизированные аргументы, клиент получает JSON Schema, а некорректные вызовы получают понятную ошибку.
- Работает везде. Node 22+, Bun, Deno, Cloudflare Workers и любая среда с
fetch. В ядре нет встроенных модулей Node. - Два транспорта, один сервер. stdio для десктопных клиентов, Streamable HTTP для удалённых серверов. Переключение — одна опция.
- Тестируется без клиента.
server.call("forecast", { city: "Lyon" })вызывает инструмент прямо в процессе, с полной типизацией. - Проверен официальным SDK. Тесты управляют picomcp через
@modelcontextprotocol/sdkна обоих транспортах.
Чем picomcp не является#
picomcp реализует серверную часть MCP, и только её. В нём нет клиента, цикла агента или SDK для LLM. Он ориентирован на ту часть протокола, что работает без состояния, по схеме «запрос — ответ»: именно она нужна большинству серверов. Возможности, которые инициирует сервер, например sampling и elicitation, пока не поддерживаются. Точный список — в разделе Покрытие протокола.
Что дальше#
- Быстрый старт: создайте и подключите сервер за пять минут.
- Инструменты: всё, что умеет инструмент.
- Для ИИ-агентов: дайте документацию своему агенту одной ссылкой.