اتصال MCP

MCP بینا ویرا چیست؟

MCP (Model Context Protocol) یک پروتکل استاندارد است که به برنامه‌های هوش مصنوعی اجازه می‌دهد از ابزارهای بیرونی استفاده کنند. ما یک سرور MCP ساخته‌ایم که سرویس‌های بینا ویرا (ساخت و ویرایش تصویر، ساخت ویدیو، تحلیل تصویر و تبدیل متن به صدا) را به‌شکل ابزار در اختیار هر برنامهٔ سازگار می‌گذارد. هوش مصنوعی در برنامهٔ شما خودش تصمیم می‌گیرد کدام ابزار را صدا بزند. هزینهٔ هر تولید مثل استفادهٔ عادی از اعتبار حساب شما کسر می‌شود.

MCP server URL
https://mcp.binavira.ir/mcp

مشخصات سرور

  • آدرسhttps://mcp.binavira.ir/mcp
  • پروتکلMCP روی HTTP (Streamable HTTP)، پیام‌ها JSON-RPC 2.0
  • نسخه‌های پروتکل2025-06-18، 2025-03-26، 2024-11-05
  • احراز هویتهدر Authorization: Bearer YOUR_TOKEN (توکن حساب بینا ویرا)
  • قابلیت‌هافقط ابزار (tools). منابع (resources) و پرامپت‌ها ندارد.
  • نشست (session)بدون وضعیت: لازم نیست نشست نگه دارید. هر درخواست مستقل است.
  • پاسخJSON ساده (بدون SSE). درخواست GET و DELETE پشتیبانی نمی‌شود.
  • ورود با OAuthفعلاً ندارد

اتصال در سه قدم

  1. وارد حساب بینا ویرا شوید و توکن را از صفحهٔ توسعه‌دهندگان کپی کنید.
  2. در برنامهٔ خودتان یک سرور MCP از نوع HTTP (Streamable HTTP) اضافه کنید: آدرس را بالا و هدر Authorization: Bearer YOUR_TOKEN را بگذارید.
  3. برنامه را دوباره باز کنید و از هوش مصنوعی بخواهید با بینا ویرا کاری انجام دهد.

توکن مثل رمز عبور است؛ در جای عمومی نگذارید. اگر لو رفت، از همان صفحه توکن جدید بسازید تا قبلی از کار بیفتد.

نمونهٔ تنظیمات

بیشتر برنامه‌ها یک فایل تنظیم یا فرم برای سرورهای MCP دارند. شکل رایج این است؛ فقط نام فیلدها در برنامه‌های مختلف کمی فرق می‌کند (مثلاً url، serverUrl یا httpUrl، و گاهی "type": "http"). مستندات برنامهٔ خودتان را برای «remote MCP server با هدر» ببینید؛ مقدارها همین‌هاست.

JSON
{
  "mcpServers": {
    "binavira": {
      "url": "https://mcp.binavira.ir/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
اگر برنامه فقط ابزارهای محلی (stdio) را می‌پذیرد

با پل mcp-remote می‌شود سرور HTTP را مثل یک دستور محلی استفاده کرد (به Node.js نیاز دارد). این دستور را به‌عنوان command سرور MCP در برنامه بگذارید:

shell
npx -y mcp-remote https://mcp.binavira.ir/mcp --header "Authorization:${BINAVIRA_AUTH}"
# با متغیر محیطی: BINAVIRA_AUTH="Bearer YOUR_TOKEN"
بررسی اتصال

قبل از تنظیم برنامه، با این دستور مطمئن شوید توکن و سرور سالم هستند. باید فهرست ابزارها برگردد:

curl
curl -s https://mcp.binavira.ir/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

برنامه‌هایی که فقط ورود با OAuth دارند و جایی برای هدر ندارند، فعلاً نمی‌توانند وصل شوند.

چه کارهایی می‌شود کرد؟

مثال‌هایی از درخواست‌هایی که می‌توانید به هوش مصنوعی در برنامهٔ خودتان بدهید:

  • یک تصویر از گربهٔ نارنجی روی پشت‌بام هنگام غروب با بینا ویرا بساز.
  • لوگوی ساده‌ای برای یک کافه به اسم «دارچین» بساز، نسبت 1:1.
  • این عکس را (لینک) ویرایش کن: پس‌زمینه را به باغ بهاری تغییر بده.
  • یک ویدیوی ۱۰ ثانیه‌ای از قایقی روی دریاچهٔ مه‌آلود بساز و وقتی آماده شد لینکش را بده.
  • قبل از ساختن، قیمت تولید تصویر و ویدیو را بگو و موجودی من را نشان بده.

اگر چند سرویس تصویر وصل کرده‌اید، اسم «بینا ویرا» را در درخواست بیاورید تا ابزار درست انتخاب شود.

مرجع ابزارها

هر ابزار یک ورودی ساختاریافته دارد. در برنامه‌های چت لازم نیست این‌ها را بدانید؛ هوش مصنوعی خودش پر می‌کند. اگر از کد استفاده می‌کنید، نام و نوع پارامترها را از همین جدول بردارید.

binavira_generate_imageهزینه دارد

ساخت تصویر از متن

  • promptstringالزامی
    توصیف تصویر، حداکثر ۵۰۰۰ کاراکتر.
  • aspect_ratiostringاختیاری
    نسبت تصویر خروجی. پیش‌فرض 1:1. مقدارهای مجاز: 1:1، 3:4، 4:3، 16:9، 9:16.
binavira_edit_imageهزینه دارد

ویرایش یک یا دو تصویر با دستور متنی

  • image_urlsstring[]الزامی
    آدرس https یک یا دو تصویر مرجع (حداکثر ۵ مگابایت هر کدام).
  • promptstringالزامی
    دستور ویرایش، حداکثر ۵۰۰۰ کاراکتر.
  • aspect_ratiostringاختیاری
    نسبت تصویر خروجی. پیش‌فرض 1:1. مقدارهای مجاز: 1:1، 3:4، 4:3، 16:9، 9:16.
binavira_generate_videoهزینه دارد

ساخت ویدیو از متن؛ شناسهٔ ویدیو می‌دهد

  • promptstringالزامی
    توصیف ویدیو، حداکثر ۵۰۰۰ کاراکتر.
  • secondsintegerاختیاری
    مدت ویدیو به ثانیه. پیش‌فرض ۱۰.
  • aspect_ratiostringاختیاری
    16:9 افقی یا 9:16 عمودی. پیش‌فرض 16:9. مقدارهای مجاز: 16:9، 9:16.
binavira_image_to_videoهزینه دارد

ساخت ویدیو از روی یک تصویر

  • image_urlstringالزامی
    آدرس https تصویر مرجع (حداکثر ۵ مگابایت).
  • promptstringالزامی
    توصیف حرکت یا تغییرات، حداکثر ۵۰۰۰ کاراکتر.
  • secondsintegerاختیاری
    مدت ویدیو به ثانیه. پیش‌فرض ۱۰.
  • aspect_ratiostringاختیاری
    16:9 یا 9:16. پیش‌فرض 16:9. مقدارهای مجاز: 16:9، 9:16.
binavira_check_videoرایگان

پیگیری وضعیت ویدیو و گرفتن لینک نهایی

  • video_idstringالزامی
    شناسهٔ ویدیو از مرحلهٔ ساخت.
binavira_analyze_imageهزینه دارد

توضیح تصویر، خواندن متن داخل عکس، پاسخ به سؤال

  • image_urlstringالزامی
    آدرس https تصویر (حداکثر ۵ مگابایت).
  • questionstringالزامی
    سؤال یا دستور دربارهٔ تصویر، حداکثر ۵۰۰۰ کاراکتر.
binavira_text_to_speechطبق تعرفه

تبدیل متن به فایل صوتی

  • textstringالزامی
    متن، حداکثر ۱۰۰۰ کاراکتر.
  • voicestringاختیاری
    صدای گوینده. پیش‌فرض female. مقدارهای مجاز: female، male.
binavira_get_balanceرایگان

موجودی حساب

پارامتری ندارد.

binavira_get_pricesرایگان

قیمت فعلی سرویس‌ها

پارامتری ندارد.

استفاده از کد

سرور MCP بینا ویرا پروتکل استاندارد MCP روی HTTP است (JSON-RPC). هر درخواست باید هدر Authorization: Bearer YOUR_TOKEN داشته باشد. پاسخ‌ها JSON ساده‌اند و نیازی به نگه داشتن نشست (session) نیست.

درخواست خام (curl)
curl
# فهرست ابزارها
curl -s https://mcp.binavira.ir/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# صدا زدن یک ابزار
curl -s https://mcp.binavira.ir/mcp \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"binavira_get_balance","arguments":{}}}'
Python (بدون SDK)
Python
import requests

URL = "https://mcp.binavira.ir/mcp"
HEADERS = {"Authorization": "Bearer YOUR_TOKEN"}

def call(name, arguments):
    body = {"jsonrpc": "2.0", "id": 1, "method": "tools/call",
            "params": {"name": name, "arguments": arguments}}
    r = requests.post(URL, json=body, headers=HEADERS, timeout=300)
    r.raise_for_status()
    result = r.json()["result"]
    text = result["content"][0]["text"]
    if result.get("isError"):
        raise RuntimeError(text)
    return text

print(call("binavira_generate_image", {"prompt": "An orange cat on a rooftop at sunset"}))
TypeScript (SDK رسمی MCP)

با دستور npm i @modelcontextprotocol/sdk نصب می‌شود.

TypeScript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(new URL("https://mcp.binavira.ir/mcp"), {
  requestInit: { headers: { Authorization: "Bearer YOUR_TOKEN" } },
});
const client = new Client({ name: "my-app", version: "1.0.0" });
await client.connect(transport);

const { tools } = await client.listTools();
console.log(tools.map((t) => t.name));

const result = await client.callTool({
  name: "binavira_generate_image",
  arguments: { prompt: "An orange cat on a rooftop at sunset" },
});
console.log(result.content);

نتیجهٔ هر ابزار در result.content[0].text است و اگر خطا باشد result.isError برابر true می‌شود و متن خطا همان‌جاست.

هزینه و محدودیت‌ها

  • قیمت‌ها همان تعرفهٔ بینا ویرا هستند. قیمت لحظه‌ای را با «قیمت سرویس‌ها» از چت بپرسید یا از صفحهٔ تعرفه ببینید.
  • هر کاربر هم‌زمان فقط یک تصویر در حال تولید می‌تواند داشته باشد.
  • ساخت تصویر ممکن است تا چند دقیقه طول بکشد؛ ساخت ویدیو هم چند دقیقه، و هوش مصنوعی خودش وضعیت را پیگیری می‌کند.
  • فرمت‌های مجاز تصویر ورودی PNG، JPG، JPEG، GIF، BMP و WEBP هستند، حداکثر ۵ مگابایت.
  • اغلب برنامه‌ها قبل از اجرای ابزارهای پولی از شما اجازه می‌پرسند؛ بهتر است این پرسش را خاموش نکنید.

پرسش‌های رایج

خطای ۴۰۱ می‌گیرم

توکن نادرست است یا بعد از «تغییر توکن» در حساب قدیمی شده. توکن جدید را از صفحهٔ توسعه‌دهندگان بردارید.

خطای ۴۰۳ یا «موجودی کافی نیست»

حساب را شارژ کنید. این خطا برای متن غیرمجاز هم می‌آید؛ توصیف را تغییر دهید.

خطای ۴۲۹

هر کاربر هم‌زمان فقط یک تصویر در حال تولید می‌تواند داشته باشد. چند ثانیه صبر کنید و دوباره بخواهید.

ویرایش تصویر با عکس خودم کار نمی‌کند

تصویر باید با یک آدرس عمومی https قابل دانلود باشد (حداکثر ۵ مگابایت). لینک مستقیم فایل را بدهید، نه صفحهٔ یک سایت.

ابزارها در برنامه دیده نمی‌شوند

بعد از افزودن سرور، برنامه را کامل ببندید و دوباره باز کنید. بخش وضعیت یا لاگ MCP همان برنامه را هم ببینید. برای اطمینان از سالم بودن سرور و توکن، دستور curl بخش «بررسی اتصال» را اجرا کنید.

برنامه‌ام فقط آدرس می‌پذیرد و جایی برای هدر ندارد

فعلاً ورود با OAuth نداریم و اتصال فقط با هدر Authorization است. اگر برنامه فقط OAuth دارد، فعلاً نمی‌تواند وصل شود.

مستندات APIبرای استفادهٔ برنامه‌نویسی مستقیم از سرویس‌ها، نمونه‌کد و پارامترها را ببین.