Skip to main content
Glama

MCP Geometry Server

README.md4.99 kB
# @luorivergoddess/mcp-geo An MCP (Model Context Protocol) server for generating precise geometric images using Asymptote. This server allows AI models compatible with MCP to request image generation by providing Asymptote code. ## Prerequisites Before using this server, please ensure you have the following installed: 1. **Node.js**: Version 16.x or higher is recommended. You can download it from [nodejs.org](https://nodejs.org/). 2. **Asymptote**: This is a critical dependency. The `asy` command-line tool must be installed and accessible in your system's PATH. * Visit the [Asymptote official website](https://asymptote.sourceforge.io/) for download and detailed installation instructions. * Common installation methods: * **macOS (via Homebrew):** `brew install asymptote` * **Debian/Ubuntu Linux:** `sudo apt-get install asymptote` * **Windows:** Often installed as part of TeX distributions like MiKTeX or TeX Live. Ensure the Asymptote `bin` directory is added to your PATH. * The server will attempt to check for `asy -version` on startup and print an error if it's not found. ## Installation To install this package globally (if you intend to run `connect` command directly) or as a dependency in another project: ```bash npm install @luorivergoddess/mcp-geo ``` If you've cloned the repository and want to run it locally for development: 1. Clone the repository. 2. Install dependencies: `npm install` 3. Build the project: `npm run build` ## Usage ### Starting the Server Once the package is installed (e.g., globally or linked locally), you can start the MCP server using the `connect` command provided by this package. This command is intended to be invoked by an MCP client. ```bash npx @luorivergoddess/mcp-geo connect ``` Or, if you have cloned the repository and built it: ```bash node dist/cli.js ``` The server will start and listen for JSON-RPC messages on stdin/stdout, using the `@modelcontextprotocol/sdk`. ### MCP Client Integration Configure your MCP-compatible client (e.g., VS Code with Copilot Agent Mode, Claude Desktop) to use this server. This usually involves telling the client how to start the server, which would be the `npx @luorivergoddess/mcp-geo connect` command. ### Available Tool: `renderGeometricImage` The server exposes one primary tool: * **Name:** `renderGeometricImage` * **Description:** Renders an image from Asymptote code. * **Input Schema:** ```json { "type": "object", "properties": { "asyCode": { "type": "string", "description": "A string containing complete and valid Asymptote code to be compiled. The server executes this code directly. Ensure necessary `import` statements (e.g., `import graph;`) and settings (e.g., `unitsize(1cm);`) are included within this code block if needed." }, "outputParams": { "type": "object", "description": "Optional parameters to control the output image.", "properties": { "format": { "type": "string", "enum": ["svg", "png"], "description": "The desired output image format. \"svg\" for scalable vector graphics (recommended for diagrams and plots), \"png\" for raster graphics. Defaults to \"svg\" if not specified." }, "renderLevel": { "type": "number", "description": "For PNG output only. Specifies the rendering quality (supersampling level for antialiasing). Higher values (e.g., 4 or 8) produce smoother images but take longer to render and result in larger files. Asymptote default is 2. This server defaults to 4 if not specified and format is \"png\". Ignored for SVG output." } } } }, "required": ["asyCode"] } ``` * **Output:** The tool returns a `CallToolResult` containing an array of content parts. * If successful, it includes an `ImageContent` part with: * `type: "image"` * `mimeType: "image/svg+xml"` or `"image/png"` * `data: "<base64_encoded_image_data>"` * It may also include a `TextContent` part with logs from Asymptote. * If an error occurs, it throws an `McpError`. **Example `renderGeometricImage` call (JSON for `arguments` field):** ```json { "asyCode": "draw(unitsquare); fill(unitsquare, lightblue);", "outputParams": { "format": "png", "renderLevel": 4 } } ``` **Client Compatibility Notes:** * Some MCP clients may have limitations on supported image MIME types. * For instance, if you are using this server with a client that does not support `image/svg+xml` (e.g., certain versions or configurations of "Cherry Studio" as reported), please ensure you request the `png` format by including `"outputParams": { "format": "png" }` in your tool call arguments. The server defaults to `svg` if no format is specified. ## Author luorivergoddess ## License ISC

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/Luorivergoddess/mcp-geo'

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