Skip to main content
Glama
michaeljiangmingfeng-debug

quanttogo-mcp-servers

QuantToGo MCP Servers

MCP (Model Context Protocol) servers for QuantToGo - a quantitative trading platform providing live trading signals, market data, and portfolio management through AI-native interfaces.

Overview

This repository contains three MCP servers that expose QuantToGo's quantitative trading capabilities:

Server

Description

Tools

quanttogo-signals

Real-time trading signals from live quant strategies

3 tools

quanttogo-market-data

Product catalog, NAV history, backtest reports

5 tools

quanttogo-portfolio

Portfolio positions, dual-track performance, trade history

6 tools

Plus an HTTP server for remote access (MCP Connector mode).

Quick Start

Installation

npm install quanttogo-mcp-servers

Or clone and build:

git clone https://github.com/michaeljiangmingfeng-debug/quanttogo-mcp-servers.git
cd quanttogo-mcp-servers
npm install
npm run build

Configuration

Set environment variables:

export QUANTTOGO_API_BASE="https://www.quanttogo.com"  # API endpoint
export QUANTTOGO_API_KEY="your-api-key"                 # API authentication key
export QUANTTOGO_USER_ID="your-user-id"                 # Your user ID

Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "quanttogo-signals": {
      "command": "npx",
      "args": ["tsx", "src/signals-server.ts"],
      "cwd": "/path/to/quanttogo-mcp-servers",
      "env": {
        "QUANTTOGO_API_KEY": "your-api-key",
        "QUANTTOGO_USER_ID": "your-user-id"
      }
    },
    "quanttogo-market-data": {
      "command": "npx",
      "args": ["tsx", "src/market-data-server.ts"],
      "cwd": "/path/to/quanttogo-mcp-servers",
      "env": {
        "QUANTTOGO_API_KEY": "your-api-key"
      }
    },
    "quanttogo-portfolio": {
      "command": "npx",
      "args": ["tsx", "src/portfolio-server.ts"],
      "cwd": "/path/to/quanttogo-mcp-servers",
      "env": {
        "QUANTTOGO_API_KEY": "your-api-key",
        "QUANTTOGO_USER_ID": "your-user-id"
      }
    }
  }
}

Remote HTTP Mode (Connector)

For remote access via Streamable HTTP:

npm run serve
# Server starts at http://localhost:3000/mcp

Available Tools

Signals Server (quanttogo-signals)

Tool

Description

get_trading_signals

Get latest BUY/SELL signals with strategy, symbol, quantity, price

confirm_signal

Execute or skip a pending signal

get_signal_stats

Signal performance metrics and win rate

Market Data Server (quanttogo-market-data)

Tool

Description

get_products

List all quantitative trading products

get_product_detail

Detailed product info with parameters

get_nav_history

Historical NAV data with daily returns

get_backtest_report

Strategy backtest with Sharpe ratio, drawdown

search_products

Search by risk level, currency, strategy type

Portfolio Server (quanttogo-portfolio)

Tool

Description

get_portfolio

Complete portfolio overview

get_dual_track_comparison

AUTO vs MANUAL track performance comparison

get_positions

Current open positions across strategies

get_trade_history

Historical trade records

get_subscriptions

User subscription status

get_performance_metrics

Return, drawdown, Sharpe ratio, win rate

Architecture

quanttogo-mcp-servers/
├── src/
│   ├── common/
│   │   ├── client.ts          # QuantToGo API client
│   │   └── types.ts           # Shared TypeScript types
│   ├── signals-server.ts      # Signals MCP Server (stdio)
│   ├── market-data-server.ts  # Market Data MCP Server (stdio)
│   ├── portfolio-server.ts    # Portfolio MCP Server (stdio)
│   └── http-server.ts         # Combined HTTP server (Connector mode)
├── package.json
├── tsconfig.json
├── glama.json
├── LICENSE
└── README.md

Key Concepts

Dual-Track System

QuantToGo uses a unique dual-track system:

  • AUTO track: All signals are automatically executed (virtual trading)

  • MANUAL track: Only user-confirmed signals are executed

This allows users to compare their decision-making against the algorithm's full execution.

Signal Sources

Signals come from two quantitative platforms:

  • QC (QuantConnect): US market strategies

  • JQ (JoinQuant): China market strategies

Development

# Run individual servers in dev mode
npm run dev:signals
npm run dev:market-data
npm run dev:portfolio

# Run HTTP server
npm run serve

# Build for production
npm run build

License

MIT

Available Tools

3 tools
confirm_signalB

Confirm or skip a pending trading signal. EXECUTE will trigger virtual trade execution, SKIP will mark it as skipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
signalIdYesThe signal ID to confirm
decisionYesEXECUTE to trade, SKIP to ignore

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that EXECUTE 'will trigger virtual trade execution' and SKIP 'will mark it as skipped', which covers basic outcomes. However, it omits critical details like whether this is a mutating operation (implied but not stated), permission requirements, side effects, or error handling, leaving significant gaps for a tool that likely modifies state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded, consisting of just two sentences that directly explain the tool's function and parameter meanings without any wasted words. Every sentence earns its place by clarifying purpose and usage, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (likely a state-modifying operation with financial implications), no annotations, and no output schema, the description is incomplete. It fails to address key aspects such as the nature of 'virtual trade execution' (e.g., simulated vs. real), confirmation consequences, error scenarios, or return values, leaving the agent with insufficient context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (signalId and decision with enum). The description adds minimal value beyond the schema by restating the enum meanings ('EXECUTE to trade, SKIP to ignore'), which is redundant. No additional context or constraints are provided, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('confirm or skip') and resource ('pending trading signal'), distinguishing it from sibling tools like get_signal_stats and get_trading_signals which are read-only operations. It explicitly defines what happens for each decision option, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by mentioning 'pending trading signal' and the two decision options, suggesting it should be used when a signal requires action. However, it lacks explicit guidance on when to choose EXECUTE vs. SKIP, prerequisites for use, or comparisons to alternatives, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_signal_statsC

Get signal statistics and performance metrics for a strategy, including win rate, total trades, and P&L.

ParametersJSON Schema
NameRequiredDescriptionDefault
strategyIdNoStrategy ID (omit for all strategies)
periodNoTime period30d

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves statistics (implying read-only behavior) but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or response format. This leaves significant gaps for a tool that likely accesses sensitive trading data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose. Every word contributes to understanding what the tool does, though it could be slightly more structured by separating purpose from metric examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the returned statistics look like (e.g., format, units), nor does it cover behavioral aspects like permissions or limitations. Given the complexity of trading data, this leaves too many unknowns for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It mentions 'strategy' and 'period' implicitly but doesn't explain semantics like what 'all' period means or how strategyId affects results. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get signal statistics and performance metrics') and resources ('for a strategy'), including key metrics like win rate, total trades, and P&L. It distinguishes from sibling tools by focusing on statistics rather than confirmation or raw signals, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its siblings (confirm_signal, get_trading_signals), nor does it mention prerequisites like authentication or rate limits. It implies usage for strategy analysis but lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trading_signalsB

Get latest trading signals from live quantitative strategies. Returns real-time BUY/SELL signals with symbol, quantity, price, and strategy info.

ParametersJSON Schema
NameRequiredDescriptionDefault
strategyIdNoFilter by strategy ID
limitNoNumber of signals to return
statusNoFilter by signal statusall

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'real-time' and 'latest,' implying timeliness, but doesn't disclose behavioral traits such as rate limits, authentication needs, data freshness, or whether it's a read-only operation. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, and the second adds key details about returns. Every sentence earns its place by providing essential information without redundancy or fluff, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters, no output schema, no annotations), the description is moderately complete. It covers the purpose and return values but lacks details on behavioral aspects and usage context. Without annotations or output schema, more information on error handling or response format would improve completeness, but it's adequate for a basic read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all parameters (strategyId, limit, status) with descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining how filters interact or the significance of 'real-time' in parameter context. Baseline 3 is appropriate as the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get latest trading signals from live quantitative strategies.' It specifies the verb ('Get') and resource ('trading signals'), and mentions the source ('live quantitative strategies'). However, it doesn't explicitly differentiate from sibling tools like 'confirm_signal' or 'get_signal_stats,' which would be needed for a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'confirm_signal' or 'get_signal_stats.' It mentions 'real-time BUY/SELL signals' but doesn't clarify if this is for monitoring, analysis, or other contexts. No explicit when/when-not instructions or prerequisites are included.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedconfirm_signal
    • First observedget_signal_stats
    • First observedget_trading_signals

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: confirm_signal handles pending signal actions, get_signal_stats provides performance metrics, and get_trading_signals fetches real-time signals. There is no overlap in functionality, making tool selection unambiguous for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (confirm_signal, get_signal_stats, get_trading_signals), using snake_case and starting with clear action verbs. This predictability aids in understanding and usage.

Tool Count3/5

With only 3 tools, the set feels thin for a trading signal domain, as it lacks operations like creating, updating, or deleting signals, or managing strategies. While core functions are covered, the scope could be expanded for better completeness.

Completeness3/5

The tools cover key aspects: retrieving signals, confirming them, and viewing stats. However, there are notable gaps such as no ability to create or modify signals, manage strategies, or handle trade execution beyond virtual actions, which limits full lifecycle coverage.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/michaeljiangmingfeng-debug/quanttogo-mcp-servers'

If you have feedback or need assistance with the MCP directory API, please join our Discord server