forex-predict-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@forex-predict-mcppredict EURUSD direction with current features"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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— thefeaturesdict fromget_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 toolsget_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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| features | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.1- First observed
get_forex_signal - First observed
get_market_features
TDQS
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.
Both tools follow the same verb_noun pattern (get_market_features, get_forex_signal), making the naming predictable and consistent.
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.
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
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
Live LinReg fan charts, 64-setup playbook, 11-section MTF TA. Remote MCP, no API key.
Real-time market events, sentiment, and technical analysis as MCP tools, backed by real data.
Crypto trading intelligence MCP — 34+ endpoints, x402 pay-per-use, AI agent strategy & execution
Read-only x402-paid trend-intent MCP tools for JSON and CSV signals.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- AlicenseAqualityDmaintenanceFutures volatility intelligence MCP server for ES, NQ, and related products. Provides forecasts, regime detection, rare signals, and research tools for AI trading agents.101MIT
- FlicenseNot gradedqualityCmaintenanceEnables trading on MetaTrader5 platform via MCP, including account management, order placement, market data, technical indicators, and signal tools.4-
- AlicenseNot gradedqualityAmaintenanceProvides AI-powered trading analytics and coaching by analyzing historical trades to identify strategies, emotional patterns, and behavioral mistakes via MCP tools.1MIT
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/SleepingTalent/forex-predict-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server