วิธีใช้เซิร์ฟเวอร์ MCP กับ OpenRouter

รวม MCP Servers กับ OpenRouter เพิ่มฟังก์ชัน AI ผ่าน API เดียว คู่มือนี้สอนตั้งค่า, แปลงเครื่องมือ, เรียก API และตัวอย่างการใช้งานจริง ดาวน์โหลด Apidog ฟรีเพื่อทดสอบ API

อาชว์

อาชว์

31 August 2025

วิธีใช้เซิร์ฟเวอร์ MCP กับ OpenRouter

```html

การพัฒนา AI กำลังพัฒนาอย่างรวดเร็ว และการผสานรวมเครื่องมือภายนอกกับแบบจำลองภาษาเป็นก้าวสำคัญไปข้างหน้า OpenRouter มอบ API แบบครบวงจรเพื่อเข้าถึงแบบจำลองภาษาจำนวนมาก ในขณะที่ MCP Servers (Model Context Protocol Servers) ช่วยให้แบบจำลองเหล่านี้สามารถเรียกใช้เครื่องมือภายนอกและเข้าถึงข้อมูลสดได้ การรวมเข้าด้วยกันจะสร้างระบบอันทรงพลังสำหรับการสร้างแอปพลิเคชัน AI ขั้นสูง

ในโพสต์นี้ ผมจะแนะนำคุณตลอดการผสานรวม MCP Servers กับ OpenRouter คุณจะได้เรียนรู้ฟังก์ชันการทำงานหลักของพวกเขา กระบวนการผสานรวม และตัวอย่างเชิงปฏิบัติ

💡
ก่อนเริ่มต้น ดาวน์โหลด Apidog ได้ฟรีที่นี่ เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการทดสอบ APIs และแก้ไขการตั้งค่าของคุณ
button

ทำความเข้าใจเกี่ยวกับ MCP Servers และ OpenRouter

ในการผสานรวม MCP Servers กับ OpenRouter คุณต้องเข้าใจก่อนว่าแต่ละส่วนประกอบทำอะไร

OpenRouter: การเข้าถึงแบบรวมศูนย์สำหรับแบบจำลองภาษา

OpenRouter เป็นแพลตฟอร์มที่ช่วยลดความซับซ้อนในการโต้ตอบกับแบบจำลองภาษาขนาดใหญ่ (LLMs) จากผู้ให้บริการเช่น OpenAI, Anthropic และ xAI โดยมีจุดสิ้นสุด API เดียว https://openrouter.ai/api/v1/chat/completions ที่เข้ากันได้กับโครงสร้าง API ของ OpenAI คุณสมบัติหลัก ได้แก่:

คุณจะต้องมีบัญชี OpenRouter และคีย์ API เพื่อดำเนินการต่อ รับของคุณได้ที่ openrouter.ai

MCP Servers: การขยายขีดความสามารถของแบบจำลอง

MCP Servers ใช้ Model Context Protocol ทำให้ LLMs สามารถเรียกใช้เครื่องมือภายนอกได้ ซึ่งแตกต่างจากแบบจำลองแบบสแตนด์อโลนที่จำกัดอยู่แค่ข้อมูลการฝึกอบรม MCP Servers ช่วยให้สามารถโต้ตอบกับระบบต่างๆ เช่น ไดเรกทอรีไฟล์ ฐานข้อมูล หรือ APIs ของบุคคลที่สามได้แบบเรียลไทม์ คำจำกัดความของเครื่องมือ MCP ทั่วไปประกอบด้วย:

ตัวอย่างเช่น เครื่องมือ MCP สำหรับแสดงรายการไฟล์ไดเรกทอรีอาจมีลักษณะดังนี้:

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

เมื่อรวมกันแล้ว OpenRouter จะจัดเตรียมแบบจำลอง และ MCP Servers จะจัดหาเครื่องมือ ซึ่งก่อให้เกิดระบบนิเวศ AI ที่แข็งแกร่ง

เหตุใดจึงต้องผสานรวม MCP Servers กับ OpenRouter

การรวมเทคโนโลยีเหล่านี้เข้าด้วยกันมีข้อได้เปรียบทางเทคนิคหลายประการ:

การผสานรวมนี้เหมาะสำหรับนักพัฒนาที่สร้างระบบ AI ที่ต้องการการโต้ตอบกับโลกแห่งความเป็นจริง

กระบวนการผสานรวมทีละขั้นตอน

ตอนนี้ มาดูด้านเทคนิคกันบ้าง นี่คือวิธีการผสานรวม MCP Servers กับ OpenRouter

ข้อกำหนดเบื้องต้น

ตรวจสอบให้แน่ใจว่าคุณมี:

button

ขั้นตอนที่ 1: กำหนดและแปลงเครื่องมือ MCP

OpenRouter ใช้รูปแบบการเรียกใช้เครื่องมือของ OpenAI ดังนั้นคุณต้องแปลงคำจำกัดความของเครื่องมือ MCP เริ่มต้นด้วยคำจำกัดความ MCP:

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

แปลงเป็นรูปแบบ OpenAI โดยเพิ่มฟิลด์ type และซ้อนรายละเอียดฟังก์ชัน:

{
  "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"]
    }
  }
}

โครงสร้าง JSON นี้คือสิ่งที่ OpenRouter คาดหวังในเพย์โหลด API

ขั้นตอนที่ 2: กำหนดค่าคำขอ API

เตรียมคำขอ API ไปยัง OpenRouter กำหนดส่วนหัวด้วยคีย์ API ของคุณและเพย์โหลดด้วยแบบจำลอง ข้อความ และเครื่องมือ นี่คือตัวอย่าง 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"]
                }
            }
        }
    ]
}

แทนที่ your_openrouter_api_key ด้วยคีย์จริงของคุณ

ขั้นตอนที่ 3: ส่งคำขอ API เริ่มต้น

ส่งคำขอ POST ไปยังจุดสิ้นสุดของ OpenRouter:

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

response_data = response.json()

ขั้นตอนที่ 4: ประมวลผลการเรียกใช้เครื่องมือ

ตรวจสอบว่าการตอบสนองมีรายการเรียกใช้เครื่องมือหรือไม่:

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

แยกรายละเอียดการเรียกใช้เครื่องมือ:

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"])

ขั้นตอนที่ 5: เรียกใช้ MCP Server

ส่งคำขอเครื่องมือไปยัง MCP Server ของคุณ:

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"]

ขั้นตอนที่ 6: ส่งคืนผลลัพธ์เครื่องมือไปยัง OpenRouter

ผนวกการเรียกใช้เครื่องมือของผู้ช่วยและผลลัพธ์ไปยังประวัติข้อความ:

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"

ขั้นตอนที่ 7: จัดการการเรียกใช้เครื่องมือหลายรายการ

หากแบบจำลองต้องการการเรียกใช้เครื่องมือหลายรายการ ให้วนซ้ำกระบวนการ:

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)}
        ])

ซึ่งจะช่วยให้มั่นใจได้ว่าการเรียกใช้เครื่องมือทั้งหมดได้รับการประมวลผล

ตัวอย่างในโลกแห่งความเป็นจริง: การโต้ตอบกับระบบไฟล์

มาปรับใช้สิ่งนี้กับสถานการณ์จริงในการแสดงรายการไฟล์ด้วย MCP Server

  1. Tool Definition: ใช้เครื่องมือ list_files จากก่อนหน้านี้
  2. MCP Server: สมมติว่ากำลังทำงานที่ http://localhost:8000
  3. API Call: ส่ง “List files in the current directory” ไปยัง OpenRouter
  4. Response Handling: แบบจำลองเรียกใช้ list_files ด้วย {"path": "."}
  5. MCP Execution: เซิร์ฟเวอร์ส่งคืน ["file1.txt", "file2.txt"]
  6. Final Output: แบบจำลองตอบสนองว่า “Files found: file1.txt, file2.txt.”

นี่คือโค้ดทั้งหมด:

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"])

การแก้ไขปัญหาทั่วไป

นี่คือวิธีแก้ไขปัญหาที่พบบ่อย:

ใช้ Apidog เพื่อแก้ไขคำขอและคำตอบ API อย่างมีประสิทธิภาพ

การขยายการผสานรวม

หากต้องการเกิน 2000 คำและเพิ่มความลึก ให้พิจารณาการขยายเหล่านี้:

ตัวอย่างการสอบถามฐานข้อมูล

กำหนดเครื่องมือ MCP เพื่อสอบถามฐานข้อมูล:

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

ส่ง “Get all users from the database” ไปยัง OpenRouter ประมวลผลการเรียก query_db และส่งคืนผลลัพธ์เช่น [{"id": 1, "name": "Alice"}]

การจัดการข้อผิดพลาด

เพิ่มการจัดการข้อผิดพลาดที่แข็งแกร่ง:

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)}"

ซึ่งจะช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณยังคงเสถียร

บทสรุป

การผสานรวม MCP Servers กับ OpenRouter ช่วยให้ AI ของคุณใช้ประโยชน์จากเครื่องมือภายนอกผ่าน API เดียว คำแนะนำนี้ครอบคลุมการตั้งค่า การแปลงเครื่องมือ การเรียก API และตัวอย่างเชิงปฏิบัติ เช่น การโต้ตอบกับระบบไฟล์ ด้วยประโยชน์ต่างๆ เช่น การประหยัดต้นทุนและฟังก์ชันการทำงานที่ได้รับการปรับปรุง แนวทางนี้เป็นสิ่งที่นักพัฒนาด้านเทคนิคต้องลอง

เริ่มทดลองเลย คว้า Apidog ได้ฟรี ที่นี่ เพื่อทดสอบ APIs ของคุณ แจ้งให้ผมทราบว่ามันเป็นอย่างไร!

button

```

Explore more

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

เรียนรู้วิธีรัน Mistral Small 3.1 (AI โอเพนซอร์ส) บนเครื่องคุณเองด้วย Ollama คู่มือนี้ง่าย ครอบคลุมการติดตั้ง, การใช้งาน, และเคล็ดลับ

19 March 2025

NDJSON 101: การสตรีมผ่าน HTTP Endpoints

NDJSON 101: การสตรีมผ่าน HTTP Endpoints

ค้นพบ NDJSON: สตรีมข้อมูลผ่าน HTTP อย่างมีประสิทธิภาพ! คู่มือนี้อธิบายพื้นฐาน, ข้อดีเหนือ JSON, และวิธี Apidog ช่วยทดสอบ/แก้จุดบกพร่อง endpoint สตรีมมิ่ง

18 March 2025

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

ในบทความนี้ เราจะคุยเรื่องนำเข้า/ส่งออก Postman และวิธีแก้ปัญหาที่ยืดหยุ่นกว่า ไม่จำกัดจำนวนครั้ง

18 March 2025

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API