hermes-backup/daily/2026-04-28_203212/skills/devops/arifos-fastmcp-app-tool-debug/SKILL.md
Debug why FastMCPApp tools don't appear in tools/list — visibility=["app"] filter in FastMCP 3.2.0
npx skillsauth add ariffazil/openclaw-workspace arifos-fastmcp-app-tool-debugInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
add_provider(fastmcp_app) succeeds silently, provider shows in mcp.providers, but mcp.list_tools() returns zero tools from that provider.
FastMCP 3.2.0 server.py:185 — _is_model_visible() filters out any tool whose meta.ui.visibility == ["app"].
FastMCPApp registers all its tools with visibility=["app"] so they appear in app UIs but are stripped from MCP tools/list responses to clients.
def _is_model_visible(tool: Tool) -> bool:
visibility = tool.meta.get("ui", {}).get("visibility", [])
if not isinstance(visibility, list):
return True
return "model" in visibility # ["app"] → returns False
mcp.list_tools() — count tools from the appmcp.providers — confirm app is registeredfastmcp/server/server.py:185 — check _is_model_visible()await fastmcp_app_instance.list_tools() directly — if it returns tools, the issue IS visibility filteringDo NOT use add_provider() for tools that must be visible to MCP clients. Instead wire them directly:
from arifosmcp.apps.command_center.some_app import some_handler
def _cc_tool_wrapper(*args, **kwargs) -> dict:
return some_handler(*args, **kwargs)
mcp.tool(name="tool_name")(_cc_tool_wrapper)
command_center FastMCPApp has 7 dashboard tools (session_status, ops_vitals, judge_action, etc.)add_provider(command_center_app) silently produced 0 visible toolsmcp server using mcp.tool(name="...")(handler_func)import asyncio
from arifosmcp.server import mcp
async def check():
tools = await mcp.list_tools()
print(f'Total: {len(tools)}') # should be 20 (13 canonical + 7 CC)
asyncio.run(check())
arifosmcp/server.py — _is_model_visible() filter at line ~185arifosmcp/apps/command_center/app.py — FastMCPApp with 7 toolsfastmcp/server/providers/aggregate.py — AggregateProvider._list_tools() aggregates from all providersdevelopment
Federation-wide gold (XAUUSD) trading capability. Python stack, OANDA broker, backtesting, macro signals, RSI strategy. Every organ has a role.
development
Capital claim state management — tracks claim lifecycle across WEALTH organ.
development
Archived constitutional warga placeholder retained only for audit provenance. Do not use for active work; use the live arifOS governance and constitutional skills instead.
testing
Warga (citizen) agent skills for AAA federation members. See subdirectories for specialized warga skills.