nicegui component
This commit is contained in:
@@ -27,10 +27,53 @@ def _register_components(mcp: FastMCP, registry: DocsRegistry) -> None:
|
||||
return read_docs_markdown_path(registry, path)
|
||||
|
||||
|
||||
def _register_resource_tools(mcp: FastMCP) -> None:
|
||||
@mcp.tool(
|
||||
name="list_resources",
|
||||
description=(
|
||||
"List available MCP resources and URI templates. Use before read_resource to discover skill guidance."
|
||||
),
|
||||
annotations=_ro_annotations(),
|
||||
)
|
||||
async def list_resources() -> dict[str, list[dict[str, str | None]]]:
|
||||
resources = await mcp.list_resources()
|
||||
templates = await mcp.list_resource_templates()
|
||||
return {
|
||||
"resources": [
|
||||
{
|
||||
"uri": str(resource.uri),
|
||||
"name": resource.name,
|
||||
"description": resource.description,
|
||||
"mime_type": resource.mime_type,
|
||||
}
|
||||
for resource in resources
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"uri_template": template.uri_template,
|
||||
"name": template.name,
|
||||
"description": template.description,
|
||||
"mime_type": template.mime_type,
|
||||
}
|
||||
for template in templates
|
||||
],
|
||||
}
|
||||
|
||||
@mcp.tool(
|
||||
name="read_resource",
|
||||
description="Read a resource URI returned by list_resources, including skill files, manifests, and references.",
|
||||
annotations=_ro_annotations(),
|
||||
)
|
||||
async def read_resource(uri: str) -> dict[str, object]:
|
||||
result = await mcp.read_resource(uri)
|
||||
return result.model_dump(mode="json", exclude_none=True)
|
||||
|
||||
|
||||
def create_mcp() -> FastMCP:
|
||||
registry = get_docs_registry()
|
||||
mcp = FastMCP("personal-mcp", on_duplicate="error")
|
||||
_register_components(mcp, registry)
|
||||
mcp.add_provider(create_prompts_provider())
|
||||
mcp.add_provider(create_skills_provider())
|
||||
_register_resource_tools(mcp)
|
||||
return mcp
|
||||
|
||||
Reference in New Issue
Block a user