Skip to main content
Glama
slenderongithub

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

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.

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 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"}, ...] }

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]"
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

License

MIT - see LICENSE.

Available Tools

4 tools
build_fix_messageB

Build a FIX message from field names/values (e.g. Side='Buy'). BodyLength and CheckSum are computed.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
msg_typeYes
msg_seq_numNo
begin_stringNoFIX.4.4
sending_timeNo
sender_comp_idNoSENDER
target_comp_idNoTARGET

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes

TDQS

A3.9/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 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv0.1.0
    • First observedbuild_fix_message
    • First observedexplain_fix_tag
    • First observedparse_fix_message
    • First observedvalidate_fix_message

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct FIX operation: building, explaining tags, parsing, and validating. No functional overlap exists.

Naming Consistency5/5

All tool names follow a clear verb_noun pattern with underscores (build_fix_message, explain_fix_tag, etc.), ensuring predictability.

Tool Count5/5

Four tools is well-scoped for a FIX protocol assistant, covering core tasks without excess or deficiency.

Completeness5/5

The set covers the full lifecycle of FIX message handling: construction, parsing, validation, and tag lookup. No obvious gaps for the intended purpose.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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
    B
    quality
    C
    maintenance
    A 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
    -
  • A
    license
    A
    quality
    C
    maintenance
    An 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.
    7
    4
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    MCP 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.
    6
    1
    -

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/slenderongithub/fix-protocol-mcp'

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