This is a native AstrBot marketplace-plugin package. It discovers the hosted
FXMacroData MCP server at startup and registers every currently published MCP
tool, reusable prompt, and concrete resource as an AstrBot FunctionTool.
The plugin does not reduce FXMacroData to a single chat command or a manually
maintained subset.
- Every current hosted FXMacroData MCP capability:
- tools retain their live JSON-schema parameters and are registered as
fxmacrodata_<hosted_tool_name>; - reusable MCP prompts become
fxmacrodata_prompt_<hosted_prompt_name>with their live required/optional argument contract; and - concrete MCP resources become
fxmacrodata_resource_<hosted_resource_name>and return structured MCP embedded resources rather than flattened HTML. This prevents collisions with unrelated AstrBot plugins (for example,fxmacrodata_ping).
- tools retain their live JSON-schema parameters and are registered as
- Native AstrBot function calling, so users can enable, disable, inspect, and invoke FXMacroData capabilities in AstrBot's ordinary tool workflow.
/fxmacrodata statusto verify the connection and refresh the native tool registry;/fxmacrodata refreshdoes the same explicitly after a hosted MCP update./fxmacrodata connectstarts a personal FXMacroData sign-in and/fxmacrodata disconnectremoves it.- A bundled FXMacroData macro research Skill. AstrBot’s Skills Manager can enable it alongside the native tool catalogue, giving models concise, source-aware release and macro-research instructions without injecting a hand-maintained list of 48+ tool definitions into every prompt.
- The localized, theme-aware Macro Command Center plugin page: release
calendar, research pack, indicator, FX-pair, prompt library, hosted MCP App
resource gallery, and complete live capability inventory. Interactive MCP
App resources render only after an explicit user action in a nested sandboxed
iframe (
allow-scriptswithout same-origin, popup, form, or top-navigation permissions). The page can connect the current AstrBot dashboard user to their own FXMacroData entitlement. - Native rich Markdown briefings plus opt-in, session-specific release alerts, daily briefings, and week-ahead briefings. Scheduling uses AstrBot's built-in cron manager and its private plugin KV store—not a background polling loop. Users can list or remove only their own chat-session subscriptions.
- A useful no-key baseline for public USD discovery, macro history, and release calendar use. Protected tool families use each user's own revocable OAuth access; there is no administrator API-key setting and no shared entitlement.
The plugin connects to https://mcp.fxmacrodata.com/mcp with the standard MCP
Streamable HTTP transport.
- Place this
astrbot-fxmacrodatadirectory in the AstrBot instance'sdata/plugins/directory asastrbot_plugin_fxmacrodata. - Install/enable the plugin in AstrBot's Plugins WebUI. AstrBot installs the
dependencies declared in
requirements.txt. - Before enabling personal protected access, set
FXMACRODATA_ASTRBOT_TOKEN_ENCRYPTION_KEYin the AstrBot host environment to an operator-managed Fernet key. This encrypts OAuth tokens in AstrBot's private plugin KV store. Keep this host setting private. - Reload the plugin, then run
/fxmacrodata status. The response gives the exact number of currently registered hosted MCP capabilities. - Enable the FXMacroData tools in AstrBot's Function Calling tool management screen and use a function-calling-capable model.
Open Macro Command Center from the plugin's page in AstrBot to use the interactive dashboard. Its Connect FXMacroData control opens the same personal sign-in flow for the dashboard account. It is localized through AstrBot's standard plugin i18n folders and provides English and Simplified Chinese strings.
Each chat user's connection is keyed to their AstrBot platform and sender ID, never to a group or chat session. Start and complete connection in a private chat with the bot so the short-lived verification code is not posted to a group. Run:
/fxmacrodata connect
The plugin returns a first-party FXMacroData verification link and short-lived verification code. The user enters their FXMacroData API key only on that FXMacroData page, approves the connection, then runs:
/fxmacrodata connect status
AstrBot receives only a revocable OAuth access/refresh-token pair. The pair is encrypted before it is written to AstrBot's private plugin KV store, refreshed as needed, and removed locally plus revoked remotely by:
/fxmacrodata disconnect
A user who has not connected continues to receive only the hosted MCP's public no-key baseline.
Once the tool is enabled, ordinary language prompts can invoke the appropriate native tool, for example:
- “List the available USD macro indicators, then show recent inflation data.”
- “Show the upcoming USD release calendar in Australia/Sydney time.”
- “Compare the EUR and USD policy-rate differential and explain the official source metadata.”
Use /fxmacrodata refresh after FXMacroData publishes a new MCP tool, prompt,
or resource; it reads the live catalogue and registers the updated complete set
in AstrBot.
/fxmacrodata briefing now USD inflation EUR USD
/fxmacrodata connect
/fxmacrodata connect status
/fxmacrodata disconnect
/fxmacrodata briefing daily USD inflation 08:00 Australia/Sydney
/fxmacrodata briefing weekly USD inflation mon 08:00 Australia/Sydney
/fxmacrodata alerts subscribe USD inflation
/fxmacrodata alerts list
/fxmacrodata alerts remove all
Release alerts use only an exact, source-confirmed release timestamp returned
by fxmacrodata_release_calendar; the plugin does not infer schedules from
cadence. The first alert schedules the next confirmed event, then rechecks it
with the hosted calendar before delivery. Scheduled briefings and release
alerts are information services, not personalised investment advice.
Subscriptions are scoped to the current chat session. /fxmacrodata alerts remove all stops every notification owned by that session.
Run from the plugin repository root:
python -m pytest tests -n 0
python -m ruff check .The tests use mocked MCP transport for repeatability. A separate local live smoke may call the public hosted MCP with no key to confirm its current tool, prompt, and resource discovery. No marketplace publication is performed by this package or its tests.