برنامه نویسی

🧠🥷 چگونه می توان MEME تولید MCP (Cline and Cursor) را تولید کرد

مقدمه

سلام! من توسعه دهنده وب نینجا هستم. سلام-یاه! 🥷

من بوده ام بازی با اخیراً مطالعه MCP. ↓
– چگونه می توان AI Avatar 2 را کنترل کرد (Vroid MCP + Cline و مکان نما + وحدت)
🧠🥷 چگونه می توان بازی نینجا خنک (Unity MCP + Blender MCP (Cline and Cursor))
چگونه نینجا خنک (مخلوط کن MCP (Cline and Cursor))

اول ، من یک تولید تصویر و ویرایش برنامه وب Next.js ایجاد کردم.
🧠🥷GEMINI API 2 (تولید و ویرایش تصویر (رایگان و سریع))
در مرحله بعد ، من آن را به تولید تصویر و ویرایش MCP تغییر دادم.
– چگونه می توان تولید تصویر و ویرایش MCP (Gemini API + Cline و مکان نما)
بنابراین این بار ، من آن را به Meme تولید MCP تغییر می دهم!
خوب بیایید شروع کنیم!

الگوی رفتاری چیست؟

Meme یک پدیده فرهنگی است که در اینترنت پخش می شود ، مانند تصاویر خنده دار ، فیلم ها و متن.
افرادی که تماشا می کنند ، مزایایی خواهند داشت ، مانند کاهش استرس ، خواب خوب و از پایین قلب می خندند.

در اینجا مصاحبه هایی است که Meme را تماشا کرده اند.

توسعه دهنده وب C: بعد از تماشای Meme ، مغز کوچک قدیمی من کاملاً جدید است و می توانم راه هایی برای حل اشکالات موجود در کد پیدا کنم.

*توجه: تأثیر Meme تفاوت های فردی دارد.

در هنگام تهیه MEME MCP.

اول ، من یک الگوی الگوی معروف را تهیه کردم.
با این حال ، من می خواستم از کپی غیرقانونی خودداری کنم ، بنابراین آن را به سبک انیمه تغییر دادم.
شرح تصویر
من هنوز فکر می کردم خیلی شبیه به الگوی اصلی است ، بنابراین من مارک پرش سیاه را در تی شرت حذف کردم و رنگ مو و لباس را تغییر دادم. ↓
شرح تصویر
برای این ویرایش ها ، من از تولید تصویر خود استفاده کردم و MCP یا برنامه ای را که دفعه قبل ساخته ام ، ویرایش کردم.

رئوس مطالب

این سیستم یک ساختار سه لایه ساده دارد.
Cline یا مکان نما → MCP → Next.JS برنامه وب
1⃣ CLINE یا CURSOR PART دستورالعمل را به MCP ارسال می کند.
قسمت 2 ⃣ MCP دستورالعمل را به برنامه وب Next.js منتقل می کند.
3⃣ Next.js قسمت برنامه وب Meme را در مرورگر نمایش می دهد.
خوب بیایید Meme MCP را تنظیم کنیم.

نحوه تنظیم برنامه Next.js

1⃣ یک پروژه Next.js را بسازید

npx create-next-app@latest
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

https://nextjs.org/docs/app/getting-started/installation

2⃣ کدها را تنظیم کنید
کد Frontend (App/Page.tsx)

"use client";

import { useState, useEffect } from "react";

export default function Home() {
  const [noText, setNoText] = useState("");
  const [yesText, setYesText] = useState("");
  const [error, setError] = useState<string | null>(null);

  const fetchMemeText = async () => {
    setError(null);
    try {
      const response = await fetch("/api/generate-meme", {
        method: "GET",
      });

      if (!response.ok) {
        const errorText = await response.text();
        throw new Error(
          `HTTP error! status: ${response.status}, body: ${errorText}`
        );
      }

      const data = await response.json();
      if (data.receivedText) {
        setNoText(data.receivedText.noText);
        setYesText(data.receivedText.yesText);
      }
    } catch (error) {
      console.error("Error fetching meme text:", error);
      const errorMessage =
        error instanceof Error ? error.message : "An unknown error occurred";
      setError(errorMessage);
    }
  };

  useEffect(() => {
    const intervalId = setInterval(() => {
      fetchMemeText();
    }, 4000);

    return () => clearInterval(intervalId);
  }, []);

  return (
    <div className="flex flex-col items-center justify-center min-h-screen py-2">
      <h1 className="text-6xl font-bold mb-4">Meme Generating MCPh1>

      {error && <p className="text-red-500">Error: {error}p>}

      {noText && yesText && (
        <div>
          <div className="flex items-center">
            <img src="/template_no.png" alt="template_no" className="mr-4" />
            <p className="text-6xl font-bold">{noText}p>
          div>
          <div className="flex items-center">
            <img src="/template_yes.png" alt="template_yes" className="mr-4" />
            <p className="text-6xl font-bold">{yesText}p>
          div>
        div>
      )}
    div>
  );
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کد تولید Meme (APP/API/GENERE-MEME/ROUTE.TS)

import { NextResponse } from "next/server";

let storedNoText: string = "";
let storedYesText: string = "";

export async function POST(request: Request) {
  try {
    const { noText, yesText } = await request.json();
    console.log("Received text in Next.js API:", { noText, yesText });

    storedNoText = noText;
    storedYesText = yesText;

    return NextResponse.json({
      message: "Text received successfully",
      receivedText: { noText, yesText },
    });
  } catch (error) {
    console.error("Error processing request in Next.js API:", error);
    const errorMessage =
      error instanceof Error ? error.message : "An unknown error occurred";
    return NextResponse.json(
      {
        message: "Error processing request",
        error: errorMessage,
      },
      { status: 500 }
    );
  }
}

export async function GET(request: Request) {
  return NextResponse.json({
    message: "Text retrieved successfully",
    receivedText: { noText: storedNoText, yesText: storedYesText },
  });
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تنظیم کردن template_no.png وت template_yes.png درون public پوشه
template_no.png ↓
شرح تصویر
template_yes.png ↓
شرح تصویر

نحوه تنظیم MEME MCP

1⃣ پوشه ای برای سرور Meme MCP درست کنید و آن را از ویرایشگر خود باز کنید.

2 ساختن package.json.

npm init
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3⃣ نصب MCP SDK.

npm install @modelcontextprotocol/sdk
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4⃣ ساخت tsconfig.json.

tsc --init
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

5⃣ اضافه کردن "build": "tsc", به scripts از package.jsonبشر

6⃣ اضافه کردن index.ts از سرور Meme MCP. ↓

#!/usr/bin/env node
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
  CallToolRequestSchema,
  ErrorCode,
  ListToolsRequestSchema,
  McpError,
} from "@modelcontextprotocol/sdk/types.js";

class MemeServer {
  private server: Server;

  constructor() {
    this.server = new Server(
      {
        name: "meme-mcp-server",
        version: "0.1.0",
      },
      {
        capabilities: {
          resources: {},
          tools: {},
        },
      }
    );

    this.setupToolHandlers();

    this.server.onerror = (error) => console.error("[MCP Error]", error);
    process.on("SIGINT", async () => {
      await this.server.close();
      process.exit(0);
    });
  }

  private setupToolHandlers() {
    this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: "generate_meme",
          description:
            "Generates a meme by sending text to the Next.js backend.",
          inputSchema: {
            type: "object",
            properties: {
              noText: {
                type: "string",
                description:
                  "The text to display at the top of the meme (No text).",
              },
              yesText: {
                type: "string",
                description:
                  "The text to display at the bottom of the meme (Yes text).",
              },
            },
            required: ["noText", "yesText"],
          },
        },
      ],
    }));

    this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
      if (request.params.name === "generate_meme") {
        const { noText, yesText } = request.params.arguments as {
          noText: string;
          yesText: string;
        };

        try {
          const response = await fetch(
            "http://localhost:3000/api/generate-meme",
            {
              method: "POST",
              headers: {
                "Content-Type": "application/json",
              },
              body: JSON.stringify({ noText, yesText }),
            }
          );

          return {
            content: [
              {
                type: "text",
                text: "Meme generated successfully",
              },
            ],
          };
        } catch (error: any) {
          console.error("Error calling Next.js API:", error);
          return {
            content: [
              {
                type: "text",
                text: `Error generating meme: ${error.message}`,
              },
            ],
            isError: true,
          };
        }
      }
      throw new McpError(
        ErrorCode.MethodNotFound,
        `Unknown tool: ${request.params.name}`
      );
    });
  }

  async run() {
    const transport = new StdioServerTransport();
    await this.server.connect(transport);
    console.error("Meme MCP server running on stdio");
    console.log("mcp ok!");
  }
}

const server = new MemeServer();
server.run().catch(console.error);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

7 ساخت index.ts به index.js.

run npm build
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

8 ⃣ مجموعه cline_mcp_settings.json برای کلین و mcp.json برای مکان نما. ↓

{
  "mcpServers": {
    "meme-mcp-server": {
      "command": "node",
      "args": ["path to index.js"]
    }
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نحوه استفاده

1⃣ npm run dev، و برنامه Next.js را شروع کنید و دسترسی داشته باشید http://localhost:3000بشر

2⃣ از مجموعه یا مکان نما خود بخواهید که یک الگوی رفت و آمد ایجاد کند.
به عنوان مثال ،

Use "generate_meme" tool of "meme-mcp-server",
 and send "noText": “Before watching Meme Monday”
 and “yesText”: “After watching Meme Monday”.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

3⃣ یا از مجموعه یا مکان نما خود بخواهید که به جای شما یکی از متن ها را فکر کند.
به عنوان مثال ،

Use "generate_meme" tool of "meme-mcp-server",
 and send "noText": “”
 and “yesText”: “After watching Meme Monday”. 
Think the noText part and fill in the text.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

4⃣ یا از مجموعه یا مکان نما خود بخواهید که به جای شما هر دو متن را فکر کنید.
به عنوان مثال ،

Use "generate_meme" tool of "meme-mcp-server",
 and send "noText": “Before watching Meme Monday”
 and “yesText”: “After watching Meme Monday”. 
Think unique and humorous texts and replace noText and yesText.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شرح تصویر

5⃣ بله! ما می توانیم از cline و مکان نما یاد بگیریم.

پیشرفت های آینده

اگر الگوهای دیگری وجود داشته باشد ، سرگرم کننده تر خواهد بود.
به عنوان مثال
شرح تصویر
نمونه متن

Boy: Web Developer
Girl in right: Concentrate on Work
Girl in left: Watch Meme Monday.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2⃣ ساخت تصویر Meme توسط AI نیز سرگرم کننده خواهد بود.

دیگر

Meme در زندگی روزمره ما شادی و خوشبختی کمی برای ما به ارمغان می آورد.
چیزهای بی اهمیت در اطراف ما ممکن است ایده خوبی برای یک یادداشت جدید باشد.

امیدوارم از این پست چیزی یاد بگیرید ، یا شاید چیزی یاد نگیرید اما کمی لذت ببرید.
از خواندن شما متشکرم
کد نویسی AI مبارک! 🤖 سلام-یاه!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا