Installed MCP entry points serve the wrong framework or nothing: `darnit serve` picks the alphabetically first framework, and the plugin runner calls a nonexistent `darnit-mcp` executable
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- build-system, cli
Línea de trabajo
Start by tracing the default selection in packages/darnit/src/darnit/cli.py and the runner commands in packaging/claude-plugin/templates/darnit-mcp-runner and plugin.json; compare them with the console-script declaration in packages/darnit/pyproject.toml and the meta-package pyproject.toml. Reproduce the reported commands, then check release-smoke.yml’s runner check; done means installed configs launch successfully and bare serve has an intentional framework-selection behavior.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Two defects in how the MCP server is launched from installed configs:
darnit servewith no--frameworkand no config path serveslist_available_frameworks()[0], which is sorted by name. With the publisheddarnit-mcpmeta-package (darnit-baseline, darnit-gittuf, darnit-reproducibility) that isgittuf, notopenssf-baseline.darnit installwrites exactly that bare command into the client config, so the skills'audit_openssf_baselinetool is absent. In the dev workspace it resolves tocommunity-spec.- The Claude Code plugin runner executes
uvx --from darnit-mcp==$V darnit-mcp(andpipx run darnit-mcp==$V).darnit-mcpis a metadata-only wheel with no console scripts; the only script,darnit, lives indarnit-core. The runner also passes noservesubcommand (plugin.jsonargs are[]).
Impact
A user following either install path gets an MCP server for the wrong framework, or none. The skills then report "no audit tools" or audit against an unintended standard.
Evidence
- Default selection: cli.py#L948-L952; sorted list: registry.py#L378
darnit installentry: cli.py#L616-L619- Runner: darnit-mcp-runner#L30, #L36; plugin.json#L15-L16
- Only script defined: packages/darnit/pyproject.toml#L49-L50; meta-package has none: pyproject.toml#L32-L41
release-smoke.ymlL573 runsdarnit-mcp-runner --helpand would fail on the next plugin release.
Reproduction
$ uvx --from darnit-mcp==0.1.0 darnit-mcp --help
Package `darnit-mcp` does not provide any executables. (exit 1)
$ uvx --from darnit-mcp==0.1.0 python -c "from darnit.config import list_available_frameworks as f; print(f())"
['gittuf', 'openssf-baseline', 'reproducibility']
The published darnit_mcp-0.1.0-py3-none-any.whl contains only dist-info files and no entry_points.txt. Expected: the runner starts a server, and a bare darnit serve serves an intended framework. Actual: the runner fails; darnit serve serves gittuf.
Suggested direction
- Make
servewithout--frameworkeither fail with the list of choices or serve all installed frameworks; havedarnit installwrite an explicit--framework(or config path). - Give
darnit-mcpadarnit-mcpconsole script (or change the runner to--from darnit-mcp==$V darnit serve --framework ...), and add a smoke test that runs the runner against a built wheel before release. - Related: #229, #231, #389.
- Lenguaje dominante
- Python
- Estrellas
- 22
- Forks
- 27
- Merge medio
- 2 d 28 min
- PR fusionados (30 d)
- 40
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de darnitdevorg/darnit
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
darnitdevorg/darnit#589 ·
Los mantenedores suelen responder en 1 día
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
darnitdevorg/darnit#587 ·
Los mantenedores suelen responder en 1 día
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
darnitdevorg/darnit#585 ·
Los mantenedores suelen responder en 1 día
-
quality
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
darnitdevorg/darnit#523 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
darnitdevorg/darnit#516 ·
Los mantenedores suelen responder en 1 día
Todos los issues de darnitdevorg/darnit
Issues similares
-
area: agents area: docs good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
openapi/gknowledge#23 ·
-
get() for StrEnumPosiblemente ocupada @FeJo5952 la tomó hoy. Abiertogood first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
collective/icalendar#1921 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Improvement Python Spans
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
getsentry/sentry-python#7994 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
alphagov/notifications-api#5004 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
equinor/radix-flux#3922 ·
Los mantenedores suelen responder en 1 día