这是一个使用Asymptote生成精确几何图像的MCP(模型上下文协议)服务器。此服务器允许与MCP兼容的AI模型通过提供Asymptote代码来请求图像生成。
在使用此服务器之前,请确保您已安装以下内容:
asy命令行工具必须安装并可在系统PATH中访问。
brew install asymptotesudo apt-get install asymptotebin目录添加到您的PATH中。asy -version,如果未找到则会打印错误信息。要全局安装此包(如果您打算直接运行connect命令)或将其作为另一个项目的依赖项安装:
npm install @luorivergoddess/mcp-geo
如果您已经克隆了仓库并且想要本地运行进行开发:
npm installnpm run build一旦安装了该包(例如,全局安装或本地链接),您可以使用此包提供的connect命令启动MCP服务器。此命令旨在由MCP客户端调用。
npx @luorivergoddess/mcp-geo connect
或者,如果您已经克隆了仓库并进行了构建:
node dist/cli.js
服务器将启动并监听stdin/stdout上的JSON-RPC消息,使用@modelcontextprotocol/sdk。
配置与MCP兼容的客户端(例如,VS Code与Copilot Agent模式,Claude Desktop)以使用此服务器。这通常涉及告诉客户端如何启动服务器,即npx @luorivergoddess/mcp-geo connect命令。
renderGeometricImage服务器暴露一个主要工具:
renderGeometricImage{
"type": "object",
"properties": {
"asyCode": {
"type": "string",
"description": "包含完整的有效Asymptote代码字符串,用于编译。服务器直接执行此代码。如果需要,请确保在代码块中包括必要的`import`语句(例如,`import graph;`)和设置(例如,`unitsize(1cm);`)。"
},
"outputParams": {
"type": "object",
"description": "可选参数,用于控制输出图像。",
"properties": {
"format": {
"type": "string",
"enum": ["svg", "png"],
"description": "所需的输出图像格式。「svg」用于可缩放矢量图形(推荐用于图表和绘图),「png」用于光栅图形。如果没有指定,默认为「svg」。"
},
"renderLevel": {
"type": "number",
"description": "仅适用于PNG输出。指定渲染质量(抗锯齿的超采样级别)。更高的值(例如,4或8)会产生更平滑的图像,但渲染时间更长且文件更大。Asymptote默认值为2。如果未指定且格式为「png」,此服务器默认为4。对于SVG输出,此选项被忽略。"
}
}
}
},
"required": ["asyCode"]
}
CallToolResult。
ImageContent部分,其中包含:
type: "image"mimeType: "image/svg+xml" 或 "image/png"data: "<base64_encoded_image_data>"TextContent部分。McpError。示例 renderGeometricImage 调用(JSON格式的arguments字段):
{
"asyCode": "draw(unitsquare); fill(unitsquare, lightblue);",
"outputParams": {
"format": "png",
"renderLevel": 4
}
}
客户端兼容性注意事项:
image/svg+xml的客户端(例如,据报道某些版本或配置的“Cherry Studio”),请确保在工具调用参数中包含"outputParams": { "format": "png" }以请求png格式。如果未指定格式,服务器默认为svg。luorivergoddess
ISC