Skip to main content
Glama
selfagency

@selfagency/beans-mcp

Official
by selfagency

@selfagency/beans-mcp 🫘

Test & Build codecov NPM Version

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/workspace

Versionierung

@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-root oder 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

beans_init

Workspace initialisieren (optional prefix).

beans_archive

Abgeschlossene/verworfene Beans archivieren.

beans_view

Vollständige Bean-Details nach beanId oder beanIds abrufen.

beans_create

Neues Bean erstellen (Titel/Typ + optionaler Body/Eltern).

beans_bulk_create

Mehrere Beans in einem Aufruf erstellen, optional unter einem gemeinsamen Eltern.

beans_update

Konsolidierte Metadaten + Body-Updates (Status/Typ/Priorität/Eltern/clearParent/blocking/blockedBy/body/bodyAppend/bodyReplace) plus optionaler optimistischer Parallelitätshinweis (ifMatch).

beans_bulk_update

Mehrere Beans in einem Aufruf aktualisieren, optional unter einem gemeinsamen Eltern neu zuordnen.

beans_complete_tasks

Alle Markdown-Checklisten-Aufgaben innerhalb eines Beans als erledigt markieren.

beans_delete

Ein oder mehrere Beans löschen (beanId oder beanIds, optional force).

beans_reopen

Ein abgeschlossenes oder verworfenes Bean wieder in einen aktiven Status versetzen.

beans_query

Vereinheitlichte Liste/Suche/Filter/Sortierung/Bereitschaftsoperationen, mit GraphQL-Durchleitung.

beans_bean_file

Dateien unter .beans lesen/bearbeiten/erstellen/löschen.

beans_output

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 entweder some-bean.md oder .beans/some-bean.md übergeben, das Ergebnis ist dasselbe.

  • beans_update ersetzt viele feingranulare Update-Tools; Aufrufer sollten es verwenden, um die öffentliche Tool-Oberfläche klein und vorhersagbar zu halten.

  • beans_archive bietet CLI-Parität zum Archivieren abgeschlossener/verworfener Beans.

  • Das Schließen eines Eltern-Beans über beans_update (status: completed oder status: 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_create und beans_bulk_update arbeiten 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_file unterstützt update_frontmatter für atomare Frontmatter-Only-Schreibvorgänge; unterstützte Felder umfassen pr und branch.

  • Ungefilterte Listenergebnisse werden mit einer kurzen Burst-TTL und einer Timestamp-Probe-Aktualisierungsstrategie zwischengespeichert. Mutationstools (beans_create, beans_update, beans_delete usw.) invalidieren den Cache sofort.

  • Versionsabweichungen zwischen beans-mcp und der Beans CLI sind standardmäßig nur warnend und nicht blockierend.

  • Wenn beanId in 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"
}

description wird als veralteter Alias für body akzeptiert.

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 mit bodyAppend oder bodyReplace in 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-mcp

Beispiel

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 transport

API

createBeansMcpServer(opts)

Erstellt und initialisiert eine Beans MCP Server-Instanz.

Optionen:

  • workspaceRoot (string): Pfad zum Beans-Workspace

  • cliPath (string, optional): Pfad zur Beans-CLI-Executable (Standard: 'beans')

  • name (string, optional): Servername (Standard: 'beans-mcp-server')

  • version (string, optional): Serverversion

  • logDir (string, optional): Verzeichnis für Server-Logs

  • backend (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 parsen

  • isPathWithinRoot(root: string, target: string): boolean: Prüfen, ob ein Pfad innerhalb des Root liegt

  • sortBeans(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.md

  • Veröffentlichtes Skill-Artefakt: https://beans-mcp.self.agency/.well-known/agent-skills/beans-mcp/SKILL.md

  • Veröffentlichter Discovery-Index: https://beans-mcp.self.agency/.well-known/agent-skills/index.json

  • Kompatibel 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

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
5dRelease cycle
10Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    C
    maintenance
    A 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.
    19
    24
    2
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    MCP server for integrating Linear with Claude Code and other MCP clients. Enables issue management, project planning, and status tracking through a set of tools.
  • A
    license
    -
    quality
    A
    maintenance
    A 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.
    73
    1
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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