@selfagency/beans-mcp
Official@selfagency/beans-mcp 🫘
MCP (Model Context Protocol) Server für den Beans Issue-Tracker. Bietet programmatische und CLI-Schnittstellen für KI-gestützte Interaktionen mit Beans-Workspaces.
Dokumentation: beans-mcp.self.agency
🤖 Testen Sie Beans vollständig integriert mit GitHub Copilot in VS Code! Installieren Sie die selfagency.beans-vscode Erweiterung.
Verwendung
npx @selfagency/beans-mcp /path/to/workspaceVersionierung
@selfagency/beans-mcp hat eine eigene Paketversionierung. Die Kompatibilität mit der
Beans CLI wird separat verfolgt.
Beim Start vergleicht der Server die installierte beans CLI-Version mit der
hartcodierten unterstützten Beans-Version: 0.4.2. Wenn sie abweichen, wird eine Warnung
auf stderr ausgegeben und der Start fortgesetzt.
Parameter
--workspace-rootoder Positionsargument: Pfad zum Workspace-Root--cli-path: Pfad zur Beans CLI--port: MCP-Server-Port (Standard: 39173)--log-dir: Log-Verzeichnis-h,--help: Verwendung anzeigen und beenden
Related MCP server: jira-cli-mcp
Zusammenfassung der öffentlichen MCP-Tools
Tool | Beschreibung |
| Workspace initialisieren (optional |
| Abgeschlossene/verworfene Beans archivieren. |
| Vollständige Bean-Details nach |
| Neues Bean erstellen (Titel/Typ + optionaler Body/Eltern). |
| Mehrere Beans in einem Aufruf erstellen, optional unter einem gemeinsamen Eltern. |
| Konsolidierte Metadaten + Body-Updates (Status/Typ/Priorität/Eltern/clearParent/blocking/blockedBy/body/bodyAppend/bodyReplace) plus optionaler optimistischer Parallelitätshinweis ( |
| Mehrere Beans in einem Aufruf aktualisieren, optional unter einem gemeinsamen Eltern neu zuordnen. |
| Alle Markdown-Checklisten-Aufgaben innerhalb eines Beans als erledigt markieren. |
| Ein oder mehrere Beans löschen ( |
| Ein abgeschlossenes oder verworfenes Bean wieder in einen aktiven Status versetzen. |
| Vereinheitlichte Liste/Suche/Filter/Sortierung/Bereitschaftsoperationen, mit GraphQL-Durchleitung. |
| Dateien unter |
| Erweiterungsausgabe-Logs lesen oder Anleitung anzeigen. |
Das
beans_query-Tool ist bewusst breit gefasst: Bevorzugen Sie es zum Auflisten, Suchen, Filtern oder Sortieren von Beans sowie zum Generieren von Copilot-Anweisungen (operation: 'llm_context').Alle Datei- und Log-Operationen validieren Pfade, um sie innerhalb des Workspace oder des VS Code-Log-Verzeichnisses zu halten. Das Präfix
.beans/wird automatisch von Pfaden entfernt – Sie können entwedersome-bean.mdoder.beans/some-bean.mdübergeben, das Ergebnis ist dasselbe.beans_updateersetzt viele feingranulare Update-Tools; Aufrufer sollten es verwenden, um die öffentliche Tool-Oberfläche klein und vorhersagbar zu halten.beans_archivebietet CLI-Parität zum Archivieren abgeschlossener/verworfener Beans.Das Schließen eines Eltern-Beans über
beans_update(status: completedoderstatus: scrapped) überträgt denselben Status auf alle Nachkommen.Das Wiederöffnen eines Eltern-Beans über
beans_reopenüberträgt den Zielstatus auf geschlossene Nachkommen (completed/scrapped).beans_bulk_createundbeans_bulk_updatearbeiten nach bestem Bemühen: Sie verarbeiten jedes Element sequentiell und geben ein Array mit Ergebnissen pro Element mit Erfolgs-/Fehlereinträgen zurück, anstatt atomar zu scheitern.Werte für
title:im Frontmatter werden beim Schreiben automatisch in doppelte Anführungszeichen gesetzt. Übergeben Sie rohe Titel – die Anführungszeichen und das Escaping werden für Sie erledigt.beans_bean_fileunterstütztupdate_frontmatterfür atomare Frontmatter-Only-Schreibvorgänge; unterstützte Felder umfassenprundbranch.Ungefilterte Listenergebnisse werden mit einer kurzen Burst-TTL und einer Timestamp-Probe-Aktualisierungsstrategie zwischengespeichert. Mutationstools (
beans_create,beans_update,beans_deleteusw.) invalidieren den Cache sofort.Versionsabweichungen zwischen
beans-mcpund der Beans CLI sind standardmäßig nur warnend und nicht blockierend.Wenn
beanIdin der Tool-Eingabe fehlt, enthalten Validierungsfehler einen Hinweis:Meinten Sie \beanId`?`.
Beispiele
Anfrage:
{ "prefix": "project" }Antwort (structuredContent):
{ "initialized": true }Anfrage:
{ "beanId": "bean-abc" }Anfrage (mehrere Beans):
{ "beanIds": ["bean-abc", "bean-def"] }Antwort (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"
}
}Anfrage:
{}Antwort (Beispiel):
{ "archived": true, "archivedCount": 3 }Anfrage:
{
"title": "Add dark mode",
"type": "feature",
"status": "todo",
"priority": "normal",
"body": "Implement theme toggle and styles",
"parent": "epic-123"
}
descriptionwird als veralteter Alias fürbodyakzeptiert.
Antwort (structuredContent):
{
"bean": {
"id": "new-1",
"title": "Add dark mode",
"status": "todo",
"type": "feature"
}
}Anfrage:
{
"parent": "epic-123",
"beans": [
{ "title": "Design mockups", "type": "task" },
{ "title": "Implement API", "type": "task", "priority": "high" },
{ "title": "Write tests", "type": "task", "parent": "epic-456" }
]
}Das übergeordnete parent wird als Standard auf jedes Bean angewendet, das kein eigenes parent angibt. Hier werden Design mockups und Implement API epic-123 zugewiesen; Write tests überschreibt mit epic-456.
Antwort (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" } }
]
}Anfrage (einen Batch von Aufgaben in Bearbeitung verschieben und einem Eltern zuweisen):
{
"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" }
]
}Antwort (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" } }
]
}Beide Bulk-Tools arbeiten nach bestem Bemühen: Teilfehler werden pro Element gemeldet, anstatt den gesamten Batch abzubrechen.
Anfrage (Status ändern und Blockierung hinzufügen):
{
"beanId": "bean-abc",
"status": "in-progress",
"blocking": ["bean-def"],
"ifMatch": "etag-value"
}Anfrage (atomare Body-Änderungen):
{
"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."
}Hinweis:
body(vollständiger Ersatz) kann nicht mitbodyAppendoderbodyReplacein derselben Anfrage kombiniert werden.
Antwort (structuredContent):
{
"bean": {
"id": "bean-abc",
"status": "in-progress",
"blockingIds": ["bean-def"]
}
}Anfrage:
{ "beanId": "bean-old", "force": false }Antwort:
{ "deleted": true, "beanId": "bean-old" }Batch-Anfrage:
{ "beanIds": ["bean-old", "bean-older"], "force": false }Batch-Antwort (Zusammenfassung):
{
"requestedCount": 2,
"deletedCount": 2,
"failedCount": 0,
"results": [
{ "beanId": "bean-old", "deleted": true },
{ "beanId": "bean-older", "deleted": true }
]
}Anfrage:
{
"beanId": "bean-closed",
"requiredCurrentStatus": "completed",
"targetStatus": "todo"
}Antwort:
{ "bean": { "id": "bean-closed", "status": "todo" } }Anfrage:
{ "beanId": "bean-abc" }Antwort:
{
"bean": {
"id": "bean-abc",
"status": "todo"
},
"totalTaskCount": 5,
"updatedTaskCount": 3,
"unchangedTaskCount": 2
}Aktualisieren (alle Beans auflisten):
{ "operation": "refresh" }Antwort (teilweise):
{ "count": 12, "beans": [] }Filtern (Status/Typen/Tags):
{
"operation": "filter",
"statuses": ["in-progress", "todo"],
"types": ["bug", "feature"],
"tags": ["auth"]
}Suche (Volltext):
{ "operation": "search", "search": "authentication", "includeClosed": false }Sortierung (Modi: status-priority-type-title, updated, created, id):
{ "operation": "sort", "mode": "updated" }Bereit (nur bearbeitbare Beans):
{ "operation": "ready" }LLM-Kontext (Copilot-Anweisungen generieren; optionales Schreiben in den Workspace):
{ "operation": "llm_context", "writeToWorkspaceInstructions": true }Antwort (structuredContent):
{
"graphqlSchema": "...",
"generatedInstructions": "...",
"instructionsPath": "/workspace/.github/instructions/beans-prime.instructions.md"
}Rohes GraphQL-Passthrough (CLI-Parität mit beans query):
{
"operation": "graphql",
"graphql": "{ beans(filter: { type: [\"bug\"] }) { id title status } }"
}Mit Variablen:
{
"operation": "graphql",
"graphql": "query($q: String!) { beans(filter: { search: $q }) { id title } }",
"variables": { "q": "authentication" }
}Anfrage (lesen):
{ "operation": "read", "path": "beans-vscode-123--title.md" }Antwort:
{
"path": "/workspace/.beans/beans-vscode-123--title.md",
"content": "---\n...frontmatter...\n---\n# Title\n"
}Anfrage (atomares Frontmatter-Update):
{
"operation": "update_frontmatter",
"path": "beans-vscode-123--title.md",
"fields": {
"status": "in-progress",
"pr": "123",
"branch": "feature/cascade-status-and-skills-npm"
}
}Antwort:
{
"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"
}
}Anfrage (letzte 200 Zeilen lesen):
{ "operation": "read", "lines": 200 }Antwort:
{
"path": "/workspace/.vscode/logs/beans-output.log",
"content": "...log lines...",
"linesReturned": 200
}Programmatische Verwendung
Installation
npm install beans-mcpBeispiel
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)
Erstellt und initialisiert eine Beans MCP Server-Instanz.
Optionen:
workspaceRoot(string): Pfad zum Beans-WorkspacecliPath(string, optional): Pfad zur Beans-CLI-Executable (Standard: 'beans')name(string, optional): Servername (Standard: 'beans-mcp-server')version(string, optional): ServerversionlogDir(string, optional): Verzeichnis für Server-Logsbackend(BackendInterface, optional): Benutzerdefinierte Backend-Implementierung
Rückgabe: { server: McpServer; backend: BackendInterface }
startBeansMcpServer(argv)
CLI-kompatibler Einstiegspunkt zum Starten des Servers.
Hilfsfunktionen
parseCliArgs(argv: string[]): CLI-Argumente parsenisPathWithinRoot(root: string, target: string): boolean: Prüfen, ob ein Pfad innerhalb des Root liegtsortBeans(beans, mode): Beans nach dem angegebenen Modus sortieren
Typen & Schemata
Export des GraphQL-Schemas, der Zod-Validierungsschemata und der TypeScript-Typen für Beans-Datensätze und -Operationen.
Agent Skills (skills-npm, skills.sh)
Dieses Paket enthält eine integrierte Agent Skill unter skills/ und veröffentlicht diese Skill auch in einem Format, das in das breitere Ökosystem der offenen Skills passt, das von skills.sh bereitgestellt wird.
Skill-Pfad im Paket:
skills/beans-mcp/SKILL.mdVeröffentlichtes Skill-Artefakt:
https://beans-mcp.self.agency/.well-known/agent-skills/beans-mcp/SKILL.mdVeröffentlichter Discovery-Index:
https://beans-mcp.self.agency/.well-known/agent-skills/index.jsonKompatibel mit Discovery-Tools, die scannen:
node_modules/**/skills/*/SKILL.md
Das bedeutet, Sie können es mit npm-basierten Workflows wie skills-npm verwenden und gleichzeitig Ökosystem-Tools auf das veröffentlichte Skill-Artefakt und den Discovery-Index verweisen, die von Skills-Katalogen wie skills.sh verwendet werden.
Um installierte npm-verpackte Skills in Ihren Agent-Workspace zu symbolisch verknüpfen, können Sie skills-npm in Ihrem konsumierenden Projekt verwenden.
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Official Fibery MCP server: query and update your workspace from any AI client via OAuth.
Official Duck Framework MCP server for AI-assisted development and project scaffolding.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
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.1925 npm2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that wraps the jira-cli command-line tool to enable AI assistants to interact with Jira.8 npm9MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for integrating Linear with Claude Code and other MCP clients. Enables issue management, project planning, and status tracking through a set of tools.-
- AlicenseNot gradedqualityFmaintenanceA 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.67 npm1MIT