85e0501705
Second slice of Issues + Systems (spec #825). New mcp/tools/systems.py: create_system, list_systems, get_system (records split into issues/tasks/notes), update_system (incl. archive via status), list_system_records (kind/open_only filters), delete_system. Registered in register_all; read tools (get_system, list_systems, list_system_records) added to the read-only-key allowlist (write tools default-deny). create_task/update_task: kind now accepts 'issue'; new system_ids (set-semantics associations) and arose_from_id (provenance, 0=unchanged/-1=clear) args. create_note/update_note: new system_ids arg (notes associate with systems too). services/notes.create_note: arose_from_id passthrough (update_note already handles it via setattr). Tests: MCP system tools + create_task issue-wiring (kind/provenance/systems), service layer mocked. Refs plan 825 (S2). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
848 B
Python
28 lines
848 B
Python
"""MCP tool implementations.
|
|
|
|
Each tool module exposes a `register(mcp)` function that attaches its tools
|
|
to a FastMCP instance. `register_all(mcp)` is the single entry point called
|
|
from `mcp.server.build_mcp_server`.
|
|
"""
|
|
from scribe.mcp.tools import (
|
|
entities, events, milestones, notes, processes, projects, recent, repos, rulebooks, search, systems, tags, tasks, trash,
|
|
)
|
|
|
|
|
|
def register_all(mcp) -> None:
|
|
"""Register every tool module's tools on the given FastMCP instance."""
|
|
search.register(mcp)
|
|
notes.register(mcp)
|
|
tasks.register(mcp)
|
|
projects.register(mcp)
|
|
milestones.register(mcp)
|
|
systems.register(mcp)
|
|
events.register(mcp)
|
|
tags.register(mcp)
|
|
recent.register(mcp)
|
|
entities.register(mcp)
|
|
repos.register(mcp)
|
|
processes.register(mcp)
|
|
rulebooks.register(mcp)
|
|
trash.register(mcp)
|