64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
"""
|
|
Project Tools for Unreal MCP.
|
|
|
|
This module provides tools for managing project-wide settings and configuration.
|
|
"""
|
|
|
|
import logging
|
|
from typing import Dict, Any
|
|
from mcp.server.fastmcp import FastMCP, Context
|
|
|
|
# Get logger
|
|
logger = logging.getLogger("UnrealMCP")
|
|
|
|
def register_project_tools(mcp: FastMCP):
|
|
"""Register project tools with the MCP server."""
|
|
|
|
@mcp.tool()
|
|
def create_input_mapping(
|
|
ctx: Context,
|
|
action_name: str,
|
|
key: str,
|
|
input_type: str = "Action"
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Create an input mapping for the project.
|
|
|
|
Args:
|
|
action_name: Name of the input action
|
|
key: Key to bind (SpaceBar, LeftMouseButton, etc.)
|
|
input_type: Type of input mapping (Action or Axis)
|
|
|
|
Returns:
|
|
Response indicating success or failure
|
|
"""
|
|
from unreal_mcp_server import get_unreal_connection
|
|
|
|
try:
|
|
unreal = get_unreal_connection()
|
|
if not unreal:
|
|
logger.error("Failed to connect to Unreal Engine")
|
|
return {"success": False, "message": "Failed to connect to Unreal Engine"}
|
|
|
|
params = {
|
|
"action_name": action_name,
|
|
"key": key,
|
|
"input_type": input_type
|
|
}
|
|
|
|
logger.info(f"Creating input mapping '{action_name}' with key '{key}'")
|
|
response = unreal.send_command("create_input_mapping", params)
|
|
|
|
if not response:
|
|
logger.error("No response from Unreal Engine")
|
|
return {"success": False, "message": "No response from Unreal Engine"}
|
|
|
|
logger.info(f"Input mapping creation response: {response}")
|
|
return response
|
|
|
|
except Exception as e:
|
|
error_msg = f"Error creating input mapping: {e}"
|
|
logger.error(error_msg)
|
|
return {"success": False, "message": error_msg}
|
|
|
|
logger.info("Project tools registered successfully") |