图像生成MCP服务器

一个基于Model Context Protocol (MCP)的最小化服务器,提供从文本提示生成图像的功能,支持通过Stripe或Walleot进行支付。

  • by PayMCP
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 blustAI/node-paymcp-server-demo

使用说明

图像生成器MCP服务器(paymcp演示)

最低限度 模型上下文协议(MCP) 公开单个工具的服务器, generate,它从文本提示中创建图像并将其作为base64编码的PNG返回 MCP资源。服务器演示如何制作 已支付 MCP工具使用 paymcp 条纹或钱包。


此repo显示了什么

  • 如何接线 paymcp 进入MCP服务器并为工具设定价格。
  • 一个可以扩展的付费单用途MCP工具的最小形状。
  • 如何为MCP服务器提供服务 流式HTTP 使用Express(POST/GET/DELETE到 /mcp).

需求

  • Node.js 18+
  • OpenAI API密钥:set OPENAI_API_KEY
  • 条纹密钥(可选):set STRIPE_SECRET_KEY 如果你想启用Stripe支付(测试密钥适合开发)
  • 钱包API密钥(可选):set WALLEOT_API_KEY 如果你想尝试Walloot而不是Stripe,可以在代码中取消对提供者的注释

安装

# clone the repo
pnpm install

这个项目是TypeScript。使用你喜欢的跑步者(例如。, tsx, ts-node)如果您创建了自定义入口点,则在引导服务器进程时。


配置

设置环境变量(例如通过 .env 你的跑步者加载,或通过你的外壳):

export OPENAI_API_KEY="sk-..."
# Optional, if using Stripe
export STRIPE_SECRET_KEY="sk_test_..."
# Optional, if using Walleot (then uncomment provider in the server code)
export WALLEOT_API_KEY="..."

支付提供商已在中配置 installPayMCP 在服务器代码中:

installPayMCP(server, {
  providers: {
    // "walleot": { apiKey: process.env.WALLEOT_API_KEY ?? "" }, // Uncomment to enable Walleot
    "stripe": { apiKey: process.env.STRIPE_SECRET_KEY ?? "" },
  },
  mode: mode.ELICITATION,
});

付款通知: Stripe每笔交易都有最低收费。如果你的工具价格低于 $2.00,更喜欢 沃洛特小额Stripe支付可能会失败或不经济。

运作原理

  • 服务器注册一个工具 generate:
    • 输入: { prompt: string }
    • 价格: $2.00 每次调用(在代码中配置;根据需要更改)
    • 输出:MCP资源类型 image 使用base64编码的PNG数据
  • 内部调用 generateImage(prompt) 从 src/services/openai.ts,它使用官方的OpenAI SDK,请求一个图像,并返回一个 base64 弦。

该工具返回如下响应:

{
  "content": [
    {
      "type": "image",
      "data": "<base64>",
      "mimeType": "image/png",
      "annotations": {
        "audience": ["user"],
        "priority": 0.9
      }
    }
  ]
}

运行服务器(HTTP/Streamable HTTP)

此服务器已连接到使用Express通过HTTP运行 流式HTTP服务器传输.

使用包脚本

# dev with tsx watch
pnpm dev

# build TypeScript -> build/
pnpm build

# start compiled server from build/
pnpm start

默认情况下,它会监听 PORT (默认为 5004):

http://localhost:5004/mcp

  • MCP检查员:

    1. 启动此服务器(pnpm dev)所以它一直在听 http://localhost:5004/mcp.
    2. 在新终端中,运行:
      npx @modelcontextprotocol/inspector@latest
      
    3. 打开Inspector打印的URL(例如。, http://localhost:5173).
    4. 点击 添加服务器 → 选择 流式HTTP → 将URL设置为 http://localhost:5004/mcp → 连接.
    5. 在工具列表中,选择 生成,提供a prompt,并运行它以接收base64 PNG。
  • 演示客户端:在此处尝试配套聊天客户端:https://github.com/Walleot/walleot-demo-chat


定制

  • 变更价格:in server.registerTool 更新 price: { amount: 2, currency: "USD" }。如果您使用 条纹,将价格设置为高于Stripe的最低价格;对于价格 低于2.00美元,更喜欢 沃洛特.
  • 更改输出:调整 src/services/openai.ts 如果你想要URL而不是base64、更大的大小、不同的格式等。当前函数有意保持最小值,并始终返回base64 PNG字符串。
  • 掉期支付提供商:通过切换提供者块和密钥从Stripe切换到Walloot。

许可证

麻省理工学院

包管理器注意事项:此repo声明 packageManager: pnpm上述示例使用 pnpm。如果您更喜欢其他选项,请使用: npm run dev|build|start 或 yarn dev|build|start.