fix-protocol-mcp
fix-protocol-mcp
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.
Tools
Tool | What it does |
| Decode a raw FIX string into tag, field name, value, and enum meaning. Accepts SOH-, |
| Check field ordering, the standard header, BodyLength(9) and CheckSum(10) against computed values, and required/conditional fields per message type. Returns |
| Construct a valid FIX message from field inputs. Accepts tag numbers or field names, and enum codes or labels ( |
| Look up a tag's field name, data type, and enumerated values. |
Related MCP server: jPOS MCP Server
Install
pip install .This installs the fix-protocol-mcp console script (stdio MCP server).
MCP client config
{
"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" }
}
}
}Examples
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 meaningValidate, 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"}, ...] }Coverage
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.
Development
pip install -e ".[dev]"
pytestserver.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_tagLicense
MIT - see LICENSE.
Available Tools
4 toolsbuild_fix_messageB
Build a FIX message from field names/values (e.g. Side='Buy'). BodyLength and CheckSum are computed.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| msg_type | Yes | ||
| msg_seq_num | No | ||
| begin_string | No | FIX.4.4 | |
| sending_time | No | ||
| sender_comp_id | No | SENDER | |
| target_comp_id | No | TARGET |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that BodyLength and CheckSum are computed automatically, which is a key behavioral trait. However, it does not discuss error handling, input validation, or behavior for missing/invalid fields. With no annotations, the description partially but not fully covers behavioral aspects.
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 sentence with an example, making it concise and front-loaded. It avoids unnecessary detail, but lacks structure such as bullet points or sections. Still, it effectively conveys the core action.
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 7 parameters and no output schema, the description is somewhat incomplete. It explains the core function but omits details on parameter defaults, allowed values for msg_type, or return format. The sibling tools provide some context, but more information would be helpful for correct invocation.
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%, so the description must add semantic meaning. It gives a high-level example (fields as name/value pairs) but does not detail parameters like msg_type, msg_seq_num, or begin_string. The fields parameter is vague ('anyOf object/null') with no further clarification.
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 action ('Build a FIX message') and resource ('from field names/values'). It provides an example ('Side=Buy') and notes computed fields (BodyLength, CheckSum). This distinguishes it from sibling tools (explain, parse, validate) which serve different purposes.
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 offers no guidance on when to use this tool versus alternatives like parse_fix_message or validate_fix_message. There is no mention of prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_fix_tagA
Look up a FIX tag's field name, data type, and enumerated values.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool performs a read operation and returns specific data (field name, data type, enumerated values). However, it does not mention error handling (e.g., for unknown tags) or any potential side effects, though for a simple lookup the provided information is largely adequate.
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, concise sentence that is front-loaded and contains no extraneous information. Every word contributes to the tool's purpose.
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 lookup tool with one parameter and no output schema, the description covers the essential aspects: purpose and return data. However, it lacks details about error scenarios or the exact structure of the output, which could be helpful. Overall, it is largely complete but not exhaustive.
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 has 0% description coverage, so the description must compensate. It only mentions 'a FIX tag' without explaining the parameter's meaning, valid range, or format. This lack of parameter detail leaves ambiguity about what constitutes a valid tag (e.g., integer range).
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 function: looking up a FIX tag's field name, data type, and enumerated values. The verb 'look up' and resource 'FIX tag' are specific and distinguish it from sibling tools that operate on entire messages.
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 when one needs metadata about a FIX tag, but does not explicitly state when to use this tool versus alternatives or mention any prerequisites or exclusions. The sibling tools have different purposes, so confusion is unlikely, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_fix_messageA
Decode a raw FIX message (SOH, '|', or '^' delimited) into tag/name/value/meaning fields.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It states output includes tag/name/value/meaning fields, but does not address error handling (e.g., malformed messages), input length limits, or side effects. Being a parse operation, it's likely read-only, but more specifics would improve transparency.
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 sentence that concisely states the tool's action and key details. No superfluous information.
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 simple input (one parameter) and no output schema, the description provides sufficient detail: input format and output fields. Sibling tools fill remaining context. No gaps.
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 has one parameter 'message' with 0% description coverage. The description adds significant meaning by specifying the allowed delimiter formats (SOH, '|', '^'), which clarifies acceptable input beyond the property name alone.
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 explicitly states the tool decodes raw FIX messages into structured fields (tag/name/value/meaning), specifying delimiter options (SOH, '|', '^'). This clearly distinguishes it from siblings like build_fix_message (constructs messages), explain_fix_tag (explains individual tags), and validate_fix_message (validates messages).
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 use when a raw FIX message needs parsing, but no explicit when-to-use or when-not-to-use guidance is given. Alternatives like build_fix_message or explain_fix_tag are not mentioned, though the purpose alone differentiates them. Lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_fix_messageB
Validate a FIX message: field order, header, BodyLength/CheckSum, and required fields per MsgType.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral traits. It only lists what is validated but omits what the tool returns (e.g., errors, boolean, or structured result) and any side effects. Missing behavioral context like error handling or output format.
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, front-loaded sentence with no wasted words. It efficiently conveys the purpose and scope of validation in 15 words.
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?
While it lists validation aspects, it lacks crucial context: no mention of output format, return type, or error behavior. For a validation tool, agents need to know how to interpret results, making the description incomplete 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?
With 0% schema coverage for the single parameter 'message', the description should clarify expected format (e.g., raw tag-value string, pipe delimited). It only says 'FIX message' without specifying structure, leaving the agent to guess the input format.
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 validates a FIX message and lists specific checks: field order, header, BodyLength/CheckSum, and required fields per MsgType. This distinguishes it from siblings: build_fix_message (creates), explain_fix_tag (explains a tag), and parse_fix_message (parses fields).
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?
No guidance on when to use this tool versus alternatives like parse_fix_message or build_fix_message. The description does not specify scenarios or prerequisites, leaving the agent without decision criteria for tool selection.
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.
4 tool updates
v0.1.0- First observed
build_fix_message - First observed
explain_fix_tag - First observed
parse_fix_message - First observed
validate_fix_message
TDQS
Each tool targets a distinct FIX operation: building, explaining tags, parsing, and validating. No functional overlap exists.
All tool names follow a clear verb_noun pattern with underscores (build_fix_message, explain_fix_tag, etc.), ensuring predictability.
Four tools is well-scoped for a FIX protocol assistant, covering core tasks without excess or deficiency.
The set covers the full lifecycle of FIX message handling: construction, parsing, validation, and tag lookup. No obvious gaps for the intended purpose.
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
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
21Conformance checker for MCP servers. Free, no key, verdicts recomputable and re-measured daily.
Public MCP server for summaries, DNS lookup, catalog, replies, and JSON checks.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- FlicenseBqualityCmaintenanceA production-grade MCP server for FIX protocol trading operations that enables order management, session repair, and algorithmic execution. It provides specialized tools for monitoring session health, managing ticker reference data, and executing complex trading scenarios.22-
- AlicenseAqualityCmaintenanceAn MCP server that gives AI agents deterministic, verified access to ISO 8583 field specs, MTI decoding, jPOS packager XML generation, deploy descriptor validation, message building, and jPOS documentation search.74MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for validating JSON against JSON Schema and repairing malformed/invalid JSON.61-
- FlicenseAqualityAmaintenanceMCP server for ISO 20022 acmt.001 Account Opening (and companion acmt.* messages): message-type discovery, required-field lookup, JSON Schema introspection, IBAN/BIC/LEI validation, flat-record validation, and validated acmt XML generation.61-
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/slenderongithub/fix-protocol-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server