MCP Server
Model Context Protocol
TradeWise MCP Server, AI asistanlarının (Claude, Cursor, GPT vb.) doğrudan TradeWise işlem altyapısına erişmesini sağlar. Standart Model Context Protocol (MCP) üzerinden bağlanan her AI istemcisi, hesap sorgulama, emir gönderme, bot yönetimi ve OCO emirleri gibi tüm işlemleri doğal dil ile gerçekleştirebilir.
Bu Sayfada
MCP Nedir?
Model Context Protocol, AI asistanlar ile harici sistemler arasındaki standart iletişim protokolüdür.
AI İstemci
Claude Desktop, Cursor IDE, Continue.dev veya MCP destekleyen herhangi bir AI asistanı.
MCP Protokolü
JSON-RPC 2.0 tabanlı standart protokol. SSE (Server-Sent Events) ve Streamable HTTP transportlarını destekler.
TradeWise Araçları
24 adet tanımlı araç: hesap sorgulama, emir gönderme, bot yönetimi, OCO emirleri ve daha fazlası.
send_order, create_level_bot, create_oco_order vb.) kullanmadan önce mutlaka kullanıcı onayı alın.
Mimari
TradeWise MCP Server, AI istemcileri ile TradeWise altyapısı arasında güvenli bir köprü görevi görür.
┌─────────────────┐ MCP (SSE/HTTP) ┌──────────────────────┐
│ AI İstemci │ ◄──────────────────────► │ TradeWise │
│ │ │ MCP Server │
│ • Cursor IDE │ OAuth 2.1 Bearer │ mcp.tradewise.com.tr│
│ • Claude │ ◄──────────────────────► │ │
│ • GPT │ │ 24 Tool │
└─────────────────┘ └──────────┬───────────┘
│ REST (JWT)
┌──────────▼───────────┐
│ TradeWise API │
│ Katmanı │
└──────────┬───────────┘
│ Internal
┌──────────▼───────────┐
│ Aracı Kurum │
│ Altyapısı │
└──────────────────────┘
MCP Server
https://mcp.tradewise.com.tr/mcp
Transport
SSE: /sse + /messages
HTTP: /mcp
Bağlantı Kurma
MCP destekleyen herhangi bir istemciyi TradeWise MCP Server'a bağlayabilirsiniz.
Cursor IDE
Cursor ayarlarında Settings → MCP → Add Server yolunu izleyin veya .cursor/mcp.json dosyasına ekleyin:
{
"mcpServers": {
"tradewise": {
"url": "https://mcp.tradewise.com.tr/sse",
"env": {}
}
}
}
Claude Desktop
Claude Desktop yapılandırma dosyasına (claude_desktop_config.json) ekleyin:
{
"mcpServers": {
"tradewise": {
"type": "sse",
"url": "https://mcp.tradewise.com.tr/sse"
}
}
}
Streamable HTTP (Generic)
MCP 2025-03-26 spesifikasyonunu destekleyen istemciler Streamable HTTP endpoint'ini kullanabilir:
# POST /mcp — JSON-RPC 2.0 isteklerini doğrudan gönder
curl -X POST https://mcp.tradewise.com.tr/mcp \
-H "Authorization: Bearer MCP_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
GET /sse ile bağlanır, ardından POST /messages?sessionId=... ile JSON-RPC mesajları gönderir. Endpoint adresi SSE olayı olarak otomatik iletilir.
Kimlik Doğrulama
TradeWise MCP Server, OAuth 2.1 Dynamic Client Registration akışını kullanır. API Anahtarınızı MCP istemcisine vermeniz yeterlidir.
Adım Adım Akış
İstemci Kaydı (Otomatik)
MCP istemcisi POST /.well-known/oauth-authorization-server keşif endpoint'ini okur ve ardından POST /oauth/register ile otomatik kayıt olur.
Yetkilendirme İsteği
İstemci GET /oauth/authorize?client_id=...&code_challenge=... ile yönlendirilir. Tarayıcı açılır ve kullanıcıdan API Anahtarı girilmesi istenir.
API Anahtarı Doğrulama
MCP Server, girilen API Anahtarını TradeWise Auth servisine ileterek JWT token alır ve kullanıcı kimliğini doğrular.
MCP Access Token
İstemci POST /oauth/token ile authorization code'u MCP Access Token'a dönüştürür. Bu token tüm araç çağrılarında Authorization: Bearer header'ında gönderilir.
Manuel Token Testi
# MCP araçlarını listele
curl -X POST https://mcp.tradewise.com.tr/mcp \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Hesap Araçları
Hesap listesi, portföy, günlük emirler ve brokerage girişi için araçlar.
Oturum açmış kullanıcının kimlik bilgilerini (userId, e-posta, rol) döner. Parametre gerektirmez. Araç zincirine başlamadan önce kullanıcı kimliğini doğrulamak için çağrılabilir.
PARAMETRELER
Parametre yok.
Kullanıcının yapılandırılmış tüm aracı kurumlardaki hesaplarını tek liste olarak döner. Dönen accountNumber ve brokerageCode değerleri tüm emir araçlarında kullanılır.
PARAMETRELER
— Parametre yok —
YANIT ALANLARI
| Alan | Açıklama |
|---|---|
| accountNumber | Hesap numarası — emir araçlarında account_number olarak kullanın |
| accountName | Hesap adı |
| brokerageCode | Aracı kurum kodu — emir araçlarında brokerage_code olarak kullanın |
| brokerageName | Aracı kurum adı |
Belirtilen hesabın anlık portföyünü (pozisyonlar) döner. İsteğe bağlı olarak açık emirleri de dahil edebilir.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu (get_accounts yanıtından) |
| account_number | string zorunlu | Hesap numarası (get_accounts yanıtından) |
| include_orders | boolean isteğe bağlı | Açık emirleri de getir (varsayılan: false) |
Hesabın o iş gününe ait tüm emirlerini listeler. Kurum ve hesap bazında hız sınırı uygulanabilir.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu (get_accounts yanıtından) |
| account_number | string zorunlu | Hesap numarası |
Emir Araçları
Gerçek para ve piyasa riski taşır. Kullanıcı onayı almadan emir göndermeyin.
Tek bir hisse emri gönderir. Önce get_accounts ile hesap listesi alın.
| Parametre | Tür | Açıklama |
|---|---|---|
| account_number | string zorunlu | Hesap numarası (get_accounts yanıtındaki accountNumber) |
| brokerage_code | string zorunlu | Aracı kurum kodu (get_accounts yanıtındaki brokerageCode) |
| symbol | string zorunlu | BIST kodu (ör. THYAO, GARAN) |
| quantity | integer zorunlu | Lot/adet (pozitif tam sayı) |
| buy_sell | integer zorunlu | 1 = alış, 2 = satış |
| order_type | integer zorunlu | 1 = piyasa, 2 = limit |
| price | number isteğe bağlı | Limit fiyat (piyasa emrinde 0) |
Zincir emir gönderir — mevcut bir emrin tamamlanmasına bağlı koşullu emir.
| Parametre | Tür | Açıklama |
|---|---|---|
| account_number | string zorunlu | Hesap numarası (get_accounts yanıtından) |
| brokerage_code | string zorunlu | Aracı kurum kodu (get_accounts yanıtından) |
| symbol | string zorunlu | BIST kodu |
| quantity | integer zorunlu | Miktar |
| buy_sell | integer zorunlu | 1 = alış, 2 = satış |
| order_type | integer zorunlu | 1 = piyasa, 2 = limit |
| price | number isteğe bağlı | Limit fiyat |
| reference_order_no | string zorunlu | Bağlanacak üst emrin numarası |
Tek istekte birden fazla emir gönderir. Her emir nesnesi kendi hesap ve kurum bilgisini taşır.
| Parametre | Tür | Açıklama |
|---|---|---|
| orders | array zorunlu | Emir nesneleri dizisi. Her nesne: account_number, brokerage_code, symbol, quantity, buy_sell, order_type, price |
Açık bekleyen bir emri iptal eder.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| order_no | string zorunlu | İptal edilecek emir numarası |
| symbol | string zorunlu | Hisse kodu |
Birden fazla emri tek istekte toplu olarak iptal eder.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| items | array zorunlu | İptal nesneleri: her nesne order_no ve symbol içerir |
Sistem Araçları
Hesaba ait tüm bot sistemlerini listeleyen araç.
Hesaba ait tüm bot sistemlerini listeler: LevelBot, TradingViewBot, StockBot, SignalBot vb.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| bot_type | integer[] isteğe bağlı | Bot tipi filtresi; boş = tüm tipler |
| is_active | integer isteğe bağlı | 1=hepsi, 2=aktifler, 3=pasifler (varsayılan: 1) |
| is_deleted | integer isteğe bağlı | 1=hepsi, 2=silinmemişler, 3=silinenler (varsayılan: 2) |
LevelBot Araçları
LevelBot, belirlenen alış/satış fiyat seviyelerinde otomatik emir gönderen algo-bot türüdür. 6 araç ile tam CRUD + izleme desteği sunar.
Hesaba ait tüm LevelBot'ları listeler.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| with_passive | integer isteğe bağlı | 1=pasifler dahil, 0=yalnız aktifler (varsayılan: 1) |
| with_deleted | integer isteğe bağlı | 1=silinenler dahil, 0=silinmemişler (varsayılan: 1) |
ID'ye göre tek bir LevelBot'u detaylarıyla döner.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | LevelBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
Yeni bir LevelBot oluşturur. level_bot_details dizisinde her sembol için ayrı fiyat aralıkları ve miktar tanımlanır.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| name | string zorunlu | Bot adı |
| is_active | boolean zorunlu | Bot aktif mi? |
| real_bot | boolean zorunlu | Gerçek emir (true) veya demo (false) |
| buy_gap | number isteğe bağlı | Alış gap değeri |
| sell_gap | number isteğe bağlı | Satış gap değeri |
| bot_start_time_string | string isteğe bağlı | Başlangıç saati (ör. "09:30") |
| bot_end_time_string | string isteğe bağlı | Bitiş saati (ör. "17:30") |
| level_bot_details | array isteğe bağlı | Sembol detayları: symbol, max_buy_price, min_buy_price, max_sell_price, min_sell_price, buy_quantity, sell_quantity |
Mevcut bir LevelBot'u günceller. Önce get_level_bot ile mevcut yapıyı alın, değiştirmek istediğiniz alanları güncelleyin.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | Güncellenecek LevelBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
| name | string zorunlu | Bot adı |
| is_active | boolean zorunlu | Bot aktif mi? |
| level_bot_details | array isteğe bağlı | Tüm sembol detayları (mevcut listeyi tam olarak gönderin) |
Bir LevelBot için aktif (bekleyen/devam eden) çift emirleri döner.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | LevelBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
Bir LevelBot'un tamamlanmış işlem geçmişini sayfalı olarak döner.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | LevelBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
| start_date | string zorunlu | Başlangıç tarihi (ISO 8601) |
| end_date | string zorunlu | Bitiş tarihi (ISO 8601) |
| page | integer isteğe bağlı | Sayfa no (varsayılan: 1) |
| page_size | integer isteğe bağlı | Sayfa başına kayıt (varsayılan: 10) |
TradingViewBot Araçları
TradingView webhook sinyallerine göre otomatik emir gönderen bot. 5 araç ile tam CRUD + çift emir izleme.
Hesaba ait tüm TradingViewBot'ları listeler.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| with_passive | integer isteğe bağlı | 1=pasifler dahil (varsayılan: 1) |
| with_deleted | integer isteğe bağlı | 1=silinenler dahil (varsayılan: 1) |
ID'ye göre tek bir TradingViewBot'u detaylarıyla döner.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | TradingViewBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
Yeni bir TradingViewBot oluşturur. Sembol bazında fiyat aralıkları ve miktarlar trading_view_bot_details dizisinde tanımlanır.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| name | string zorunlu | Bot adı |
| is_active | boolean zorunlu | Bot aktif mi? |
| real_bot | boolean zorunlu | Gerçek emir veya demo |
| quantity | integer isteğe bağlı | Varsayılan emir miktarı |
| stop_loss | number isteğe bağlı | Stop-loss yüzdesi |
| take_profit | number isteğe bağlı | Take-profit yüzdesi |
| trading_view_bot_details | array isteğe bağlı | Sembol detayları: symbol, quantity, max_buy_price, min_buy_price vb. |
Mevcut bir TradingViewBot'u günceller. Önce get_trading_view_bot ile mevcut yapıyı alın.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | TradingViewBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
| name | string zorunlu | Bot adı |
| is_active | boolean zorunlu | Bot aktif mi? |
| trading_view_bot_details | array isteğe bağlı | Tüm sembol detayları |
Bir TradingViewBot için hesap numarasına göre çift emirleri döner.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | TradingViewBot ID |
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| with_passive | integer isteğe bağlı | 1=tamamlananlar dahil, 0=yalnız aktifler (varsayılan: 0) |
OCO Emir Araçları
OCO (One-Cancels-the-Other) emirleri borsaya gönderilmez; TradeWise veritabanında saklanır. Her grup 1 Stop-Loss + 1 veya daha fazla kademeli Take-Profit emrinden oluşur. Anlık fiyat TP seviyesine ulaşırsa o kademe, SL seviyesine düşerse tüm grup için market satış verilir.
BIST Fiyat Kademe Kuralları
0,01 adım
20,00 – 49,99 → 0,02 adım
50,00 – 99,99 → 0,05 adım
100,00 – 249,99 → 0,10 adım
250,00 – 499,99 → 0,25 adım
500,00 – 999,99 → 0,50 adım
1.000 – 2.499,99 → 1,00 adım
2.500 ve üzeri → 2,50 adım
Hesaba ait tüm OCO emir satırlarını listeler. TP ve SL ayrı satırlar olarak gelir; aynı groupId değerine sahip satırlar aynı gruba aittir.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
Yeni bir OCO emir grubu oluşturur. Tüm fiyatlar BIST kademe kurallarına uygun olmalı; TP fiyatları SL fiyatından yüksek olmalıdır.
| Parametre | Tür | Açıklama |
|---|---|---|
| brokerage_code | string zorunlu | Aracı kurum kodu |
| account_number | string zorunlu | Hesap numarası |
| symbol | string zorunlu | Hisse kodu (ör. EREGL) |
| stop_loss_price | number zorunlu | Stop-Loss fiyatı (BIST kademelere uygun) |
| stop_loss_quantity | integer zorunlu | Toplam pozisyon miktarı |
| take_profit_items | array zorunlu | Kademeli TP'ler: her nesne price ve quantity içerir. TP fiyatı SL'den büyük olmalı. |
| due_date | string isteğe bağlı | Vade tarihi (ISO 8601) |
| notes | string isteğe bağlı | Not |
{
"brokerage_code": "TradeWiseYatirim",
"account_number": "123456",
"symbol": "EREGL",
"stop_loss_price": 21.00,
"stop_loss_quantity": 100,
"take_profit_items": [
{ "price": 22.20, "quantity": 40 },
{ "price": 23.00, "quantity": 40 },
{ "price": 24.00, "quantity": 20 }
]
}
Bir OCO emir grubunu ve gruptaki tüm aktif emirleri iptal eder.
| Parametre | Tür | Açıklama |
|---|---|---|
| id | integer zorunlu | OCO emir ID (get_oco_orders yanıtındaki id) |
| brokerage_code | string zorunlu | Aracı kurum kodu |
Tedbir Araçları
BIST'in tedbirli hisseler verisini sorgular (Açığa Satış Yasağı, Brüt Takas, Tek Fiyat İşlem vb.).
Tümü salt-okunur ve kamuya açık veriye dayanır; restriction_type sayı (ör. 3) veya isim
(ör. BrutTakas) olarak verilebilir.
Bir hissenin şu an belirli bir tedbirde olup olmadığını döner. Örn: "EREGL brüt takasta mı?". Yalnızca aktif tedbirlere bakar.
PARAMETRELER
| Parametre | Tür | Açıklama |
|---|---|---|
| code | string zorunlu | Hisse kodu (ör. EREGL, ASELS) |
| restriction_type | string zorunlu | Tedbir tipi — sayı (3) veya isim (BrutTakas) |
Belirli bir tedbir tipinde şu an bulunan tüm hisseleri listeler. Örn: "Brüt takastaki tüm hisseler".
PARAMETRELER
| Parametre | Tür | Açıklama |
|---|---|---|
| restriction_type | string zorunlu | Tedbir tipi — sayı (3) veya isim (BrutTakas) |
Bir hissenin tüm tedbirlerini (aktif + geçmiş) tarih aralıklarıyla döner. Aktif tedbirlerde bitiş tarihi (validTo) boştur.
PARAMETRELER
| Parametre | Tür | Açıklama |
|---|---|---|
| code | string zorunlu | Hisse kodu (ör. ASELS) |
Örnek Konuşmalar
AI asistanı ile TradeWise MCP araçlarını nasıl kullanabileceğinize dair gerçek dünya senaryoları.
Portföy Sorgulama
get_accounts) ardından portföyünüzü sorguluyorum… (get_portfolio)TradeWiseYatirim hesabınızda şu an 3 pozisyon var: THYAO ×200, GARAN ×500, EREGL ×100.
Limit Emir Gönderme
THYAO — 100 lot ALIŞ, limit 52,50 TL, TradeWiseYatirim hesabı.
Bu emri göndermemi onaylıyor musunuz?
send_order) Emir No: BRS-20250412-001, Durum: Beklemede.
OCO Emir Oluşturma
create_oco_order)Oluşturuldu. Grup ID: 1042. TradeWise EREGL'yi izlemeye başladı.
LevelBot Yönetimi
get_level_bots)3 aktif bot bulundu. Her birinin çift emirleri kontrol ediliyor… (
get_level_bot_pair_orders × 3)Bot #12 "THYAO Scalper": 4 açık çift emir
Bot #15 "GARAN Level": 2 açık çift emir
Bot #18 "EREGL Range": 6 açık çift emir
Tüm Araçlar (24)
TradeWise MCP Server'da tanımlı tüm araçların hızlı referans tablosu.
| Araç Adı | Kategori | Tür | Açıklama |
|---|---|---|---|
| get_user_info | Hesap | OKUMA | Oturum kullanıcı bilgisi |
| get_accounts | Hesap | OKUMA | Tüm aracı kurum hesapları |
| get_portfolio | Hesap | OKUMA | Anlık portföy (pozisyonlar) |
| get_daily_orders | Hesap | OKUMA | Günlük emir listesi |
| send_order | Emir | YAZMA | Tek hisse emri gönder |
| send_chain_order | Emir | YAZMA | Zincir emir gönder |
| send_order_batch | Emir | YAZMA | Toplu emir gönder |
| cancel_order | Emir | İPTAL | Tekil emir iptal |
| cancel_order_batch | Emir | İPTAL | Toplu emir iptal |
| get_systems | Sistem | OKUMA | Tüm bot sistemleri listesi |
| get_level_bots | LevelBot | OKUMA | LevelBot listesi |
| get_level_bot | LevelBot | OKUMA | Tek LevelBot detayı |
| create_level_bot | LevelBot | YAZMA | Yeni LevelBot oluştur |
| update_level_bot | LevelBot | GÜNCELLE | LevelBot güncelle |
| get_level_bot_pair_orders | LevelBot | OKUMA | Aktif çift emirler |
| get_level_bot_transaction_history | LevelBot | OKUMA | İşlem geçmişi (sayfalı) |
| get_trading_view_bots | TVBot | OKUMA | TradingViewBot listesi |
| get_trading_view_bot | TVBot | OKUMA | Tek TradingViewBot detayı |
| create_trading_view_bot | TVBot | YAZMA | Yeni TradingViewBot oluştur |
| update_trading_view_bot | TVBot | GÜNCELLE | TradingViewBot güncelle |
| get_trading_view_bot_pair_orders | TVBot | OKUMA | Çift emirler |
| get_oco_orders | OCO | OKUMA | OCO emir listesi |
| create_oco_order | OCO | YAZMA | Yeni OCO emir grubu |
| cancel_oco_order | OCO | İPTAL | OCO grup iptali |
| check_symbol_restriction | Tedbir | OKUMA | Hisse şu an bu tedbirde mi? |
| get_restricted_symbols_by_type | Tedbir | OKUMA | Bir tedbir tipindeki tüm hisseler |
| get_symbol_restrictions | Tedbir | OKUMA | Hissenin tedbir geçmişi (aktif+geçmiş) |