resource pattern

This commit is contained in:
John Lancaster
2026-06-18 19:38:57 -05:00
parent dbaaad8df8
commit d54f427112
11 changed files with 290 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
from pathlib import Path
from typing import Any
import yaml
from fastmcp import FastMCP
catalog_server = FastMCP("catalog")
def _skills_dir() -> Path:
return Path(__file__).resolve().parents[1] / "skills"
def _load_skill_registry() -> dict[str, Any]:
registry: dict[str, Any] = {}
for metadata_path in sorted(_skills_dir().glob("*/metadata.yaml")):
with metadata_path.open("r", encoding="utf-8") as handle:
metadata = yaml.safe_load(handle) or {}
skill_key = metadata_path.parent.name
registry[skill_key] = {
"namespace": skill_key,
"metadata": metadata,
}
return registry
@catalog_server.resource("resource://catalog/skills_index")
def skills_index() -> dict[str, Any]:
"""Return a compact discovery index for all available pattern modules."""
registry = _load_skill_registry()
index = []
for key, entry in registry.items():
metadata = entry["metadata"]
index.append(
{
"namespace": key,
"id": metadata.get("id", key),
"name": metadata.get("name", key),
"version": metadata.get("version", "0.1.0"),
"capabilities": metadata.get("capabilities", []),
"tags": metadata.get("tags", []),
}
)
return {"patterns": index}
@catalog_server.resource("resource://catalog/skills_details")
def skills_details() -> dict[str, Any]:
"""Return full metadata for all mounted pattern modules."""
return {"patterns": _load_skill_registry()}