Archives 2025

Introducing Model Context Protocol server

 

turtleSpaces MCP (Model Context Protocol) Integration

Overview

turtleSpaces supports the Model Context Protocol (MCP), enabling AI assistants like Claude and Gemini to interact directly with the Logo programming environment. This integration allows AI models to read, write, and execute Logo code, capture graphics output, and manage projects.

Command Line Options

To enable MCP mode in turtleSpaces, use the following command line options:

  • -mcp – Enable MCP server mode
  • -mcp-port <port> – Set the MCP server port (default: 1967)

You can also start the MCP from the File menu…

Example Usage

# Start turtleSpaces with MCP enabled on default port 1967
./turtleSpaces -mcp

# Start turtleSpaces with MCP on custom port 8080
./turtleSpaces -mcp -mcp-port 8080

MCP Configuration

For Claude (via claude_cli or similar)

Create or update your MCP configuration file (typically ~/.config/claude/mcp.json or similar):

{
    "mcpServers": {
        "turtleSpaces": {
            "url": "http://localhost:1967/mcp/sse",
            "type": "sse",
            "description": "turtleSpaces MCP server with SSE transport"
        }
    }
}

For Gemini CLI

Add to your Gemini MCP configuration:

{
    "servers": {
        "turtleSpaces": {
            "endpoint": "http://localhost:1967/mcp/sse",
            "transport": "sse",
            "name": "turtleSpaces Logo Environment"
        }
    }
}

Available MCP Tools

The turtleSpaces MCP server provides the following tools for AI interaction:

Core Tools

  • app_name – Returns the name of the application
  • execute_command – Executes a Logo command in the interpreter
  • break – Breaks execution and clears the command prompt

Workspace Management

  • read_workspace – Reads the current Logo workspace procedures
  • write_workspace – Loads Logo workspace code
  • read_proc – Reads a specific procedure from a turtle
  • write_proc – Creates or updates a Logo procedure

Turtle Management

  • get_turtles – Returns a list of all turtles in the workspace
  • get_current_turtle – Returns the current active turtle

Screen and Graphics

  • get_graphics_screen – Captures the current graphics screen and saves it as a PNG file
  • get_text_screen – Returns the text content of the screen buffer

Help and Documentation

  • get_help – Returns help information for a Logo command
  • get_commands – Returns all available Logo commands and functions

Project Management

  • user_list_projects – Returns a list of user projects with name and description
  • user_load_project – Loads a user project by name
  • user_save_project – Saves the current project
  • examples_list_projects – Returns a list of example projects with ID, name, description and tags
  • examples_load_project – Loads an example project by ID

Example AI Assistant Usage

Once configured, AI assistants can interact with turtleSpaces using natural language. Here are some example interactions:

User: "Draw a square with side length 100"
AI: [Uses execute_command to run: REPEAT 4 [FORWARD 100 RIGHT 90]]

User: "Show me what's on the screen"
AI: [Uses get_graphics_screen to capture and display the current graphics]

User: "Create a procedure to draw a hexagon"
AI: [Uses write_proc to create: TO HEXAGON :SIZE
       REPEAT 6 [FORWARD :SIZE RIGHT 60]
     END]

User: "Load the fractal example"
AI: [Uses examples_list_projects to find fractal examples, then examples_load_project to load one]

Troubleshooting

  1. Connection Issues: Ensure turtleSpaces is running with the -mcp flag before attempting to connect
  2. Port Conflicts: If port 1967 is in use, specify a different port with -mcp-port
  3. SSE Transport: The MCP server uses Server-Sent Events (SSE) transport – ensure your AI client supports this

Security Considerations

  • The MCP server listens on localhost by default
  • No authentication is required for local connections
  • Be cautious when exposing the MCP port to external networks

Recent turtleSpaces Updates (May 2025)

Hello turtleLand! 

We’ve added a ‘Live Coding’ option under the Settings menu that when enabled will allow updates to the code space without terminating the running process, meaning you can make changes to the code and see how they affect the already running worker.

We’ve made buttons, stickers and overlays work in the web IDE (and hence again in the application, which is now a wrapped version of the Web IDE with a native ‘backend’ (the engine that does all the complex stuff).

We’ve added additional primitives around the random number generator: SETRANDOM x chooses a random number generator, RERANDOM resets the currently selected random number generator. ADVANCERANDOM x advances the selected RNG by x values, SETRANDOMSEED allows you to select the seed used by the RNG to replicate results.

We’ve added BeepBox instrument support to the PLAYNOTES primitive, check out the help for SETINSTRUMENT for more details.

You can now record MP4 format videos instead of WEBM. If you provide a list to SAVEMP4 [duration frameskip] you can skip frames.

The PERLINNOISE, SETPERLIN and PERLIN primitives are used to create 1, 2 and 3D Perlin noise values, an advanced form of randomness useful for designs and games.

SHADER, NOSHADER, SETSHADERRESOLUTION, SETSHADERPALETTE etc. allow for the use of a pixel shader. 

You can create splines using the SPLINE primitive, also PINSPLINE and SPLINEPOS

There are new functions for allowing you to access MIDI keyboards