Den här tråden fokuserar primärt på att använda Montrose:s MCP som ett vanligt API från kod. Dvs, direkta anrop från program eller skript, ej från en AI-bot.
Conzums pekade ut att Montrose nu har en MCP-endpoint:
Den går självklart att använda från AI-bottar, men det borde också gå bra att använda den som ett vanligt API!
Jag ser framför mig hur man kan t ex kan suga in siffror i sitt kalkylblad eller förbereda fondköp med rätt balansering, beräknat mot nuvarande innehav.
Vet inte om man skulle våga lita på ett lib som någon annan lägger upp, men man kan ju knappa egna anrop iaf
.
API
Verkar vara ett read-only-API där man kan förbereda ordrar åt användaren. Montrose skriver:
Du som kund kan exempelvis be om att köpa en specifik aktie för tillgänglig kassa i portföljen. Agenten förbereder då ordern i AI-gränssnittet och skickar tillbaka en länk vidare till Montrose, där du loggar in och själv godkänner ordern.
Vad kan jag göra med Montrose MCP?
Du kan till exempel:
- se hur din portfölj är fördelad mellan olika branscher
- få en överblick över dina största innehav
- följa nyheter kopplade till din portfölj
- få hjälp att analysera din exponering
- förbereda ett köp baserat på din tillgängliga kassa
(Text nedan lyft delvis från Montrose #619)
Kan inget om MCP-protokollet och jag misslyckades med att använda ett färdigt interaktivt utforskningsprogram (mcp-probe), men ett snabb-Claude:at Python-script gav nedanståend “tools” vid förfrågan mot servern. (Tips på att använda ett färdigt verktyg mottages gärna.)
==================================================
TOOLS (3)
==================================================
• get_holdings
Returns holdings for either one account (when accountId is provided) or all accessible accounts. Use GetUserAccounts first to find valid account IDs.
Parameters:
- accountId (['string', 'null']) *: Optional account ID. If omitted, holdings are returned for all accessible accounts.
• create_trade_ticket
Creates a pre-filled trade ticket URL for the Montrose app. Specify side (Buy/Sell), quantity or amount, and an instrument identifier. Instruments can be specified by orderbookId directly, or by ticker/name which will be resolved automatically. Returns a URL that opens the trade ticket in the Montrose app with the order details pre-filled.
Parameters:
- side (string) *: The side of the order: Buy or Sell.
- orderbookId (['integer', 'null']): Optional orderbookId (int) to identify the instrument directly.
- ticker (['string', 'null']): Optional ticker (string) to identify the instrument by ticker symbol, e.g. "VOLV B".
- name (['string', 'null']): Optional instrument name (string) to search for the instrument.
- quantity (['number', 'null']): Optional number of shares to trade. Exactly one of quantity or amount must be provided.
- amount (['number', 'null']): Optional SEK amount to trade. Exactly one of quantity or amount must be provided.
- price (['number', 'null']): Optional price for the order.
- accountId (['string', 'null']): Optional account ID. Use GetUserAccounts to find valid account IDs.
• get_user_accounts
Returns all user accounts with stable account IDs and display names. Use this tool to discover valid account IDs before calling GetHoldings for a specific account.
Anonymiserat resultat från get_holdings, med accountId: null:
[
{
"accountId": "00000000-0000-0000-0000-000000000000",
"accountNumber": "1234567",
"accountName": "Mitt konto",
"currency": "SEK",
"summary": {
"totalMarketValue": 123.45,
"availableForPurchase": 12.34,
"totalValue": 123.45,
"currency": "SEK"
},
"positions": [
{
"instrumentName": "L\u00C4NSF\u00D6RS\u00C4KRINGAR GLOBAL INDEX",
"ticker": "LF GLOB",
"orderbookId": 3361,
"possibleOrderbookIds": [],
"quantity": 12.34,
"marketValue": {
"accountCurrency": 123.45,
"instrumentCurrency": 123.45
},
"unrealizedResult": {
"accountCurrency": 12.34,
"instrumentCurrency": 12.34
},
"unrealizedResultPercent": 1.23,
"instrumentCurrency": "SEK",
"fxRate": 1
}
]
}
]
Python-script
Här är skriptet jag använt ovan:
mcp-query.py (Ser rimligt men kanske inte optimalt ut. Såg inga rader som läcker data.)
requirements.txt
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 mcp-query.py
Rust?
Lite sugen på att se om det går att göra något i Rust, men som sagt för dåligt insatt i MCP. Det här kanske är en bra start:
https://github.com/modelcontextprotocol/rust-sdk/blob/main/docs/OAUTH_SUPPORT.md
https://github.com/modelcontextprotocol/rust-sdk/blob/main/examples/clients/src/auth/oauth_client.rs