Skip to main content
Glama

faf_agents

Export agent documentation from .faf files to create universal context files compatible with OpenAI Codex, Cursor, and other AI development tools.

Instructions

Export AGENTS.md content from a .faf file. Generates a universal agent context file compatible with OpenAI Codex, Cursor, and other AI tools. Write the output to AGENTS.md in the project root.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoproject.faf

Implementation Reference

  • The main faf_agents tool handler function. Exports AGENTS.md content from a .faf file. Takes a path parameter (default 'project.faf'), parses and validates the file, then generates markdown content with project info, context, and stack. Returns a dict with success status, content, or error message.
    @mcp.tool()
    def faf_agents(path: str = "project.faf") -> dict:
        """Export AGENTS.md content from a .faf file.
        Generates a universal agent context file compatible with OpenAI Codex, Cursor, and other AI tools.
        Write the output to AGENTS.md in the project root."""
        try:
            faf = parse_file(path)
            data = faf.data
            result = validate(faf)
    
            md = f"""# AGENTS.md — {data.project.name}
    
    ## Project
    - **Name:** {data.project.name}
    - **Goal:** {data.project.goal or 'Not specified'}
    - **Language:** {data.project.main_language or 'Not specified'}
    - **FAF Score:** {result.score}%
    
    ## Instructions for AI Agents
    - This project uses FAF (Foundational AI-context Format)
    - Read project.faf for complete project DNA
    - Media Type: application/vnd.faf+yaml (IANA registered)
    """
    
            if data.human_context:
                md += f"""
    ## Context
    - **Who:** {data.human_context.who or 'Not specified'}
    - **What:** {data.human_context.what or 'Not specified'}
    - **Why:** {data.human_context.why or 'Not specified'}
    """
    
            if data.stack:
                md += f"""
    ## Stack
    - **Frontend:** {data.stack.frontend or 'N/A'}
    - **Backend:** {data.stack.backend or 'N/A'}
    - **Database:** {data.stack.database or 'N/A'}
    - **Testing:** {data.stack.testing or 'N/A'}
    """
            return {"success": True, "content": md}
        except FileNotFoundError:
            return {"success": False, "error": f"File not found: {path}"}
        except FafParseError as e:
            return {"success": False, "error": str(e)}
  • server.py:270-270 (registration)
    Tool registration via @mcp.tool() decorator. This registers the faf_agents function as an MCP tool with FastMCP, making it discoverable and callable by MCP clients.
    @mcp.tool()
  • server.py:20-24 (registration)
    FastMCP server instance creation. Creates the 'mcp' object with name 'gemini-faf-mcp', version, and instructions. The @mcp.tool() decorator registers tools with this server instance.
    mcp = FastMCP(
        "gemini-faf-mcp",
        version=__version__,
        instructions="FAF — Universal AI context from IANA-registered .faf files",
    )
  • Import statements for faf_sdk functions and FafParseError. These external SDK functions (parse_file, validate) are core helpers used by faf_agents to parse and validate .faf files.
    from faf_sdk import parse_file, parse, validate, find_faf_file, stringify
    from faf_sdk.parser import FafParseError
    from models import get_model, list_models

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Wolfe-Jam/gemini-faf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server