Conducted MCP
Stateless advisor + validator for Conducted Development: kickoff, artifact validation, rule checks.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (4)
- HIGH
- MEDIUMen validate_artifact
- MEDIUMen decision_log_guidance
- INFOen validate_artifact
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"conducted-mcp": {
"command": "npx",
"args": [
"conducted-mcp"
]
}
}
}Paquetes ejecutables
0.1.1stdioPuntos de conexión remotos
https://conducted-mcp.jonathanmostov.workers.dev/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (7)
🟢validate_artifact(artifact_type, content)
Strictly check whether a Conducted Development artifact's text satisfies the methodology's required structure. Supply the artifact's type and its full text (the server never reads files). Returns { valid, missing, warnings }: `missing` lists required sections that are absent, empty, or contain only unmodified template placeholder text (blocking); `warnings` lists sections that are present but look thin (advisory, non-blocking). `valid` is true iff `missing` is empty.
Esquema de entrada
{
"type": "object",
"properties": {
"artifact_type": {
"type": "string",
"enum": [
"goal_brief",
"intent_doc",
"session_log",
"standup"
],
"description": "Which artifact to validate."
},
"content": {
"type": "string",
"description": "The full markdown text of the artifact to validate."
}
},
"required": [
"artifact_type",
"content"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴kickoff_questions(project_type, detected)
Return the branched kickoff interview (DECISIONS.md D3/D4). Supply `project_type`: 'greenfield' asks the full set; 'brownfield' uses the agent-supplied `detected` facts (language, framework, tests, CI, existing docs) to pre-fill candidates and drop fully-inferable questions — except LOCKED_DOCS, which is always asked because it is human judgment. Returns { project_type, questions, inferred, notes }; the server reads no files.
Esquema de entrada
{
"type": "object",
"properties": {
"project_type": {
"type": "string",
"enum": [
"greenfield",
"brownfield"
],
"description": "'greenfield' or 'brownfield'."
},
"detected": {
"type": "object",
"properties": {
"project_name": {
"type": "string"
},
"language": {
"type": "string"
},
"framework": {
"type": "string"
},
"test_framework": {
"type": "string"
},
"ci": {
"type": "string"
},
"package_manager": {
"type": "string"
},
"existing_docs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"description": "Facts the agent detected by inspecting the repo (brownfield only)."
}
},
"required": [
"project_type"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪kickoff_plan(project_type, answers, detected, existing)
Assemble, from the bundled templates, the four `_template.md` copies (front-matter tokens replaced), `decision-log.md`, and a filled `AGENT_CONVENTIONS.md` (kickoff guide Steps 2–5). Supply `project_type`, the interview `answers`, optional `detected` (brownfield pre-fill fallback), and optional `existing` (the agent's inventory of files already present). Returns { files: [{ path, content, action }], missing, open_questions, warnings }. The plan is ready iff `missing` is empty (D5 strict); a file with any unresolved {{…}} token is reported in `missing`. Idempotent: already-present files are 'review'/'skip', never overwritten. The server returns content + paths only — it writes nothing (Model C, D2/D6).
Esquema de entrada
{
"type": "object",
"properties": {
"project_type": {
"type": "string",
"enum": [
"greenfield",
"brownfield"
],
"description": "'greenfield' or 'brownfield'."
},
"answers": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"description": "Confirmed interview answers keyed by token id (e.g. PROJECT_NAME, LOCKED_DOCS)."
},
"detected": {
"type": "object",
"properties": {
"project_name": {
"type": "string"
},
"language": {
"type": "string"
},
"framework": {
"type": "string"
},
"test_framework": {
"type": "string"
},
"ci": {
"type": "string"
},
"package_manager": {
"type": "string"
},
"existing_docs": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"description": "Facts the agent detected by inspecting the repo (brownfield only)."
},
"existing": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false,
"description": "Agent inventory of files already present in the target (for idempotent re-runs)."
}
},
"required": [
"project_type",
"answers"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪next_procedure(phase, facts)
Return the ordered procedure for where the agent is in the methodology loop. Supply `phase` (one of: kickoff, goal_brief, intent_doc, session_open, session_active, session_close, standup) and optional `facts` (e.g. a ticket id) to tailor the output. Returns { steps, reads_first, escalation_points, notes? } sourced from the bundled guides and conventions — the procedure half of advisor + validator. The server reads no files.
Esquema de entrada
{
"type": "object",
"properties": {
"phase": {
"type": "string",
"enum": [
"kickoff",
"goal_brief",
"intent_doc",
"session_open",
"session_active",
"session_close",
"standup"
],
"description": "Which phase of the methodology loop the agent is in."
},
"facts": {
"type": "object",
"properties": {
"ticket": {
"type": "string"
},
"work_dir": {
"type": "string"
},
"goal_brief": {
"type": "string"
}
},
"additionalProperties": false,
"description": "Optional facts to weave into the procedure (e.g. ticket id, work dir)."
}
},
"required": [
"phase"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪standup_due(gate_reached, dependency_intersection, working_days_since_last_standup, last_standup_date, today)
Given agent-supplied facts, decide whether a standup is due. Triggers in priority order: a deliverable gate reached → 'gate'; else a dependency intersection → 'intersection'; else more than five working days since the last standup → 'weekly'; else 'none'. Working days are an input (the working week varies by team), never computed from a calendar. Returns { due, reason, detail }.
Esquema de entrada
{
"type": "object",
"properties": {
"gate_reached": {
"type": "boolean"
},
"dependency_intersection": {
"type": "boolean"
},
"working_days_since_last_standup": {
"type": "number"
},
"last_standup_date": {
"type": "string"
},
"today": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evaluate_gate(gates, content)
Encode the goal-brief rule that no session may begin while any gate is open. Supply either a structured `gates` list ([{ id, resolved }]) or a goal-brief `content` string, in which case the GATE LIST checkboxes (- [ ] / - [x]) are parsed. Returns { all_resolved, unresolved, may_begin } where may_begin === all_resolved. The server reads no files — the content is agent-supplied.
Esquema de entrada
{
"type": "object",
"properties": {
"gates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"resolved": {
"type": "boolean"
}
},
"required": [
"id",
"resolved"
],
"additionalProperties": false
},
"description": "Structured gate list."
},
"content": {
"type": "string",
"description": "A goal-brief markdown string whose GATE LIST is parsed."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡decision_log_guidance(escalation_fired, gate_resolved_cross_cutting, affects_multiple_tickets, override_architectural, confined_to_one_session)
Encode the Decision-Log 'when to use it' rules. Set whichever apply: `escalation_fired`, `gate_resolved_cross_cutting`, `affects_multiple_tickets`, `override_architectural`, `confined_to_one_session`. Returns { should_log, reason, entry_template? }; when should_log is true the Context/Trigger/Decision/Rationale/Affects skeleton is returned. A decision confined to one session does not need an entry — the session notes suffice.
Esquema de entrada
{
"type": "object",
"properties": {
"escalation_fired": {
"type": "boolean"
},
"gate_resolved_cross_cutting": {
"type": "boolean"
},
"affects_multiple_tickets": {
"type": "boolean"
},
"override_architectural": {
"type": "boolean"
},
"confined_to_one_session": {
"type": "boolean"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia