Are you the author? Sign in to claim
MCP server for parsing, validating, building and explaining FIX protocol trading messages — offline, no API keys.
MCP server for parsing, validating, building, and explaining FIX protocol messages - the tag=value format used for orders and executions across equities, FX, and fixed-income trading.
Runs fully offline. Parsing, validation (BodyLength/CheckSum included), message construction, and the bundled FIX 4.4 field dictionary are all self-contained, no external API or network calls.
| Tool | What it does |
|---|---|
parse_fix_message | Decode a raw FIX string into tag, field name, value, and enum meaning. Accepts SOH-, |-, or ^-delimited input. |
validate_fix_message | Check field ordering, the standard header, BodyLength(9) and CheckSum(10) against computed values, and required/conditional fields per message type. Returns errors and warnings. |
build_fix_message | Construct a valid FIX message from field inputs. Accepts tag numbers or field names, and enum codes or labels ("Side": "Buy"). BeginString, BodyLength, and CheckSum are computed automatically. |
explain_fix_tag | Look up a tag's field name, data type, and enumerated values. |
pip install .
This installs the fix-protocol-mcp console script (stdio MCP server).
{
"mcpServers": {
"fix-protocol": {
"command": "fix-protocol-mcp"
}
}
}
Running from source instead of installing:
{
"mcpServers": {
"fix-protocol": {
"command": "python",
"args": ["-m", "fix_protocol_mcp.server"],
"env": { "PYTHONPATH": "src" }
}
}
}
Parse a Logon message:
parse_fix_message("8=FIX.4.2|9=65|35=A|...|98=0|108=30|10=062|")
-> msg_type "A" (Logon), 10 fields, each decoded to name + value + enum meaning
Validate, catching a bad checksum:
validate_fix_message("8=FIX.4.2|9=65|35=A|...|10=000|")
-> { "valid": false, "checksum": {"present":"000","computed":"062","ok":false},
"errors": ["CheckSum(10)=000 does not match computed checksum 062."] }
Build an order from field names:
build_fix_message(
msg_type="NewOrderSingle",
fields={"Symbol":"AAPL","Side":"Buy","OrderQty":100,
"OrdType":"Limit","Price":"150.25","ClOrdID":"A1"})
-> 8=FIX.4.4|9=113|35=D|49=SENDER|56=TARGET|34=1|52=...|11=A1|38=100|
40=2|44=150.25|54=1|55=AAPL|60=...|10=061| (valid: true)
Explain a tag:
explain_fix_tag(40)
-> { "name": "OrdType", "type": "CHAR",
"values": [{"value":"1","meaning":"Market"}, {"value":"2","meaning":"Limit"}, ...] }
The dictionary covers session-level messages and the order/execution workflow (Logon, Heartbeat, TestRequest, ResendRequest, Reject, SequenceReset, Logout, NewOrderSingle, OrderCancelRequest, OrderCancelReplaceRequest, ExecutionReport, OrderCancelReject), which accounts for most real FIX traffic. It's a curated subset rather than the full FIX repository - unrecognised tags and enum values surface as warnings, not hard failures.
pip install -e ".[dev]"
pytest
server.py is a thin MCP wrapper around the core modules (parser,
validator, builder, dictionary, wire), which have no dependency on
the MCP SDK and can be used as a plain library:
from fix_protocol_mcp import parse, validate, build, describe_tag
MIT - see LICENSE.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows