Skip to main content
Glama
SleepingTalent

forex-predict-mcp

forex-predict-mcp

A FastMCP server that exposes XGBoost directional predictions for EURUSD=X and GBPUSD=X as MCP tools. Packaged as a Docker stdio image — no env vars required.

Designed to run alongside the oanda-mcp-server as a tool for a Claude trading agent.

Tools

get_market_features(ticker)

Fetches ~1 year of daily OHLCV data from Yahoo Finance plus cross-asset data (DXY, VIX, EURUSD), computes the full feature vector, and returns it for inspection.

Parameters:

  • ticker"EURUSD=X" or "GBPUSD=X"

Response:

{
  "ticker": "EURUSD=X",
  "as_of": "2026-06-19",
  "features": {
    "return_5d": 0.0124,
    "return_10d": 0.0231,
    "return_20d": -0.0052,
    "rsi_14": 58.3,
    "atr_14": 0.00234,
    "macd_hist": 0.00012,
    "sma50_ratio": 1.003,
    "dxy_return_5d": -0.0081,
    "dxy_return_20d": -0.0152,
    "vix_return_5d": 0.122,
    "vix_vs_sma20": -0.048
  }
}

GBPUSD=X additionally includes eurusd_return_5d and eurusd_return_20d.


get_forex_signal(ticker, features)

Runs the baked-in XGBoost model against pre-computed features and returns a directional signal.

Parameters:

  • ticker"EURUSD=X" or "GBPUSD=X"

  • features — the features dict from get_market_features()

Response:

{
  "ticker": "EURUSD=X",
  "as_of": "2026-06-19",
  "signal": "UP",
  "prob_up": 0.773,
  "confidence": 0.773
}

Related MCP server: curistat-mcp

Typical agent workflow

1. get_market_features("EURUSD=X")  →  inspect RSI, DXY, VIX values
2. get_forex_signal("EURUSD=X", features)  →  UP 77.3%
3. cross-reference with Oanda live price and open positions
4. place or skip order

.mcp.json configuration

Add the following entry to your .mcp.json (typically at the project root or ~/.claude/.mcp.json):

{
  "mcpServers": {
    "forex-predict-mcp": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "--rm", "-i", "sleepingtalent/forex-predict-mcp:latest"]
    }
  }
}

If you already have other servers (e.g. oanda-mcp-server), add forex-predict-mcp alongside them:

{
  "mcpServers": {
    "oanda-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "--rm", "-i", "-e", "OANDA_API_KEY", "-e", "OANDA_ACCOUNT_ID", "-e", "OANDA_ENVIRONMENT", "sleepingtalent/oanda-mcp-server:latest"]
    },
    "forex-predict-mcp": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "--rm", "-i", "sleepingtalent/forex-predict-mcp:latest"]
    }
  }
}

Models

XGBoost binary classifiers trained on 5 years of daily data:

Ticker

Features

Test accuracy

EURUSD=X

11 (returns, RSI, ATR, MACD, SMA50, DXY, VIX)

68.80%

GBPUSD=X

13 (same + EURUSD cross-asset returns)

67.60%

Models are baked into the Docker image at build time. To update: retrain in weights-biases-example, run uv run task export_models, copy the JSON files into src/forex_predict_mcp/models/, and push — CI publishes a new tagged image automatically.

Available Tools

2 tools
get_forex_signalA

Run the XGBoost model with pre-computed features from get_market_features.

ticker: 'EURUSD=X' or 'GBPUSD=X' features: the features dict returned by get_market_features()

Returns {ticker, as_of, signal (UP/DOWN), prob_up, confidence} on success, or {error: reason} if features are missing or the ticker is unsupported.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
featuresYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/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 discloses both success and error return formats, including conditions for missing features or unsupported tickers. It does not discuss side effects or permissions, but for a model inference tool these are less critical.

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 concise and well-structured: a one-sentence action summary, a short parameter list, and a clear return/error specification. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given the tool's modest complexity, an output schema, and two parameters, the description covers the invocation flow completely: prerequisite (get_market_features), parameter semantics, success return shape, and error conditions. This is sufficient for an agent to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by specifying example ticker values and defining features as the dict returned by get_market_features. It does not enumerate all possible tickers or the internal structure of features, but it provides essential linkage to the upstream tool.

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 states a specific action: 'Run the XGBoost model' to generate a forex signal from pre-computed features. It clearly distinguishes itself from the sibling tool get_market_features by positioning itself as the consumer of those features.

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

Usage Guidelines4/5

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

It explicitly states that features must come from get_market_features, establishing a clear prerequisite and usage context. It does not list when not to use the tool or alternatives, but with only one sibling the guidance is sufficient.

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

get_market_featuresA

Fetch and compute the feature vector for a forex pair.

ticker: 'EURUSD=X' or 'GBPUSD=X'

Returns {ticker, as_of, features: {feature_name: value}} on success, or {error: reason} if the ticker is unsupported or data cannot be fetched. Call this first, inspect the features, then pass them to get_forex_signal.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It discloses success and error return shapes ({ticker, as_of, features} or {error: reason}) and specifies failure conditions ('unsupported ticker' or fetch failure). It does not mention side effects or permissions, but as a read-only 'fetch and compute' operation, this is acceptably complete.

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 tightly structured in five sentences. It front-loads the core action, then adds example, return format, error case, and workflow order. Every sentence contributes useful detail without redundancy or fluff.

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

Completeness4/5

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

For a simple one-parameter tool with an output schema, the description covers all essential context: what it does, argument format via examples, return structure, error behavior, and its role in the two-step process with get_forex_signal. It leaves feature names to the output schema, which is appropriate.

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 coverage is 0%, so the description must compensate for the bare parameter definition. It provides two concrete ticker examples ('EURUSD=X', 'GBPUSD=X') and implies a Yahoo Finance format, but does not fully define the valid pattern or enumerate supported pairs. This is partial compensation, leaving some ambiguity about acceptable inputs.

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 opens with 'Fetch and compute the feature vector for a forex pair,' which is a specific verb+resource combination. It clearly distinguishes from sibling tool get_forex_signal by stating 'Call this first, inspect the features, then pass them to get_forex_signal,' establishing a unique role in the workflow.

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

Usage Guidelines5/5

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

Explicit guidance: 'Call this first, inspect the features, then pass them to get_forex_signal.' This provides an explicit sequence relative to the sibling and tells the agent exactly when to use this tool. It lacks explicit 'when-not' scenarios, but the workflow instruction is strong enough to warrant full credit.

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. 2 tool updatesv0.1.1
    • First observedget_forex_signal
    • First observedget_market_features

TDQS

A4.4/5.0
Disambiguation5/5

The two tools have clearly distinct roles: one fetches and computes market features, the other consumes those features to produce a signal. There is no ambiguity about which tool to call for a given step.

Naming Consistency5/5

Both tools follow the same verb_noun pattern (get_market_features, get_forex_signal), making the naming predictable and consistent.

Tool Count3/5

With only two tools, the set is minimal but appropriate for a focused prediction pipeline. It feels thin for a broader domain, but for the stated purpose of feature extraction plus signal generation, it is acceptable.

Completeness4/5

The tools cover the core workflow: fetch features, then run the model. There is no missing operation for the primary use case, though additional tools like backtesting or historical data retrieval would enhance completeness.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables algorithmic stock trading analysis by combining ARIMA, ARIMA-GARCH, and XGBoost models to generate buy/sell/hold signals with risk management, portfolio comparison, and volatility analysis for various market sectors.
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Futures volatility intelligence MCP server for ES, NQ, and related products. Provides forecasts, regime detection, rare signals, and research tools for AI trading agents.
    10
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables trading on MetaTrader5 platform via MCP, including account management, order placement, market data, technical indicators, and signal tools.
    4
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides AI-powered trading analytics and coaching by analyzing historical trades to identify strategies, emotional patterns, and behavioral mistakes via MCP tools.
    1
    MIT

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/SleepingTalent/forex-predict-mcp'

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