{"name":"io.github.dfch/biz-dfch-specmgr","slug":"dfch-biz-dfch-specmgr","title":"SpecMgr","description":"An artifact manager for system specifications.","url":"https://mcp.market/server/dfch-biz-dfch-specmgr","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":1,"forks":0,"downloads_week":581,"last_push_at":"2026-09-19T15:06:51.000Z","license":"AGPL-3.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/dfch/biz.dfch.SpecMgr","website":"https://github.com/dfch/biz.dfch.SpecMgr#readme","version":"0.29.0","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"biz-dfch-specmgr","version":"0.29.0","runtimeHint":"uvx","transport":{"type":"stdio"},"runtimeArguments":[{"description":"Install with the 'mcp' extra so the MCP server dependencies (mcp SDK) are available; the base package alone has no MCP support.","value":"biz-dfch-specmgr[mcp]","type":"named","name":"--from"},{"value":"python","type":"positional"}],"packageArguments":[{"value":"-m","type":"positional"},{"value":"biz.dfch.specmgr","type":"positional"},{"value":"mcp","type":"positional"}],"environmentVariables":[{"description":"Transport mode for the MCP server.","default":"stdio","choices":["stdio","sse"],"name":"SPECMGR_MCP_TRANSPORT"},{"description":"Bind address, SSE transport only.","default":"localhost","name":"SPECMGR_MCP_HOST"},{"description":"TCP port, SSE transport only.","format":"number","default":"8000","name":"SPECMGR_MCP_PORT"},{"description":"Base directory scanned for Architecture Decision Record (.md) files.","format":"filepath","default":"docs/adr","name":"SPECMGR_ADR_DIR"},{"description":"Shared base directory root for the document-type domains that do not have their own dedicated directory environment variable (req, uc, tsk, qa, prb, gol, rsk, dec, sop, vcr, sysrs). Each domain's own subdirectory is appended automatically, e.g. docs/req.","format":"filepath","default":"docs","name":"SPECMGR_DOCS_DIR"},{"description":"Base directory scanned for Feature folders (<base>/<id>/README.md).","format":"filepath","default":".specmgr/feat","name":"SPECMGR_FEAT_DIR"}]}],"tools":[{"name":"_lifespan","description":"Placeholder lifespan: no shared state to initialise yet.","write_action":false,"price_micros":0,"input_schema":null},{"name":"_schema_type_str","description":"Render a single JSON Schema property as a short type string.","write_action":false,"price_micros":0,"input_schema":null},{"name":"_to_summary","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"adr_get","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"body_text","description":"Return the frontmatter-stripped body text of the document at ``path``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_adr","description":"Return instructional text for drafting a new ADR about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_adr_test","description":"Return step-gated instructional text for drafting a new ADR about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_dec","description":"Create and write a new decision document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_feat","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_gol","description":"Create and write a new goal document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_prb","description":"Create and write a new problem statement document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_qa","description":"Return instructional text for drafting a new QA document about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_req","description":"Return instructional text for drafting a new requirement about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_risk","description":"Return instructional text for drafting a new risk about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_rsk","description":"Create and write a new risk document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_sop","description":"Create and write a new SOP document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_sysrs","description":"Create and write a new System Requirements Specification document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_task","description":"Return instructional text for drafting a new task list about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tsk","description":"Create and write a new task list document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_uc","description":"Return instructional text for drafting a new use case about ``topic``.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_vcr","description":"Create and write a new verification case record document.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete","description":"Permanently delete an existing document from disk, across the whole-body domains.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_adr","description":"Read and return the ADR identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dec","description":"Read and return the decision identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dec_example","description":"Return the packaged DEC example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dec_template","description":"Return the packaged DEC template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feat","description":"Read and return the feature identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feat_example","description":"Return the packaged FEAT example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_feat_template","description":"Return the packaged FEAT template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_gol","description":"Read and return the goal identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_gol_example","description":"Return the packaged GOL example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_gol_template","description":"Return the packaged GOL template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_prb","description":"Read and return the problem statement identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_prb_example","description":"Return the packaged PRB example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_prb_template","description":"Return the packaged PRB template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_qa","description":"Read and return the Question and Answer (QA) document identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_qa_example","description":"Return the packaged QA example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_qa_template","description":"Return the packaged QA template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_req","description":"Read and return the requirement identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_req_example","description":"Return the packaged REQ example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_req_template","description":"Return the packaged REQ template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_rsk","description":"Read and return the risk identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_rsk_example","description":"Return the packaged RSK example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_rsk_template","description":"Return the packaged RSK template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sop","description":"Read and return the SOP identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sop_example","description":"Return the packaged SOP example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sop_template","description":"Return the packaged SOP template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sysrs","description":"Read and return the System Requirements Specification identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sysrs_example","description":"Return the packaged SYSRS example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sysrs_template","description":"Return the packaged SYSRS template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tsk","description":"Read and return the task list identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tsk_example","description":"Return the packaged TSK example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tsk_template","description":"Return the packaged TSK template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_uc","description":"Read and return the use case identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_uc_example","description":"Return the packaged UC example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_uc_template","description":"Return the packaged UC template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_vcr","description":"Read and return the verification case record identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_vcr_example","description":"Return the packaged VCR example's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_vcr_template","description":"Return the packaged VCR template's full markdown text, verbatim.","write_action":false,"price_micros":0,"input_schema":null},{"name":"implement_task","description":"Return instructional text for working the checklist of the task list identified by ``id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_adr","description":"Return one page of one-line ADR summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_dec","description":"Return one page of one-line decision summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_feat","description":"Return one page of one-line feature summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_gol","description":"Return one page of one-line goal summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_prb","description":"Return one page of one-line problem-statement summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_qa","description":"Return one page of one-line QA document summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_req","description":"Return one page of one-line requirement summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_rsk","description":"Return one page of one-line risk summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sop","description":"Return one page of one-line SOP summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_sysrs","description":"Return one page of one-line System Requirements Specification summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tsk","description":"Return one page of one-line task-list summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_uc","description":"Return one page of one-line use-case summaries from the configured base directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_by_id","description":"Resolve ``id_`` under ``base_dir`` and read the matching feature document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mdformat","description":"Format the markdown file at ``path`` in place.","write_action":false,"price_micros":0,"input_schema":null},{"name":"option_create","description":"Append a new 'Option N: ...' sub-section (plan §5), returning its assigned full title.","write_action":true,"price_micros":0,"input_schema":null},{"name":"option_delete","description":"Remove the option named full_title (plan §5), returning the remaining full titles.","write_action":true,"price_micros":0,"input_schema":null},{"name":"option_list","description":"Full titles of every current 'Option N: ...' sub-section, in document order (plan §5).","write_action":false,"price_micros":0,"input_schema":null},{"name":"option_read","description":"Return the current content of the option named full_title (plan §5).","write_action":false,"price_micros":0,"input_schema":null},{"name":"option_update","description":"Full-content replace of the option named full_title (plan §5), returning the new content.","write_action":true,"price_micros":0,"input_schema":null},{"name":"packaged_data_path","description":"Return the ``Traversable`` for ``{type_name}/data/{type_name}_{kind}.{ext}``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_dec","description":"Parse the decision file at ``path`` into a :class:`DecDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_feat","description":"Parse the feature file at ``path`` into a :class:`FeatDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_gol","description":"Parse the goal file at ``path`` into a :class:`GolDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_prb","description":"Parse the problem statement file at ``path`` into a :class:`PrbDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_qa","description":"Parse the QA file at ``path`` into a :class:`QaDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_req","description":"Parse the requirement file at ``path`` into a :class:`ReqDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_rsk","description":"Parse the risk file at ``path`` into a :class:`RskDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_sop","description":"Parse the SOP file at ``path`` into a :class:`SopDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_sysrs","description":"Parse the System Requirements Specification file at ``path`` into a :class:`SysrsDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_tsk","description":"Parse the task list file at ``path`` into a :class:`TskDocument`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"parse_uc","description":"Parse a use-case markdown file (YAML frontmatter + body) from disk into a structured document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_adr","description":"Read and parse the ADR at ``path`` (plan §7's \"re-read, re-parse\").","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_classification","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_feat_id","description":"Rename the feature identified by ``id`` to ``new_id``.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_status","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"update","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_frontmatter","description":"Whole-object replace of an ADR's frontmatter (plan §3), preserving its existing id.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_section","description":"Whole-section replace/delete of one AdrBody field (plan §4).","write_action":true,"price_micros":0,"input_schema":null},{"name":"validate","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_adr","description":"Re-read and re-parse an ADR by id, letting the models' own Pydantic validators run.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T19:53:13.754Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:53:13.716Z","components":{"code":{"score":25,"max":25,"notes":["492 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"biz-dfch-specmgr","version":"0.29.0","found":true,"weeklyDownloads":581,"license":"AGPL-3.0-or-later","dependencyCount":25,"publishedAt":"2026-09-19T15:07:58.602459Z","repositoryUrl":"https://github.com/dfch/biz.dfch.SpecMgr.git"}],"repo":{"found":true,"owner":"dfch","repo":"biz.dfch.SpecMgr","archived":false,"pushedAt":"2026-09-19T15:06:51Z","stars":1,"forks":0,"openIssues":23,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/8310360?v=4","ownerCreatedAt":"2014-07-30T13:33:51Z","license":"AGPL-3.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/8310360?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":1,"forks":0,"downloadsWeek":581,"license":"AGPL-3.0","lastPushAt":"2026-09-19T15:06:51.000Z","score":35}}}},"grade_history":[],"reviews":[]}