@selfagency/beans-mcp
Official@selfagency/beans-mcp 🫘
Сервер MCP (Model Context Protocol) для трекера задач Beans. Предоставляет программный и CLI-интерфейсы для AI-взаимодействий с рабочими пространствами Beans.
Документация: beans-mcp.self.agency
🤖 Попробуйте Beans в полной интеграции с GitHub Copilot в VS Code! Установите расширение selfagency.beans-vscode.
Использование
npx @selfagency/beans-mcp /path/to/workspaceВерсионирование
@selfagency/beans-mcp имеет собственное версионирование пакета. Совместимость с CLI Beans отслеживается отдельно.
При запуске сервер сравнивает установленную версию CLI beans с жёстко заданной поддерживаемой версией Beans: 0.4.2. Если они различаются, выводится предупреждение в stderr, и запуск продолжается.
Параметры
--workspace-rootили позиционный аргумент: путь к корню рабочего пространства--cli-path: путь к CLI Beans--port: порт сервера MCP (по умолчанию: 39173)--log-dir: каталог для логов-h,--help: вывод справки и выход
Related MCP server: jira-cli-mcp
Сводка публичных инструментов MCP
Инструмент | Описание |
| Инициализация рабочего пространства (опциональный |
| Архивирование завершённых/отменённых beans. |
| Получение полных деталей bean по |
| Создание нового bean (заголовок/тип + опциональные тело/родитель). |
| Создание нескольких beans за один вызов, опционально под общим родителем. |
| Объединённые обновления метаданных + тела (статус/тип/приоритет/родитель/clearParent/blocking/blockedBy/body/bodyAppend/bodyReplace) плюс опциональная подсказка оптимистичной блокировки ( |
| Обновление нескольких beans за один вызов, опционально с переназначением общего родителя. |
| Отметить все задачи в markdown-списке внутри bean как выполненные. |
| Удаление одного или нескольких beans ( |
| Переоткрытие завершённого или отменённого bean в активный статус. |
| Унифицированные операции список/поиск/фильтр/сортировка/готовность с возможностью передачи GraphQL. |
| Чтение/редактирование/создание/удаление файлов в |
| Чтение логов вывода расширения или отображение инструкций. |
Инструмент
beans_queryнамеренно широк: предпочитайте его для списка, поиска, фильтрации или сортировки beans, а также для генерации инструкций Copilot (operation: 'llm_context').Все операции с файлами и логами проверяют пути, чтобы они оставались в пределах рабочего пространства или каталога логов VS Code. Префикс
.beans/автоматически удаляется из путей — вы можете передать какsome-bean.md, так и.beans/some-bean.md, результат будет одинаковым.beans_updateзаменяет множество узкоспециализированных инструментов обновления; вызывающие стороны должны использовать его, чтобы сохранить поверхность публичных инструментов небольшой и предсказуемой.beans_archiveобеспечивает паритет с CLI для архивирования завершённых/отменённых beans.Закрытие родительского bean через
beans_update(status: completedилиstatus: scrapped) каскадно применяет тот же статус ко всем потомкам.Переоткрытие родительского bean через
beans_reopenкаскадно применяет целевой статус к закрытым потомкам (completed/scrapped).beans_bulk_createиbeans_bulk_updateработают по принципу «максимальных усилий»: они обрабатывают каждый элемент последовательно и возвращают массив результатов для каждого элемента с записями об успехе/ошибке, а не атомарно.Значения
title:в frontmatter автоматически заключаются в двойные кавычки при записи. Передавайте сырые заголовки — кавычки и экранирование обрабатываются за вас.beans_bean_fileподдерживаетupdate_frontmatterдля атомарной записи только frontmatter; поддерживаемые поля включаютprиbranch.Результаты нефильтрованных списков кэшируются с коротким TTL и стратегией обновления по временной метке. Инструменты мутации (
beans_create,beans_update,beans_deleteи т.д.) немедленно инвалидируют кэш.Несоответствия версий между
beans-mcpи CLI Beans являются только предупреждениями и не блокируют работу.Когда
beanIdотсутствует во входных данных инструмента, ошибки валидации включают подсказку:Возможно, вы имели в виду \beanId`?`.
Примеры
Запрос:
{ "prefix": "project" }Ответ (structuredContent):
{ "initialized": true }Запрос:
{ "beanId": "bean-abc" }Запрос (несколько beans):
{ "beanIds": ["bean-abc", "bean-def"] }Ответ (structuredContent):
{
"bean": {
"id": "bean-abc",
"title": "Fix login timeout",
"status": "todo",
"type": "bug",
"priority": "critical",
"body": "...markdown...",
"createdAt": "2025-12-01T12:00:00Z",
"updatedAt": "2025-12-02T08:00:00Z"
}
}Запрос:
{}Ответ (пример):
{ "archived": true, "archivedCount": 3 }Запрос:
{
"title": "Add dark mode",
"type": "feature",
"status": "todo",
"priority": "normal",
"body": "Implement theme toggle and styles",
"parent": "epic-123"
}
descriptionпринимается как устаревший псевдоним дляbody.
Ответ (structuredContent):
{
"bean": {
"id": "new-1",
"title": "Add dark mode",
"status": "todo",
"type": "feature"
}
}Запрос:
{
"parent": "epic-123",
"beans": [
{ "title": "Design mockups", "type": "task" },
{ "title": "Implement API", "type": "task", "priority": "high" },
{ "title": "Write tests", "type": "task", "parent": "epic-456" }
]
}Родитель верхнего уровня parent применяется как значение по умолчанию для любого bean, который не указывает собственного parent. Здесь Design mockups и Implement API назначаются на epic-123; Write tests переопределяет на epic-456.
Ответ (structuredContent):
{
"requestedCount": 3,
"successCount": 3,
"failedCount": 0,
"results": [
{ "bean": { "id": "task-1", "title": "Design mockups" } },
{ "bean": { "id": "task-2", "title": "Implement API" } },
{ "bean": { "id": "task-3", "title": "Write tests" } }
]
}Запрос (переместить группу задач в статус «в работе» и назначить им родителя):
{
"parent": "epic-123",
"beans": [
{ "beanId": "task-1", "status": "in-progress" },
{ "beanId": "task-2", "status": "in-progress" },
{ "beanId": "task-3", "status": "in-progress", "parent": "epic-456" }
]
}Ответ (structuredContent):
{
"requestedCount": 3,
"successCount": 3,
"failedCount": 0,
"results": [
{ "beanId": "task-1", "bean": { "id": "task-1", "status": "in-progress" } },
{ "beanId": "task-2", "bean": { "id": "task-2", "status": "in-progress" } },
{ "beanId": "task-3", "bean": { "id": "task-3", "status": "in-progress" } }
]
}Оба массовых инструмента работают по принципу «максимальных усилий»: частичные сбои сообщаются для каждого элемента, а не прерывают всю операцию.
Запрос (изменить статус и добавить блокировку):
{
"beanId": "bean-abc",
"status": "in-progress",
"blocking": ["bean-def"],
"ifMatch": "etag-value"
}Запрос (атомарные изменения тела):
{
"beanId": "bean-abc",
"bodyReplace": [
{ "old": "- [ ] Task 1", "new": "- [x] Task 1" },
{ "old": "- [ ] Task 2", "new": "- [x] Task 2" }
],
"bodyAppend": "## Summary\n\nAll checklist items completed."
}Примечание:
body(полная замена) нельзя комбинировать сbodyAppendилиbodyReplaceв одном запросе.
Ответ (structuredContent):
{
"bean": {
"id": "bean-abc",
"status": "in-progress",
"blockingIds": ["bean-def"]
}
}Запрос:
{ "beanId": "bean-old", "force": false }Ответ:
{ "deleted": true, "beanId": "bean-old" }Пакетный запрос:
{ "beanIds": ["bean-old", "bean-older"], "force": false }Пакетный ответ (сводка):
{
"requestedCount": 2,
"deletedCount": 2,
"failedCount": 0,
"results": [
{ "beanId": "bean-old", "deleted": true },
{ "beanId": "bean-older", "deleted": true }
]
}Запрос:
{
"beanId": "bean-closed",
"requiredCurrentStatus": "completed",
"targetStatus": "todo"
}Ответ:
{ "bean": { "id": "bean-closed", "status": "todo" } }Запрос:
{ "beanId": "bean-abc" }Ответ:
{
"bean": {
"id": "bean-abc",
"status": "todo"
},
"totalTaskCount": 5,
"updatedTaskCount": 3,
"unchangedTaskCount": 2
}Обновление (список всех beans):
{ "operation": "refresh" }Ответ (частичный):
{ "count": 12, "beans": [] }Фильтр (статусы/типы/теги):
{
"operation": "filter",
"statuses": ["in-progress", "todo"],
"types": ["bug", "feature"],
"tags": ["auth"]
}Поиск (полнотекстовый):
{ "operation": "search", "search": "authentication", "includeClosed": false }Сортировка (режимы: status-priority-type-title, updated, created, id):
{ "operation": "sort", "mode": "updated" }Готовность (только активные beans):
{ "operation": "ready" }Контекст LLM (генерация инструкций Copilot; опциональная запись в рабочее пространство):
{ "operation": "llm_context", "writeToWorkspaceInstructions": true }Ответ (structuredContent):
{
"graphqlSchema": "...",
"generatedInstructions": "...",
"instructionsPath": "/workspace/.github/instructions/beans-prime.instructions.md"
}Прямая передача GraphQL (паритет с CLI beans query):
{
"operation": "graphql",
"graphql": "{ beans(filter: { type: [\"bug\"] }) { id title status } }"
}С переменными:
{
"operation": "graphql",
"graphql": "query($q: String!) { beans(filter: { search: $q }) { id title } }",
"variables": { "q": "authentication" }
}Запрос (чтение):
{ "operation": "read", "path": "beans-vscode-123--title.md" }Ответ:
{
"path": "/workspace/.beans/beans-vscode-123--title.md",
"content": "---\n...frontmatter...\n---\n# Title\n"
}Запрос (атомарное обновление frontmatter):
{
"operation": "update_frontmatter",
"path": "beans-vscode-123--title.md",
"fields": {
"status": "in-progress",
"pr": "123",
"branch": "feature/cascade-status-and-skills-npm"
}
}Ответ:
{
"path": "/workspace/.beans/beans-vscode-123--title.md",
"bytes": 256,
"updatedFields": ["status", "pr", "branch"],
"frontmatter": {
"status": "in-progress",
"pr": "123",
"branch": "feature/cascade-status-and-skills-npm"
}
}Запрос (чтение последних 200 строк):
{ "operation": "read", "lines": 200 }Ответ:
{
"path": "/workspace/.vscode/logs/beans-output.log",
"content": "...log lines...",
"linesReturned": 200
}Программное использование
Установка
npm install beans-mcpПример
import { createBeansMcpServer, parseCliArgs } from '@selfagency/beans-mcp';
const server = await createBeansMcpServer({
workspaceRoot: '/path/to/workspace',
cliPath: 'beans', // or path to beans CLI
});
// Connect to stdio transport or your own transportAPI
createBeansMcpServer(opts)
Создаёт и инициализирует экземпляр сервера Beans MCP.
Параметры:
workspaceRoot(string): путь к рабочему пространству BeanscliPath(string, опционально): путь к исполняемому файлу CLI Beans (по умолчанию: 'beans')name(string, опционально): имя сервера (по умолчанию: 'beans-mcp-server')version(string, опционально): версия сервераlogDir(string, опционально): каталог для логов сервераbackend(BackendInterface, опционально): пользовательская реализация бэкенда
Возвращает: { server: McpServer; backend: BackendInterface }
startBeansMcpServer(argv)
Точка входа, совместимая с CLI, для запуска сервера.
Вспомогательные функции
parseCliArgs(argv: string[]): разбор аргументов CLIisPathWithinRoot(root: string, target: string): boolean: проверка, находится ли путь внутри корняsortBeans(beans, mode): сортировка beans по указанному режиму
Типы и схемы
Экспорт схемы GraphQL, схем валидации Zod и TypeScript-типов для записей и операций Beans.
Навыки агента (skills-npm, skills.sh)
Этот пакет поставляется со встроенным навыком агента в skills/, а также публикует этот навык в формате, подходящем для более широкой экосистемы открытых навыков, представленной на skills.sh.
Путь к навыку в пакете:
skills/beans-mcp/SKILL.mdОпубликованный артефакт навыка:
https://beans-mcp.self.agency/.well-known/agent-skills/beans-mcp/SKILL.mdОпубликованный индекс обнаружения:
https://beans-mcp.self.agency/.well-known/agent-skills/index.jsonСовместим с инструментами обнаружения, которые сканируют:
node_modules/**/skills/*/SKILL.md
Это означает, что вы можете использовать его с npm-ориентированными рабочими процессами, такими как skills-npm, а также указывать инструментам экосистемы на опубликованный артефакт навыка и индекс обнаружения, используемые каталогами навыков, такими как skills.sh.
Чтобы создать символическую ссылку на установленные npm-пакеты навыков в вашем рабочем пространстве агента, вы можете использовать skills-npm в вашем потребляющем проекте.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceA MCP server for interacting with FogBugz issue tracker through LLMs such as Claude. Supports both the XML API (/api.asp) and the JSON API (/f/api/0/jsonapi) with automatic version detection at startup. Works with on-premise and on-demand FogBugz installations.19242MIT
- Alicense-qualityCmaintenanceMCP server that wraps the jira-cli command-line tool to enable AI assistants to interact with Jira.169MIT
- Flicense-qualityDmaintenanceMCP server for integrating Linear with Claude Code and other MCP clients. Enables issue management, project planning, and status tracking through a set of tools.
- Alicense-qualityAmaintenanceA local, provider-neutral MCP server for repository-scoped issue handling. It provides a guarded interface to Linear, GitHub Issues, GitHub Projects v2, and Jira Cloud, with preview/apply safety and host-local configuration.731MIT
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/selfagency/beans-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server