generate_coordinate
Generate random coordinate points in any dimensional space using specified value ranges. Ideal for game object positioning, particle systems, map generation, and spatial sampling in applications like 3D modeling or terrain mapping.
Instructions
Random Coordinate Generator
Generate random coordinate points in a specified dimensional space, each dimension has its own value range.
Supports coordinate generation in any number of dimensions.
Args:
dimensions (int): Number of coordinate dimensions (1D, 2D, 3D, etc.)
min_values (List[float]): List of minimum values for each dimension
max_values (List[float]): List of maximum values for each dimension
coordinate_count (int): Number of coordinate points to generate
salt (str, optional): Random number salt value for increased randomness. Defaults to "".
Returns:
str: JSON string containing random coordinates, formatted as:
{
"requestId": "Generated request ID",
"coordinates": [
[x1, y1, z1, ...], # First point coordinates
[x2, y2, z2, ...], # Second point coordinates
...
]
}
Application Scenarios:
1. Game object positioning (NPC locations, item distribution)
2. Particle systems (effect generation, particle distribution)
3. Map generation (terrain height, resource distribution)
4. Spatial sampling (3D modeling, spatial analysis)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| coordinate_count | Yes | ||
| dimensions | Yes | ||
| max_values | Yes | ||
| min_values | Yes | ||
| salt | No |
Implementation Reference
- main.py:266-298 (handler)The handler function for the 'generate_coordinate' tool, decorated with @mcp.tool() for registration. It defines the input parameters, documentation, and delegates execution to the coordinate_generator helper in utils.py.@mcp.tool() async def generate_coordinate(dimensions: int, min_values: List[float], max_values: List[float], coordinate_count: int, salt: str = "") -> str: """Random Coordinate Generator Generate random coordinate points in a specified dimensional space, each dimension has its own value range. Supports coordinate generation in any number of dimensions. Args: dimensions (int): Number of coordinate dimensions (1D, 2D, 3D, etc.) min_values (List[float]): List of minimum values for each dimension max_values (List[float]): List of maximum values for each dimension coordinate_count (int): Number of coordinate points to generate salt (str, optional): Random number salt value for increased randomness. Defaults to "". Returns: str: JSON string containing random coordinates, formatted as: { "requestId": "Generated request ID", "coordinates": [ [x1, y1, z1, ...], # First point coordinates [x2, y2, z2, ...], # Second point coordinates ... ] } Application Scenarios: 1. Game object positioning (NPC locations, item distribution) 2. Particle systems (effect generation, particle distribution) 3. Map generation (terrain height, resource distribution) 4. Spatial sampling (3D modeling, spatial analysis) """ return await coordinate_generator(dimensions, min_values, max_values, coordinate_count, salt)
- utils.py:543-582 (helper)The core implementation of coordinate generation. Fetches blockchain randomness, derives seed, seeds numpy RNG, and generates uniform random coordinates within specified bounds for each dimension and point.async def coordinate_generator(dimensions: int, min_values: List[float], max_values: List[float], coordinate_count: int, salt: str="") -> Dict: """ Random coordinate generator Generate random coordinates in specified dimensional space Args: dimensions: Number of dimensions min_values: Minimum values for each dimension max_values: Maximum values for each dimension coordinate_count: Number of coordinates to generate salt: Optional salt value for additional randomness Returns: Dict containing generated coordinates """ if len(min_values) != dimensions or len(max_values) != dimensions: raise ValueError("Dimension arrays must match specified dimensions") random_num = await get_random_str() if not random_num: return {"error": "Failed to get random number"} request_id = generate_request_id(random_num) seed = _derive_seed(request_id, salt) np.random.seed(seed) coordinates = [] for _ in range(coordinate_count): point = [] for dim in range(dimensions): point.append(float(np.random.uniform(min_values[dim], max_values[dim]))) coordinates.append(point) result = { "requestId": request_id, "coordinates": coordinates } return result