返回市场
麦克佩奥地质

麦克佩奥地质

作者:Luorivergoddess4 星标更新:2025-05-10

项目介绍

@luorivergoddess/mcp-geo

这是一个使用Asymptote生成精确几何图像的MCP(模型上下文协议)服务器。此服务器允许与MCP兼容的AI模型通过提供Asymptote代码来请求图像生成。

使用前准备

在使用此服务器之前,请确保您已安装以下内容:

  1. Node.js: 推荐版本16.x或更高。可以从nodejs.org下载。
  2. Asymptote: 这是一个关键依赖项。asy命令行工具必须安装并可在系统PATH中访问。
    • 访问Asymptote官方网站以获取下载和详细安装说明。
    • 常见安装方法:
      • macOS (通过Homebrew): brew install asymptote
      • Debian/Ubuntu Linux: sudo apt-get install asymptote
      • Windows: 经常作为TeX发行版的一部分安装,如MiKTeX或TeX Live。确保将Asymptote的bin目录添加到您的PATH中。
    • 服务器启动时会尝试检查asy -version,如果未找到则会打印错误信息。

安装

要全局安装此包(如果您打算直接运行connect命令)或将其作为另一个项目的依赖项安装:

npm install @luorivergoddess/mcp-geo

如果您已经克隆了仓库并且想要本地运行进行开发:

  1. 克隆仓库。
  2. 安装依赖项:npm install
  3. 构建项目:npm run build

使用

启动服务器

一旦安装了该包(例如,全局安装或本地链接),您可以使用此包提供的connect命令启动MCP服务器。此命令旨在由MCP客户端调用。

npx @luorivergoddess/mcp-geo connect

或者,如果您已经克隆了仓库并进行了构建:

node dist/cli.js

服务器将启动并监听stdin/stdout上的JSON-RPC消息,使用@modelcontextprotocol/sdk

MCP客户端集成

配置与MCP兼容的客户端(例如,VS Code与Copilot Agent模式,Claude Desktop)以使用此服务器。这通常涉及告诉客户端如何启动服务器,即npx @luorivergoddess/mcp-geo connect命令。

可用工具:renderGeometricImage

服务器暴露一个主要工具:

  • 名称: renderGeometricImage
  • 描述: 根据Asymptote代码渲染图像。
  • 输入模式:
    {
      "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>"
    • 它还可以包括一个带有Asymptote日志的TextContent部分。
    • 如果发生错误,它将抛出一个McpError

示例 renderGeometricImage 调用(JSON格式的arguments字段):

{
  "asyCode": "draw(unitsquare); fill(unitsquare, lightblue);",
  "outputParams": {
    "format": "png",
    "renderLevel": 4
  }
}

客户端兼容性注意事项:

  • 某些MCP客户端可能对支持的图像MIME类型有限制。
  • 例如,如果您使用的是不支持image/svg+xml的客户端(例如,据报道某些版本或配置的“Cherry Studio”),请确保在工具调用参数中包含"outputParams": { "format": "png" }以请求png格式。如果未指定格式,服务器默认为svg

作者

luorivergoddess

许可证

ISC