Tinkoff Invest MCP服务器
通过模型上下文协议与Tinkoff Investment API一起工作的MCP服务器。提供读取市场数据、执行交易操作和沙盒测试的工具。
特点
- 支持Tinkoff Invest API -获得所有主要服务
- MCP兼容性 与任何MCP客户合作
- 模块化体系结构 -为不同类型的操作划分配置文件
- Sandbox模式 使用虚拟货币进行安全测试
- Spring Boot -可靠且可扩展的基础
机会
📊 数据读取(Read-MCP)
- 工具:品牌信息,基本面指标,发行人报告,共识预测
- 市场数据:蜡烛,杯子,交易状态,最新交易
- 用户数据:帐户、关税和限制
💼 贸易(Trade-MCP)
- 普通订单:市场、限价和最佳价格
- 止损单:具有不同类型的触发器和有效期
🧪 沙盒(沙盒mcp)
- 全套工具 虚拟货币测试
- 账户管理:开幕、闭幕、充资
- 测试策略 无真实货币风险
快速启动
先决条件
- Java 21 或以上
- API Tinkoff投资公司 (在私人办公室收到)
安装
- 克隆存储库:
git clone https://github.com/Sprytin/tinkoff-investments-mcp-server.git
cd tinkoff-investments-mcp-server- 设置令牌:
编辑 src/main/resources/application.yml:
tinkoff:
token: "ВСТАВИТЬ_ВАШ_ТОКЕН"- Соберите проект:
./gradlew build与MCP客户端一起使用
克劳德桌面
添加到配置 claude_desktop_config.json:
{
"mcpServers": {
"tinkoff-invest": {
"command": "java",
"args": ["-jar", "/path/to/rich-0.0.1-SNAPSHOT.jar"],
"env": {
"SPRING_PROFILES_ACTIVE": "read-mcp,sandbox-mcp"
}
}
}
}其他MCP客户
服务器使用STDIO传输,因此与任何支持该协议的MCP客户端兼容。
Конфигурация
Spring 个人资料
服务器支持以下配置文件 :
read-mcp-数据阅读器trade-mcp-交易工具(需要交易代币)sandbox-mcp-沙盒工具
默认情况下,所有配置文件都被激活: read-mcp,trade-mcp,sandbox-mcp
配置选项
spring:
application:
name: rich
ai:
mcp:
server:
name: rich-mcp-server # Имя сервера
version: 1.0.0 # Версия
type: SYNC # Тип сервера
transport: STDIO # Транспорт STDIO
profiles:
active: read-mcp,trade-mcp,sandbox-mcp # Активные профили
tinkoff:
token: "ВАШ_ТОКЕН" # Токен API
app-name: rich-mcp-server # Имя приложения
target: invest-public-api.tinkoff.ru:443 # Адрес APIAPI工具
数据读取
工具(InstrumentsTools)
getBrandBy(uid)-品牌信息getBrands()-品牌列表getAssetFundamentals(assetUids)基本度量getAssetReports(instrumentId, from, to)-发行人报告getConsensusForecasts(limit, pageNumber)共识预测getForecastBy(instrumentId)-工具预测getRiskRates()-风险参数
市场数据(MarketDataTools)
getCandles(instrumentId, from, to, interval)历史蜡烛getOrderBook(instrumentId, depth)一杯报价getTradingStatuses(instrumentIds)-投标状态getLastTrades(instrumentId, from, to)最新交易getClosePrices(instrumentId, from, to)-收盘价getTradingStatus(instrumentId)-工具交易状态
用户数据(UsersTools)
getUserTariff()-关税和限额getAccounts()-帐户列表
贸易
普通订单(OrdersTools)
postOrder(accountId, instrumentId, quantity, direction, orderType, limitPriceUnits?, limitPriceNano?)-创建订单postOrderAsync(...)-异步创建订单
(3)定购单(StopOrdersTools)
postStopOrder(accountId, instrumentId, direction, stopOrderType, expirationType, priceUnits, priceNano, stopPriceUnits, stopPriceNano, quantity)-创建停止订单getStopOrders(accountId)-止损单列表cancelStopOrder(accountId, stopOrderId)-取消停止订单
沙盒
全套测试工具:
- 账户管理:
openSandboxAccount,closeSandboxAccount,getSandboxAccounts - 财务:
sandboxPayIn,getSandboxWithdrawLimits - 订单:
postSandboxOrder,replaceSandboxOrder,cancelSandboxOrder,getSandboxOrders,getSandboxOrderState - 投资组合:
getSandboxPortfolio,getSandboxPositions - 操作 :
getSandboxOperations,getSandboxOperationsByCursor - Анализ:
getSandboxMaxLots
使用示例
获取市场数据
// Исторические свечи за последний час
getCandles("BBG004730N88", 1704067200, 1704070800, CANDLE_INTERVAL_1_MIN)
// Стакан котировок
getOrderBook("BBG004730N88", 20)
// Статус торгов
getTradingStatus("BBG004730N88")创建订单
// Лимитный ордер на покупку
postOrder(
accountId = "1234567890",
instrumentId = "BBG004730N88",
quantity = 10,
direction = ORDER_DIRECTION_BUY,
orderType = ORDER_TYPE_LIMIT,
limitPriceUnits = 150,
limitPriceNano = 500000000
)沙箱
// Открыть sandbox счет
val account = openSandboxAccount()
// Пополнить счет
sandboxPayIn(account.accountId, 100000, 0, "rub")
// Создать тестовый ордер
postSandboxOrder(
accountId = account.accountId,
instrumentId = "BBG004730N88",
quantity = 1,
direction = ORDER_DIRECTION_BUY,
orderType = ORDER_TYPE_MARKET
)Разработка
Структура проекта
src/main/kotlin/tech/sprytin/rich/
├── api/ # Интерфейсы
├── config/ # Конфигурация
├── read/ # Инструменты чтения
├── trade/ # Торговые инструменты
└── sandbox/ # Sandbox инструменты装配和测试
# Сборка
./gradlew build
# Тестирование
./gradlew test
# Запуск в режиме разработки
./gradlew bootRun安全
- 永远不要将令牌存储在代码中 -使用环境变量或配置文件
- 使用Sandbox进行测试 -在实际交易之前,检查策略
- 遵守API限制 -检查价格与帮助
getUserTariff()
许可证
麻省理工学院许可证-см。 许可证 файл.
更新日志
更改历史记录可用 更改日志.md.
支持
- 📖 Tinkoff Invest API文件
- 📋 贡献指南
- 🐛 问题
- 💬 讨论
贡献
欢迎Contributions!请阅读 贡献.md 在创建PR之前
