اتصال Claude، ChatGPT و Gemini به بورس تهران با MCP

تیم روشا · ۲۳ آبان ۱۴۰۵

با سرور MCP روشا، دستیار هوش مصنوعی شما دادهٔ واقعی بورس تهران، فرابورس و صندوق‌های سرمایه‌گذاری را مستقیم از روشا می‌خواند. راه‌اندازی در Claude Code یک خط است و در Claude Desktop، Cursor و Gemini CLI چند خط تنظیمات. نشانی سرور https://poolick.ir/mcp است و با همان کلید API کار می‌کند.

پلن رایگان هم MCP را دارد. یک کلید رایگان بگیرید و ادامه بدهید.

MCP چیست؟

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

فایدهٔ آن برای دادهٔ بازار روشن است. مدل زبانی قیمت دیروز فولاد را نمی‌داند و اگر بپرسید، ممکن است عددی بسازد. با MCP، مدل عدد را از روشا می‌گیرد و شما می‌بینید کدام ابزار با چه ورودی‌ای صدا زده شده است.

چطور روشا را به Claude Code وصل کنم؟

کلید را در ROSHA_KEY بگذارید و این دستور را اجرا کنید:

Terminal window
claude mcp add --transport http rosha https://poolick.ir/mcp \
--header "Authorization: Bearer $ROSHA_KEY"

با claude mcp list می‌بینید که سرور rosha وصل است.

تنظیم در Claude Desktop

Claude Desktop سرورهای محلی را از فایل claude_desktop_config.json می‌خواند. برای سرور راه‌دور با سرآیند کلید، از پل mcp-remote استفاده کنید. Node.js باید نصب باشد:

{
"mcpServers": {
"rosha": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://poolick.ir/mcp",
"--header", "Authorization: Bearer rosha_xxxxxxxx_your-secret"
]
}
}
}

rosha_xxxxxxxx_your-secret را با کلید خودتان عوض کنید و برنامه را دوباره باز کنید.

تنظیم در Cursor

در فایل .cursor/mcp.json پروژه یا ~/.cursor/mcp.json:

{
"mcpServers": {
"rosha": {
"url": "https://poolick.ir/mcp",
"headers": { "Authorization": "Bearer rosha_xxxxxxxx_your-secret" }
}
}
}

تنظیم در Gemini CLI

در فایل ~/.gemini/settings.json:

{
"mcpServers": {
"rosha": {
"httpUrl": "https://poolick.ir/mcp",
"headers": { "Authorization": "Bearer rosha_xxxxxxxx_your-secret" }
}
}
}

ChatGPT و مدل‌های OpenAI

سرور MCP روشا با کلید در سرآیند Authorization کار می‌کند و هنوز OAuth ندارد. به همین دلیل، تا آبان ۱۴۰۵ افزودن آن از داخل برنامهٔ ChatGPT ممکن نیست. مدل‌های OpenAI را از راه API به روشا وصل کنید:

import os
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-5",
tools=[{
"type": "mcp",
"server_label": "rosha",
"server_url": "https://poolick.ir/mcp",
"headers": {"Authorization": f"Bearer {os.environ['ROSHA_KEY']}"},
"require_approval": "never",
}],
input="میانگین حجم معاملات فولاد در ۳۰ روز معاملاتی اخیر چقدر بوده؟",
)
print(response.output_text)

این کد به pip install openai و متغیر OPENAI_API_KEY نیاز دارد. تنظیم Codex CLI، Gemini API و بقیهٔ کلاینت‌ها در راه‌اندازی در هر دستیار آمده است.

چه ابزارهایی در دسترس است؟

سرور ۱۲ ابزار دارد. هر ابزار یک شیء JSON برمی‌گرداند:

ابزار کار
search_instruments جست‌وجوی نماد با نام، نماد یا کد
get_instrument مشخصات یک نماد
get_daily_history سابقهٔ روزانه، خام یا تعدیل‌شده
get_client_type_history خرید و فروش حقیقی و حقوقی
get_quote آخرین قیمت و دفتر سفارش
get_intraday_bars کندل‌های درون‌روزی یک روز
get_index_history سابقهٔ شاخص‌ها
get_trading_days روزهای معاملاتی یک بازه
search_funds جست‌وجوی صندوق
get_fund_types انواع صندوق
get_fund مشخصات و آخرین مقادیر یک صندوق
get_fund_history سابقهٔ NAV و بازده صندوق

ورودی‌ها و پیش‌فرض‌ها در مرجع ابزارها است. برای ریز معاملات و مقادیر روزانهٔ زیرصندوق‌ها ابزار MCP وجود ندارد؛ این دو فقط در REST API هستند.

از دستیار چه بپرسم؟

پرسش‌هایی که خوب جواب می‌گیرند، نماد و بازه را مشخص می‌کنند:

  • «قیمت پایانی تعدیل‌شدهٔ فولاد در ۶۰ روز معاملاتی اخیر را بگیر و بیشترین و کمترین را با تاریخ شمسی بگو.»
  • «در ۲۰ روز اخیر، در چند روز خرید حقیقی‌ها در خودرو از فروش آن‌ها بیشتر بوده؟»
  • «شاخص کل و شاخص کل هم‌وزن را از ابتدای ۱۴۰۵ مقایسه کن.»
  • «پنج صندوق درآمد ثابت با بیشترین خالص ارزش دارایی را با NAV ابطال فهرست کن.»
  • «بورس در آبان ۱۴۰۵ چند روز معاملاتی داشته؟»

چند نکته برای پاسخ درست:

  • واحد را بگویید. همهٔ مبالغ به ریال برمی‌گردد. اگر تومان می‌خواهید، در پرسش بنویسید.
  • تعدیل را مشخص کنید. برای مقایسهٔ قیمت در بازهٔ بلند، بگویید قیمت تعدیل‌شده می‌خواهید.
  • بازه را کوتاه نگه دارید. هر ابزار حداکثر ۵۰۰ ردیف برمی‌گرداند تا پاسخ در حافظهٔ مدل جا شود. برای ده سال دادهٔ روزانه، REST API ابزار درست است.
  • محاسبه را بازبینی کنید. مدل داده را درست می‌گیرد، اما ممکن است در جمع و میانگین اشتباه کند. از او بخواهید محاسبه را با اجرای کد انجام بدهد یا ردیف‌ها را نشان بدهد.

دستیار تحلیلگر مجاز نیست و پاسخ او توصیهٔ سرمایه‌گذاری نیست. روشا فقط داده را می‌رساند.

مصرف MCP چطور حساب می‌شود؟

هر درخواست HTTP به /mcp یک درخواست از سقف دقیقه‌ای و سهمیهٔ روزانهٔ کلید شما کم می‌کند. یک گفت‌وگو چند درخواست می‌فرستد: برقراری اتصال، گرفتن فهرست ابزارها و هر بار صدا زدن یک ابزار. پس یک پرسش ساده معمولاً چند درخواست مصرف می‌کند، نه یکی.

  • پلن شما باید خانوادهٔ mcp را داشته باشد. پلن رایگان آن را دارد.
  • همهٔ ترافیک MCP در صفحهٔ مصرف پنل با نام مسیر mcp دیده می‌شود.
  • اگر به سقف برسید، سرور پاسخ 429 با Retry-After می‌دهد و دستیار خطا را به شما نشان می‌دهد. سقف دقیقه‌ای در ابتدای دقیقهٔ بعد و سهمیهٔ روزانه در نیمه‌شب تهران صفر می‌شود.

سقف هر پلن در محدودیت‌ها و قیمت‌ها آمده است.

امنیت کلید

  • کلید را در مخزن کد قرار ندهید. فایل‌های تنظیمات بالا را از git بیرون نگه دارید یا از متغیر محیطی استفاده کنید.
  • برای هر ابزار یا همکار، در صورت امکان پلن، کلید جدا بسازید تا مصرف هر کدام جدا دیده شود.
  • اگر کلیدی لو رفت، آن را در پنل باطل کنید. کلید باطل‌شده حداکثر تا ۶۰ ثانیه بعد از کار می‌افتد.

معرفی کوتاه سرور و نمونهٔ گفت‌وگو در صفحهٔ MCP است.

Esc

نمونه: «فولاد»، «شاخص کل»، «عیار»، «rate limit»