MCP و اتصال هوش مصنوعی
سرور MCP های چت را به Claude، ChatGPT، Codex، Gemini، Grok و هر ابزار سازگار دیگر وصل کنید؛ با محدودیت آیپی اجباری، دسترسی جدا برای هر کلید و تایید انسانی برای کارهای حساس.
MCP (Model Context Protocol) استاندارد بازی است که دستیارهای هوش مصنوعی با آن به ابزارهای بیرونی وصل میشوند. های چت یک سرور MCP دارد که هوش مصنوعی با آن میتواند گفتگوها، پیامها، کاربران و آمار وبسایت شما را بخواند و با تایید شما کارهایی مثل فرستادن پیام یا بستن گفتگو را انجام دهد.
MCP برای بسته الماسی و بالاتر فعال است.
آدرس سرور
https://app.hichat.ir/api/mcp
| ویژگی | مقدار |
|---|---|
| انتقال | Streamable HTTP (فقط POST با پاسخ JSON) |
| نسخههای پروتکل | 2025-11-25، 2025-06-18، 2025-03-26، 2024-11-05 |
| احراز هویت | هدر Authorization: Bearer cfm_... |
| درخواست دستهای | پشتیبانی نمیشود |
درخواستهایی که هدر Origin دارند (یعنی از مرورگر فرستاده شدهاند) رد میشوند. کلید را هیچوقت داخل کد سمت مرورگر نگذارید.
ساختن کلید MCP
در پنل به توسعهدهندگان و زبانه MCP بروید و در بخش کلیدها روی کلید تازه بزنید.
- هوش مصنوعی مقصد را انتخاب کنید تا دستور راهاندازی همان ابزار به شما نشان داده شود.
- اعتبار کلید را از یک هفته تا یک سال انتخاب کنید. کلید MCP بدون انقضا ساخته نمیشود.
- دسترسیها را تیک بزنید. دسترسیهای تغییر به طور پیشفرض هر بار به تایید شما نیاز دارند و در بخش عملیات حساس همین پنجره میتوانید برای بعضی از آنها تایید را خاموش کنید.
- آیپیهای مجاز را بنویسید. این بخش اجباری است و دکمه استفاده از آیپی من آیپی فعلی شما را اضافه میکند. محدوده هم قبول است، ولی دستکم
/16برای IPv4 و/32برای IPv6. - تیک پذیرفتن مسئولیت را بزنید و ساخت کلید را بزنید. مالک وبسایت و سازنده کلید بعدا هم میتوانند با نمایش کلید و وارد کردن رمز عبورشان کلید را دوباره ببینند.
مسئولیت نگهداری کلید، انتخاب دسترسیها و تایید عملیات حساس با خود شماست. فقط دسترسیهایی را بدهید که واقعا لازم است و کلیدی را که استفاده نمیکنید باطل کنید.
راهاندازی در هر ابزار
Claude Code
claude mcp add --transport http hichat https://app.hichat.ir/api/mcp --header "Authorization: Bearer cfm_xxx"
Claude Desktop
در Settings و بخش Developer روی Edit Config بزنید و این را به فایل اضافه کنید. برای این روش Node.js لازم است.
{
"mcpServers": {
"hichat": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.hichat.ir/api/mcp", "--header", "Authorization:${HICHAT_AUTH}"],
"env": { "HICHAT_AUTH": "Bearer cfm_xxx" }
}
}
}
Codex CLI
export HICHAT_MCP_KEY="cfm_xxx"
و در فایل ~/.codex/config.toml:
[mcp_servers.hichat]
url = "https://app.hichat.ir/api/mcp"
bearer_token_env_var = "HICHAT_MCP_KEY"
Gemini CLI
در فایل ~/.gemini/settings.json:
{
"mcpServers": {
"hichat": {
"httpUrl": "https://app.hichat.ir/api/mcp",
"headers": { "Authorization": "Bearer cfm_xxx" }
}
}
}
ChatGPT و Grok
این دو از راه API شرکت سازندهشان وصل میشوند. ابزار mcp را با آدرس سرور و هدر Authorization به درخواست Responses API بدهید. در این حالت درخواستها از سرورهای OpenAI یا xAI به های چت میرسند، پس محدوده آیپیهای خروجی آنها را از مستندات رسمیشان در فهرست مجاز بگذارید.
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5","tools":[{"type":"mcp","server_label":"hichat","server_url":"https://app.hichat.ir/api/mcp","headers":{"Authorization":"Bearer cfm_xxx"},"require_approval":"never"}],"input":"گفتگوهای باز امروز را خلاصه کن"}'
ابزارهای دیگر
هر کلاینتی که Streamable HTTP و هدر سفارشی را پشتیبانی کند وصل میشود. برای آزمایش:
curl -X POST https://app.hichat.ir/api/mcp \
-H "Authorization: Bearer cfm_xxx" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
ابزارها
هر کلید فقط ابزارهای مربوط به دسترسیهای خودش را در tools/list میبیند.
| ابزار | دسترسی | کار |
|---|---|---|
list_conversations | conversations:read | فهرست گفتگوها، حداکثر ۲۵ مورد در هر صفحه و ۹۰ روز اخیر |
get_conversation | conversations:read | جزئیات یک گفتگو |
get_messages | messages:read | پیامهای یک گفتگو، حداکثر ۵۰ پیام در هر صفحه |
get_visitor | visitors:read | مشخصات کاربر و صفحههای اخیر |
list_operators / list_departments | team:read | اپراتورها و دپارتمانها |
list_canned_replies | canned:read | پاسخهای آماده عمومی |
get_stats | stats:read | آمار یک بازه، حداکثر ۹۲ روز |
send_message | messages:write | فرستادن پیام یا یادداشت داخلی (حساس) |
close_conversation / assign_conversation / set_conversation_tags | conversations:write | بستن، سپردن و برچسب زدن (حساس) |
delete_conversation | conversations:delete | حذف همیشگی گفتگو (حساس) |
block_visitor / unblock_visitor / update_visitor | visitors:write | مسدود کردن و ویرایش کاربر (حساس) |
create_canned_reply / delete_canned_reply | canned:write | ساختن و حذف پاسخ آماده (حساس) |
check_approval | هر دسترسی تغییر | وضعیت یک درخواست حساس |
عملیات حساس
ابزارهای حساس به طور پیشفرض مستقیم اجرا نمیشوند. هر فراخوانی یک درخواست منتظر تایید میسازد و هوش مصنوعی این پاسخ را میگیرد:
{
"status": "pending_approval",
"requestId": "1049863...",
"summary": "بستن گفتگوی ۱۲۴ با علی",
"expiresInHours": 24
}
درخواست در پنل، بخش MCP و عملیات حساس، نمایش داده میشود. کسی که دسترسی تایید عملیات حساس MCP دارد آن را میخواند و تایید یا رد میکند. هنگام تایید، سرور دوباره اینها را بررسی میکند و فقط اگر همه درست باشد عملیات را اجرا میکند:
- کلید هنوز معتبر است، باطل نشده و منقضی نشده.
- کلید هنوز دسترسی همان عملیات را دارد.
- آیپیای که درخواست از آن آمده هنوز در فهرست مجاز کلید است.
- بسته وبسایت هنوز MCP دارد و سرویس MCP متوقف نشده.
- تاییدکننده دسترسی همان کار را در پنل دارد، مثلا برای بستن گفتگو دسترسی بستن گفتگو.
- گفتگو، کاربر یا پاسخ آماده هنوز وجود دارد و مال همین وبسایت است.
درخواستها بعد از ۲۴ ساعت منقضی میشوند و در هر لحظه حداکثر ۵۰ درخواست منتظر تایید برای هر وبسایت پذیرفته میشود. هوش مصنوعی میتواند با check_approval نتیجه را ببیند.
اجرای بدون تایید
مدیر برای هر کلید جدا مشخص میکند کدام عملیات حساس بدون تایید اجرا شود. این کار در پنجره ساختن یا ویرایش کلید، بخش عملیات حساس، انجام میشود و فقط کسی میتواند تایید را خاموش کند که دسترسی تایید عملیات حساس MCP و دسترسی همان کار را در پنل دارد. در این حالت هوش مصنوعی این پاسخ را میگیرد:
{
"status": "executed",
"requestId": "1049863...",
"summary": "برچسب گفتگوی ۱۲۴",
"result": { "ok": true }
}
هر اجرا به نام همان مدیر ثبت میشود و در سابقه با نشان «بدون تایید» دیده میشود. اگر دسترسی آن مدیر برداشته شود یا از تیم برود، عملیات دوباره منتظر تایید میماند. هر کلید حداکثر ۱۲۰ اجرای بدون تایید در ساعت دارد.
این عملیاتها همیشه به تایید نیاز دارند و نمیشود تاییدشان را خاموش کرد:
delete_conversation: حذف گفتگوblock_visitorوunblock_visitor: مسدود کردن و رفع مسدودی کاربرupdate_visitor: ویرایش مشخصات کاربر
محدودیتها
برای اینکه سرور برای همه پایدار بماند، این سقفها اعمال میشود:
| محدودیت | مقدار |
|---|---|
| درخواست برای هر کلید | ۶۰ در دقیقه و ۵٬۰۰۰ فراخوانی ابزار در روز |
| درخواست برای هر وبسایت | ۳۰۰ در دقیقه و ۲۰٬۰۰۰ فراخوانی ابزار در روز |
| درخواست همزمان | ۳ برای هر کلید و ۸ برای هر وبسایت |
| درخواست حساس تازه | ۳۰ در ساعت برای هر کلید |
| حجم درخواست | ۶۴ کیلوبایت |
| حجم پاسخ هر ابزار | حدود ۶۰ هزار حرف؛ بیشتر از آن کوتاه میشود |
| زمان اجرای هر ابزار | ۸ ثانیه |
| کلید فعال | ۱۰ کلید برای هر وبسایت |
تلاشهای پشت سر هم با کلید نادرست از یک آیپی، آن آیپی را برای چند دقیقه مسدود میکند.
خطاها
خطاهای احراز هویت و محدودیت با کد HTTP و یک پیام JSON-RPC برمیگردند:
| کد | معنی |
|---|---|
401 | کلید نامعتبر، باطلشده یا منقضی |
402 | بسته وبسایت MCP ندارد |
403 | آیپی مجاز نیست یا درخواست از مرورگر آمده |
413 | حجم درخواست زیاد است |
429 | درخواست زیاد یا همزمان؛ هدر Retry-After را ببینید |
503 | MCP موقتا از طرف های چت متوقف شده است |
خطای خود ابزارها، مثل ورودی نادرست یا نداشتن دسترسی، در پاسخ tools/call با isError: true میآید تا هوش مصنوعی بتواند خودش را اصلاح کند.
گزارش فراخوانیها
همه فراخوانیها با زمان، کلید، ابزار، نتیجه، مدت اجرا و آیپی در بخش گزارش زبانه MCP ثبت میشود و تا ۳۰ روز نگه داشته میشود. ساختن، ویرایش و باطل کردن کلیدها و تایید یا رد عملیات حساس هم در گزارش فعالیتهای وبسایت ثبت میشود.