quanttogo-mcp-servers
Provides access to quantitative trading signals and performance metrics for US market strategies originating from the QuantConnect platform.
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-serversOr clone and build:
git clone https://github.com/michaeljiangmingfeng-debug/quanttogo-mcp-servers.git
cd quanttogo-mcp-servers
npm install
npm run buildConfiguration
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 IDUsage 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/mcpAvailable Tools
Signals Server (quanttogo-signals)
Tool | Description |
| Get latest BUY/SELL signals with strategy, symbol, quantity, price |
| Execute or skip a pending signal |
| Signal performance metrics and win rate |
Market Data Server (quanttogo-market-data)
Tool | Description |
| List all quantitative trading products |
| Detailed product info with parameters |
| Historical NAV data with daily returns |
| Strategy backtest with Sharpe ratio, drawdown |
| Search by risk level, currency, strategy type |
Portfolio Server (quanttogo-portfolio)
Tool | Description |
| Complete portfolio overview |
| AUTO vs MANUAL track performance comparison |
| Current open positions across strategies |
| Historical trade records |
| User subscription status |
| 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.mdKey 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 buildLicense
MIT
Available Tools
3 toolsconfirm_signalB
Confirm or skip a pending trading signal. EXECUTE will trigger virtual trade execution, SKIP will mark it as skipped.
| Name | Required | Description | Default |
|---|---|---|---|
| signalId | Yes | The signal ID to confirm | |
| decision | Yes | EXECUTE to trade, SKIP to ignore |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| strategyId | No | Strategy ID (omit for all strategies) | |
| period | No | Time period | 30d |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| strategyId | No | Filter by strategy ID | |
| limit | No | Number of signals to return | |
| status | No | Filter by signal status | all |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v1.0.0- First observed
confirm_signal - First observed
get_signal_stats - First observed
get_trading_signals
TDQS
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.
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.
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.
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
This MCP server enables users to perform scientific computations regarding linear algebra and vect…
MCP server for stocksense-ai documentation, generated by doc2mcp.
Research-only MCP server: turn your AI into a quant research desk — backtests, no trades.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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