Skip to content

Server API#

MCP server implementation and internal functions for the SousChef tool.

Overview#

The souschef.server module provides the MCP (Model Context Protocol) server implementation that exposes multi-platform migration and upgrade tools to AI assistants like Claude Desktop and GitHub Copilot.

MCP Framework

SousChef uses FastMCP to implement the Model Context Protocol server. Tools are registered using the @mcp.tool() decorator.


MCP Tools#

See the MCP Tools Reference for complete documentation of all available MCP tools with usage examples.


Usage Examples#

Basic Server Startup#

from souschef.server import mcp

# MCP server starts automatically when module is imported
# or can be run directly:
if __name__ == "__main__":
    mcp.run()

Tool Registration Pattern#

from mcp import FastMCP

mcp = FastMCP("SousChef")

@mcp.tool()
def my_chef_tool(cookbook_path: str) -> str:
    """Parse a Chef cookbook.

    Args:
        cookbook_path: Path to the cookbook directory

    Returns:
        Analysis results as formatted text
    """
    # Implementation
    return results

Calling Tools from Python#

from souschef.server import parse_recipe, convert_recipe_to_playbook

# Parse a recipe
analysis = parse_recipe("/path/to/recipe.rb")
print(analysis)

# Convert to playbook
playbook = convert_recipe_to_playbook("/path/to/recipe.rb")
print(playbook)

Error Handling#

All MCP tools follow consistent error handling:

try:
    result = parse_recipe(recipe_path)
    return result
except FileNotFoundError:
    return f"Error: Recipe file not found: {recipe_path}"
except Exception as e:
    return f"An error occurred: {e}"

Error Messages

MCP tools return error messages as strings rather than raising exceptions. This ensures AI assistants receive actionable feedback.


Type Safety#

All tools use Python type hints for parameters and return values:

def parse_recipe(recipe_path: str, format: str = "text") -> str:
    """Type-safe function signature."""
    pass

Benefits: - IDE autocomplete and IntelliSense - Static type checking with mypy - Better documentation - Reduced runtime errors


Testing#

See the test suite for examples of testing MCP tools:


See Also#