Ubah Node.js REST API Anda menjadi server MCP yang siap AI

 – Beragampengetahuan
8 mins read

Ubah Node.js REST API Anda menjadi server MCP yang siap AI – Beragampengetahuan

Pengembangan model bahasa besar (LLM) dan agen AI memerlukan perubahan mendasar dalam cara aplikasi mengekspos fungsionalitasnya. REST API tradisional dirancang untuk komunikasi antar perangkat lunak, mengharuskan pengembang membaca dokumentasi dan menulis kode integrasi khusus. Model Context Protocol (MCP) adalah standar terbuka yang bertujuan untuk memecahkan masalah ini dengan menciptakan antarmuka terpadu yang dapat dibaca mesin sehingga agen kecerdasan buatan dapat menemukan dan berinteraksi secara dinamis.

Artikel ini memberikan panduan komprehensif untuk mengonversi REST API Node.js yang ada ke server MCP menggunakan TypeScript SDK resmi, dengan fokus pada perubahan arsitektur dan kasus penggunaan utama yang dihasilkan oleh konversi ini.

Contents

Pergeseran Paradigma: Dari REST ke MCP

REST API biasanya dirancang dengan mempertimbangkan pengembang manusia, mengoptimalkan manajemen sumber daya (operasi CRUD) melalui kata kerja HTTP, variabel jalur, dan format permintaan/respons tertentu.

Sebaliknya, model MCP mengutamakan AI:

aspek REST API (warisan) Server MCP (kecerdasan buatan terlebih dahulu)

konsumen utama

Pengembang manusia, aplikasi klien

Agen AI, LL.M., IDE yang Didukung AI

antarmuka

Kata kerja HTTP, jalur, parameter kueri, badan khusus

Pesan JSON-RPC standar (alat, sumber daya, tips)

Menemukan

Operasi manual melalui dokumentasi OpenAPI/Swagger

Melalui dinamika protokol list_tools() atau list_resources()

Fungsional

Titik akhir atomik yang granular (GET /users/{id})

Operasi semantik tingkat lanjut (manage_user_profile)

Konversi bukanlah pelabuhan langsung; itu adalah abstraksi. Anda dapat menggabungkan logika bisnis Node.js yang ada dengan lapisan MCP, yang mengubah panggilan MCP standar menjadi permintaan REST yang dipahami oleh API Anda.

Langkah 1: Siapkan lingkungan MCP Node.js

Model Context Protocol TypeScript SDK resmi adalah alat inti untuk konversi ini.

1. Inisialisasi proyek dan instal dependensi

Dengan asumsi proyek dasar Node.js (v18+), Anda memerlukan MCP SDK, utilitas untuk validasi permintaan (seperti Zod), dan klien HTTP (seperti axios atau node-fetch) untuk berinteraksi dengan REST API yang ada.

npm init -y
npm install @modelcontextprotocol/sdk zod node-fetch
npm install -D typescript @types/node ts-node

2. Buat instance server MCP

Buat file (seperti mcp-server.ts) untuk menyiapkan instans server dan lapisan transport, seperti StdioServerTransport untuk pengujian lokal atau StreamableHttpServerTransport untuk penerapan jarak jauh.

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

// Instantiate the core MCP server
const server = new McpServer({
    name: "MyNodeAPIServer",
    version: "1.0.0",
    capabilities: { tools: {}, resources: {}, prompts: {} },
});

// The transport handles communication with the LLM client
const transport = new StdioServerTransport();

async function startServer() {
    // [Tool and Resource registration will go here]
    
    await server.connect(transport);
    console.log("MCP Server is running on standard I/O...");
}

startServer().catch(console.error);

Langkah 2: Rencanakan dan tentukan alat MCP

Ini adalah langkah paling kritis. Daripada mengekspos secara membabi buta setiap titik akhir REST, Anda harus mengatur fungsionalitas ke dalam alat dan sumber daya tingkat tinggi yang ramah agen.

1. Rancang alat yang ramah LLM

LLM berkinerja lebih baik menggunakan alat semantik berbasis niat daripada panggilan API tingkat rendah yang terperinci.

  • Buruk (berpusat pada REST): get_user_by_id, update_user_name, update_user_email
  • Bagus (berpusat pada MCP): manage_user_profile(userId, newName, newEmail)

Pengendali alat MCP harus mengatur beberapa panggilan REST yang diperlukan untuk menyelesaikan satu operasi tingkat tinggi.

2. Menerapkan pengendali alat

Setiap alat memerlukan nama deskriptif, deskripsi bahasa alami LLM yang lengkap, dan skema input/output terstruktur menggunakan Zod.

// Define the schema for the tool's input arguments
const UpdateUserSchema = z.object({
    userId: z.string().describe("The unique ID of the user to update."),
    newEmail: z.string().email().optional().describe("The user's new email address."),
    newSubscriptionPlan: z.enum(['basic', 'premium', 'pro']).optional().describe("The new subscription plan to apply."),
});

server.registerTool(
    "manage_subscription",
    {
        title: "Manage User Subscription and Profile",
        description: "Updates a user's email address and/or changes their subscription plan. Requires the user's ID.",
        argsSchema: UpdateUserSchema,
        outputSchema: z.object({
            status: z.string(),
            updatedFields: z.array(z.string()),
        }),
    },
    async (args) => {
        const { userId, newEmail, newSubscriptionPlan } = args;
        const updatedFields: string[] = [];
        
        // --- REST API CALL Orchestration ---
        const REST_API_BASE = process.env.REST_API_URL;

        if (newEmail) {
            // 1. Call the REST API to update email
            await fetch(`${REST_API_BASE}/users/${userId}/email`, {
                method: 'PUT',
                body: JSON.stringify({ email: newEmail }),
                headers: { 'Content-Type': 'application/json' },
            });
            updatedFields.push('email');
        }

        if (newSubscriptionPlan) {
            // 2. Call the REST API to update subscription
            await fetch(`${REST_API_BASE}/billing/${userId}/plan`, {
                method: 'POST',
                body: JSON.stringify({ plan: newSubscriptionPlan }),
                headers: { 'Content-Type': 'application/json' },
            });
            updatedFields.push('subscriptionPlan');
        }

        // Return a structured response for the LLM
        return {
            status: "Success",
            updatedFields: updatedFields.length > 0 ? updatedFields : ["No changes made."],
        };
    }
);

3. Ciptakan sumber daya untuk konteksnya

Untuk permintaan GET sederhana yang menyediakan konteks (data hanya baca), gunakan ResourceTemplates. Ini memungkinkan LLM memahami data apa yang tersedia tanpa harus menggunakan alat.

server.registerResource(
    "product_catalog_item",
    {
        title: "Product Catalog Item",
        description: "A single item from the product catalog, including price, stock, and description.",
        uriTemplate: "api://my-node-api-mcp/products/{productId}",
        dataSchema: z.object({
            id: z.string(),
            name: z.string(),
            price: z.number(),
            description: z.string(),
        }),
    },
    async (uri) => {
        // Parse the productId from the URI or argument
        const productId = uri.split("
        
        // Call your REST API: GET /products/{productId}
        const response = await fetch(`${process.env.REST_API_URL}/products/${productId}`);
        return await response.json();
    }
);

Langkah 3: Terapkan keamanan dan penanganan kesalahan

Keamanan sangat penting ketika memaparkan fungsionalitas ke agen otonom.

1. Integrasi sertifikasi

Server MCP Anda bertindak sebagai proxy. Klien HTTP internalnya harus menangani otentikasi REST API asli. Hal ini biasanya melibatkan pemuatan kunci API atau token OAuth dengan aman dari variabel lingkungan dan memasukkannya ke dalam header otorisasi panggilan pengambilan atau aksio dalam pengendali alat.

2. Respon kesalahan yang kuat

Agen AI mengandalkan keluaran terstruktur untuk menentukan keberhasilan atau kegagalan suatu operasi. Penangan Anda harus menangkap kesalahan HTTP dari REST API dan mengubahnya menjadi respons kesalahan MCP yang jelas dan terstruktur.

  • Buruk: Menampilkan kesalahan HTTP 404 mentah.
  • Baik: Mengembalikan keluaran MCP di mana { status: “Kesalahan”, pesan: “Pengguna dengan ID 123 tidak ditemukan dalam database.” }

Kasus penggunaan utama untuk membuka kunci MCP

Konversi ke MCP adalah langkah strategis yang memungkinkan aplikasi berbasis AI jenis baru.

1. Alat pengembangan berbasis AI (kasus penggunaan “kursor”)

Banyak IDE AI modern dan asisten kode (seperti Cursor, GitHub Copilot) menggunakan MCP untuk memungkinkan AI berinteraksi dengan lingkungan pengembangan lokal atau layanan internal.

  • Skenario: Pengembang bertanya: “Jalankan tes integrasi untuk modul manajemen pengguna baru.”
  • Alat MCP: run_npm_script (nama skrip: string)
  • Logika API Node.js: Alat ini dengan aman menjalankan perintah shell seperti npm run test:user-management dengan persetujuan pengguna yang eksplisit.

2. Otomatisasi Dukungan Pelanggan yang Cerdas

Paparkan CRM inti, inventaris, atau API penagihan Anda sebagai alat MCP kepada agen AI internal.

  • Skenario: Agen dukungan bertanya kepada AI, “Apa status pesanan pelanggan Alice dan bisakah kami menerapkan diskon 10%?”
  • Alat MCP 1 (sumber daya): get_customer_order_history(customerId)
  • Alat MCP 2 (Alat): apply_discount_to_order(orderId, persentase)
  • Keuntungan: AI secara otomatis menghubungkan panggilan, memperoleh data, dan melakukan tindakan, sehingga tidak memerlukan langkah manual.

3. Alur kerja dinamis dan orkestrasi layanan mikro

Server MCP dapat berfungsi sebagai lapisan abstraksi di atas arsitektur layanan mikro yang luas, memungkinkan LLM mengatur alur kerja multi-langkah yang kompleks menggunakan satu perintah semantik.

  • Skenario: LL.M. menerima instruksi untuk “menangani proses orientasi klien baru untuk Jane Doe.”
  • Alat MCP: onboard_new_customer (nama, email)

Logika orkestrasi: Pengendali alat secara internal memanggil layanan mikro pengguna (REST POST), layanan penagihan (REST POST), dan layanan email (REST POST) untuk memastikan bahwa seluruh proses bisnis diselesaikan dengan benar. Hal ini membuat integrasi LLM menjadi sederhana dan mudah beradaptasi dengan kompleksitas back-end.

Kesimpulan: Masa depan integrasi AI terstandarisasi

Mengonversi REST API Node.js Anda untuk mendukung MCP adalah investasi untuk mempersiapkan aplikasi Anda di masa depan di era agen AI otonom. Meskipun menggabungkan setiap titik akhir merupakan titik awal yang baik, kekuatan sebenarnya dari MCP dicapai melalui manajemen aktif, alat semantik tingkat tinggi yang dirancang untuk mencerminkan maksud pengguna, bukan struktur API. Proses ini mengubah API Anda dari layanan pertukaran data statis menjadi keahlian dinamis yang dapat dipanggil AI, sehingga sangat memperluas kegunaannya dalam ekosistem agensi

rencana pengembangan website



metode pengembangan website

jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website

#Ubah #Node.js #REST #API #Anda #menjadi #server #MCP #yang #siap

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *