使用说明
图像生成器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检查员:
- 启动此服务器(
pnpm dev)所以它一直在听http://localhost:5004/mcp. - 在新终端中,运行:
npx @modelcontextprotocol/inspector@latest - 打开Inspector打印的URL(例如。,
http://localhost:5173). - 点击 添加服务器 → 选择 流式HTTP → 将URL设置为
http://localhost:5004/mcp→ 连接. - 在工具列表中,选择 生成,提供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.