Skip to main content
Glama
jankowtf

MCP Server Template for Cursor IDE

by jankowtf

apply_prompt_initial

Generates an initial project prompt template in Cursor IDE, enabling developers to define objectives and include specific instructions for streamlined project initiation.

Instructions

Provides an initial prompt template for starting a new project

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
objectiveYesA description of the objective of the project
specific_instructionsNoOptional specific instructions to include in the prompt
versionNoThe version of the prompt template to use (e.g., '1.0.0', '1.1.0', or 'latest')

Implementation Reference

  • The primary handler function implementing the logic for the 'apply_prompt_initial' tool. It renders the 'init' prompt template using the provided objective, specific instructions, and version.
    async def apply_prompt_initial( objective: str, specific_instructions: str = "", version: str = "latest", ) -> list[types.TextContent]: """ Provides an initial prompt template for starting a new coding objective. Args: objective: A description of the overall objective. specific_instructions: Optional specific instructions to include in the prompt. version: The version of the prompt template to use. Defaults to "latest". Returns: A list containing a TextContent object with the prompt. """ # Render the prompt template with the objective and specific instructions response_text = render_prompt_template( "init", version_str=version, objective=objective, specific_instructions=specific_instructions, ) return [types.TextContent(type="text", text=response_text)]
  • The tool schema definition including input schema, required parameters, and descriptions, registered in the list_tools() function.
    types.Tool( name="apply_prompt_initial", description="Provides an initial prompt template for starting a new project", inputSchema={ "type": "object", "required": ["objective"], "properties": { "objective": { "type": "string", "description": "A description of the objective of the project", }, "specific_instructions": { "type": "string", "description": "Optional specific instructions to include in the prompt", }, "version": { "type": "string", "description": "The version of the prompt template to use (e.g., '1.0.0', '1.1.0', or 'latest')", }, }, }, ),
  • The dispatch logic within the main @app.call_tool() handler that routes calls to 'apply_prompt_initial' and validates inputs before invoking the handler.
    elif name == "apply_prompt_initial": if "objective" not in arguments: return [ types.TextContent( type="text", text="Error: Missing required argument 'objective'" ) ] version = arguments.get("version", "latest") specific_instructions = arguments.get("specific_instructions", "") return await apply_prompt_initial( objective=arguments["objective"], specific_instructions=specific_instructions, version=version, )
  • Supporting utility function called by the handler to load, version-resolve, parse metadata, and render the Jinja2 prompt template.
    def render_prompt_template( template_name: str, version_str: str = "latest", **kwargs: Any ) -> str: """ Render a prompt template with the given variables. Args: template_name: The name of the prompt template. version_str: The version of the template to use. Defaults to "latest". **kwargs: The variables to pass to the template. Returns: str: The rendered prompt template. Raises: FileNotFoundError: If the template file does not exist. jinja2.exceptions.TemplateError: If there is an error rendering the template. ValueError: If the specified version does not exist. """ _build_version_registry() # Check if the template exists if template_name not in _version_registry: raise FileNotFoundError(f"Template not found: {template_name}") # Resolve the version if version_str == "latest": version_str = _version_registry[template_name].get("latest") if not version_str: raise ValueError(f"No versions found for template: {template_name}") elif version_str not in _version_registry[template_name]: # Try to find the closest version available_versions = get_template_versions(template_name) if not available_versions: raise ValueError(f"No versions found for template: {template_name}") # Find the highest version that is less than or equal to the requested version requested_ver = version.parse(version_str) for v in available_versions: if version.parse(v) <= requested_ver: version_str = v break else: # If no suitable version is found, use the oldest version version_str = available_versions[-1] # Get the filename from the registry filename = _version_registry[template_name][version_str] # Build the template path template_path = f"prompts/{template_name}/{filename}" # Load the template content content = load_template(template_path) # Parse the metadata and template content metadata, template_content = _parse_template_metadata(content) # Create a new template with just the content (without the front matter) env = get_template_env() template = env.from_string(template_content) # Render the template return template.render(**kwargs)

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/jankowtf/mcp-hitchcode'

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