Apidog

Platform Pengembangan API Kolaboratif All-in-one

Desain API

Dokumentasi API

Debug API

Mocking API

Pengujian Otomatis API

Cara menggunakan Server MCP dengan OpenRouter

Integrasikan MCP Servers dgn OpenRouter utk AI lbh baik via 1 API. Panduan setup, konversi alat, panggilan API, & contoh penggunaan. Optimalkan alur kerja AI Anda. Unduh Apidog gratis!

Ardianto Nugroho

Ardianto Nugroho

Updated on April 15, 2025

Pengembangan AI berkembang pesat, dan mengintegrasikan alat eksternal dengan model bahasa adalah langkah maju yang penting. OpenRouter menyediakan API terpadu untuk mengakses berbagai model bahasa, sementara MCP Servers (Model Context Protocol Servers) memungkinkan model-model ini untuk menjalankan alat eksternal dan mengakses data langsung. Menggabungkan keduanya menciptakan sistem yang kuat untuk membangun aplikasi AI tingkat lanjut.

Dalam postingan ini, saya akan memandu Anda melalui integrasi MCP Servers dengan OpenRouter. Anda akan mempelajari fungsionalitas inti mereka, proses integrasi, dan contoh praktis.

💡
Sebelum memulai, unduh Apidog secara gratis di sini, ini adalah alat yang sangat baik untuk menguji API dan men-debug pengaturan Anda.
button

Memahami MCP Servers dan OpenRouter

Untuk mengintegrasikan MCP Servers dengan OpenRouter, Anda pertama-tama perlu memahami apa yang dilakukan oleh setiap komponen.

OpenRouter: Akses Terpadu ke Model Bahasa

OpenRouter adalah platform yang menyederhanakan interaksi dengan model bahasa besar (LLM) dari penyedia seperti OpenAI, Anthropic, dan xAI. Ia menawarkan satu titik akhir API https://openrouter.ai/api/v1/chat/completions yang kompatibel dengan struktur API OpenAI. Fitur utama meliputi:

  • Agregasi Model: Akses ratusan LLM melalui satu antarmuka.
  • Optimasi Biaya: Mengarahkan permintaan ke model hemat biaya berdasarkan ketersediaan dan harga.
  • Penyeimbangan Beban: Mendistribusikan permintaan untuk mencegah kelebihan beban pada satu penyedia.
  • Fallback: Beralih ke model alternatif jika satu gagal.

Anda akan memerlukan akun OpenRouter dan kunci API untuk melanjutkan. Dapatkan milik Anda di openrouter.ai.

MCP Servers: Memperluas Kemampuan Model

MCP Servers mengimplementasikan Model Context Protocol, memungkinkan LLM untuk memanggil alat eksternal. Tidak seperti model mandiri yang terbatas pada data pelatihan mereka, MCP Servers memungkinkan interaksi waktu nyata dengan sistem seperti direktori file, database, atau API pihak ketiga. Definisi alat MCP yang khas mencakup:

  • Nama: Mengidentifikasi alat (mis., list_files).
  • Deskripsi: Menjelaskan tujuannya.
  • Parameter: Menentukan input dalam format JSON Schema.

Misalnya, alat MCP untuk mencantumkan file direktori mungkin terlihat seperti ini:

{
  "name": "list_files",
  "description": "Lists files in a specified directory",
  "parameters": {
    "type": "object",
    "properties": {
      "path": {"type": "string", "description": "Directory path"}
    },
    "required": ["path"]
  }
}

Bersama-sama, OpenRouter menyediakan model, dan MCP Servers menyediakan alat, membentuk ekosistem AI yang kuat.

Mengapa Mengintegrasikan MCP Servers dengan OpenRouter?

Menggabungkan teknologi ini menawarkan beberapa keuntungan teknis:

  • Fleksibilitas Model: Gunakan LLM yang didukung OpenRouter dengan kemampuan panggilan alat.
  • Pengurangan Biaya: Pasangkan model yang lebih murah dengan alat eksternal untuk mengurangi beban tugas kompleks.
  • Kemampuan yang Ditingkatkan: Memungkinkan model untuk mengambil data langsung atau melakukan tindakan (mis., operasi file).
  • Skalabilitas: Ganti model atau alat tanpa menulis ulang logika inti Anda.
  • Tahan Masa Depan: Beradaptasi dengan LLM dan alat baru saat muncul.

Integrasi ini ideal untuk pengembang yang membangun sistem AI yang membutuhkan interaktivitas dunia nyata.

Proses Integrasi Langkah demi Langkah

Sekarang, mari kita bahas teknisnya. Berikut cara mengintegrasikan MCP Servers dengan OpenRouter.

Prasyarat

Pastikan Anda memiliki:

  • Akun OpenRouter dan Kunci API: Dari openrouter.ai.
  • MCP Server: Berjalan secara lokal (mis., di http://localhost:8000) atau jarak jauh. Untuk panduan ini, saya akan menggunakan server MCP sistem file.
  • Python 3.8+: Dengan pustaka requests (pip install requests).
  • Apidog: Opsional tetapi direkomendasikan untuk pengujian API. Unduh gratis.
button

Langkah 1: Definisikan dan Konversi Alat MCP

OpenRouter menggunakan format panggilan alat OpenAI, jadi Anda harus mengonversi definisi alat MCP. Mulailah dengan definisi MCP:

{
  "name": "list_files",
  "description": "Lists files in a specified directory",
  "parameters": {
    "type": "object",
    "properties": {
      "path": {"type": "string", "description": "Directory path"}
    },
    "required": ["path"]
  }
}

Konversikan ke format OpenAI dengan menambahkan bidang type dan menyarangkan detail fungsi:

{
  "type": "function",
  "function": {
    "name": "list_files",
    "description": "Lists files in a specified directory",
    "parameters": {
      "type": "object",
      "properties": {
        "path": {"type": "string", "description": "Directory path"}
      },
      "required": ["path"]
    }
  }
}

Struktur JSON ini adalah yang diharapkan OpenRouter dalam muatan API-nya.

Langkah 2: Konfigurasikan Permintaan API

Siapkan permintaan API ke OpenRouter. Tentukan header dengan kunci API Anda dan muatan dengan model, pesan, dan alat. Berikut adalah contoh Python:

import requests
import json

# Headers
headers = {
    "Authorization": "Bearer your_openrouter_api_key",
    "Content-Type": "application/json"
}

# Payload
payload = {
    "model": "openai/gpt-4",  # Replace with your preferred model
    "messages": [
        {"role": "user", "content": "List files in the current directory."}
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "list_files",
                "description": "Lists files in a specified directory",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "path": {"type": "string", "description": "Directory path"}
                    },
                    "required": ["path"]
                }
            }
        }
    ]
}

Ganti your_openrouter_api_key dengan kunci Anda yang sebenarnya.

Langkah 3: Kirim Permintaan API Awal

Buat permintaan POST ke titik akhir OpenRouter:

response = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers=headers,
    json=payload
)

response_data = response.json()

Langkah 4: Proses Panggilan Alat

Periksa apakah respons menyertakan panggilan alat:

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_123",
            "type": "function",
            "function": {
              "name": "list_files",
              "arguments": "{\"path\": \".\"}"
            }
          }
        ]
      }
    }
  ]
}

Ekstrak detail panggilan alat:

message = response_data["choices"][0]["message"]
if "tool_calls" in message:
    tool_call = message["tool_calls"][0]
    function_name = tool_call["function"]["name"]
    arguments = json.loads(tool_call["function"]["arguments"])

Langkah 5: Panggil MCP Server

Kirim permintaan alat ke MCP Server Anda:

mcp_response = requests.post(
    "http://localhost:8000/call",
    json={
        "name": function_name,
        "arguments": arguments
    }
)

tool_result = mcp_response.json()["result"]  # e.g., ["file1.txt", "file2.txt"]

Langkah 6: Kembalikan Hasil Alat ke OpenRouter

Tambahkan panggilan alat asisten dan hasilnya ke riwayat pesan:

messages = payload["messages"] + [
    {
        "role": "assistant",
        "content": null,
        "tool_calls": [tool_call]
    },
    {
        "role": "tool",
        "tool_call_id": tool_call["id"],
        "content": json.dumps(tool_result)
    }
]

# Update payload
payload["messages"] = messages

# Send follow-up request
final_response = requests.post(
    "https://openrouter.ai/api/v1/chat/completions",
    headers=headers,
    json=payload
)

final_output = final_response.json()["choices"][0]["message"]["content"]
print(final_output)  # e.g., "Files: file1.txt, file2.txt"

Langkah 7: Tangani Beberapa Panggilan Alat

Jika model memerlukan beberapa panggilan alat, ulangi prosesnya:

messages = payload["messages"]

while True:
    response = requests.post(
        "https://openrouter.ai/api/v1/chat/completions",
        headers=headers,
        json={"model": "openai/gpt-4", "messages": messages}
    )
    message = response.json()["choices"][0]["message"]
    
    if "tool_calls" not in message:
        print(message["content"])
        break
    
    for tool_call in message["tool_calls"]:
        function_name = tool_call["function"]["name"]
        arguments = json.loads(tool_call["function"]["arguments"])
        
        mcp_response = requests.post(
            "http://localhost:8000/call",
            json={"name": function_name, "arguments": arguments}
        )
        tool_result = mcp_response.json()["result"]
        
        messages.extend([
            {"role": "assistant", "content": null, "tool_calls": [tool_call]},
            {"role": "tool", "tool_call_id": tool_call["id"], "content": json.dumps(tool_result)}
        ])

Ini memastikan semua panggilan alat diproses.

Contoh Dunia Nyata: Interaksi Sistem File

Mari terapkan ini ke skenario praktis yang mencantumkan file dengan MCP Server.

  1. Definisi Alat: Gunakan alat list_files dari sebelumnya.
  2. MCP Server: Asumsikan itu berjalan di http://localhost:8000.
  3. Panggilan API: Kirim "List files in the current directory" ke OpenRouter.
  4. Penanganan Respons: Model memanggil list_files dengan {"path": "."}.
  5. Eksekusi MCP: Server mengembalikan ["file1.txt", "file2.txt"].
  6. Output Akhir: Model merespons, "Files found: file1.txt, file2.txt."

Berikut adalah kode lengkapnya:

import requests
import json

headers = {"Authorization": "Bearer your_openrouter_api_key", "Content-Type": "application/json"}
payload = {
    "model": "openai/gpt-4",
    "messages": [{"role": "user", "content": "List files in the current directory."}],
    "tools": [{
        "type": "function",
        "function": {
            "name": "list_files",
            "description": "Lists files in a specified directory",
            "parameters": {
                "type": "object",
                "properties": {"path": {"type": "string", "description": "Directory path"}},
                "required": ["path"]
            }
        }
    }]
}

response = requests.post("https://openrouter.ai/api/v1/chat/completions", headers=headers, json=payload)
message = response.json()["choices"][0]["message"]

if "tool_calls" in message:
    tool_call = message["tool_calls"][0]
    function_name = tool_call["function"]["name"]
    arguments = json.loads(tool_call["function"]["arguments"])
    
    mcp_response = requests.post("http://localhost:8000/call", json={"name": function_name, "arguments": arguments})
    tool_result = mcp_response.json()["result"]
    
    messages = payload["messages"] + [
        {"role": "assistant", "content": null, "tool_calls": [tool_call]},
        {"role": "tool", "tool_call_id": tool_call["id"], "content": json.dumps(tool_result)}
    ]
    
    final_response = requests.post("https://openrouter.ai/api/v1/chat/completions", headers=headers, json={"model": "openai/gpt-4", "messages": messages})
    print(final_response.json()["choices"][0]["message"]["content"])

Memecahkan Masalah Umum

Berikut adalah solusi untuk masalah yang sering terjadi:

  • Alat Tidak Dipanggil: Verifikasi sintaks definisi alat dan kejelasan perintah.
  • Argumen Tidak Valid: Pastikan parameter sesuai dengan JSON Schema.
  • Kegagalan MCP Server: Periksa log server dan titik akhir (http://localhost:8000/call).
  • Autentikasi API: Konfirmasikan kunci OpenRouter Anda benar.

Gunakan Apidog untuk men-debug permintaan dan respons API secara efisien.

Memperluas Integrasi

Untuk melebihi 2000 kata dan menambahkan kedalaman, pertimbangkan ekstensi ini:

Contoh Kueri Database

Tentukan alat MCP untuk mengkueri database:

{
  "type": "function",
  "function": {
    "name": "query_db",
    "description": "Queries a database with SQL",
    "parameters": {
      "type": "object",
      "properties": {"sql": {"type": "string", "description": "SQL query"}},
      "required": ["sql"]
    }
  }
}

Kirim "Get all users from the database" ke OpenRouter, proses panggilan query_db, dan kembalikan hasil seperti [{"id": 1, "name": "Alice"}].

Penanganan Kesalahan

Tambahkan penanganan kesalahan yang kuat:

try:
    mcp_response = requests.post("http://localhost:8000/call", json={"name": function_name, "arguments": arguments})
    mcp_response.raise_for_status()
except requests.RequestException as e:
    tool_result = f"Error: {str(e)}"

Ini memastikan aplikasi Anda tetap stabil.

Kesimpulan

Mengintegrasikan MCP Servers dengan OpenRouter memungkinkan AI Anda untuk memanfaatkan alat eksternal melalui satu API. Panduan ini mencakup pengaturan, konversi alat, panggilan API, dan contoh praktis seperti interaksi sistem file. Dengan manfaat seperti penghematan biaya dan fungsionalitas yang ditingkatkan, pendekatan ini wajib dicoba bagi pengembang teknis.

Mulai bereksperimen sekarang, dapatkan Apidog secara gratis di sini untuk menguji API Anda. Beri tahu saya bagaimana hasilnya!

button
Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)Tutorial

Cara Menggunakan Lovable AI (Alternatif Cursor untuk Pengembang Web)

Pelajari cara buat web apa pun dgn Lovable. Panduan lengkap, fitur inovatif, & integrasi Apidog (API gratis).

Ardianto Nugroho

April 15, 2025

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan KomprehensifTutorial

Cara Menambahkan Kunci API Kustom ke Cursor: Panduan Komprehensif

Tutorial ini memandu Anda menyiapkan & mengelola API key khusus di Cursor: OpenAI, Anthropic, Google, & Azure.

Ardianto Nugroho

April 11, 2025

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat LanjutTutorial

Cara Menggunakan NVIDIA Llama Nemotron API untuk Agen AI Tingkat Lanjut

Pelajari API NVIDIA Llama Nemotron utk buat agen AI canggih.

Ardianto Nugroho

April 11, 2025