mplus-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., "@mplus-mcpRun a growth model on my longitudinal data and compare fit"
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.
mplus-mcp
An MCP server that drives Mplus: it prepares data, writes and runs input files, and reads the output back as tables instead of several hundred lines of fixed-width text.
Works with the licensed executable and with Mplus Demo (which caps the model at 6 dependent and 2 independent variables).
繁體中文說明請見 README.zh-TW.md。
Tools
Tool | What it does |
| Which executable is in use, its version, demo limits |
| Syntax reference by topic (model, mixture, invariance, errors …) |
| CSV/Excel/SPSS/Stata → an Mplus |
| Input syntax for cfa, efa, path, sem, mediation, growth, lpa, lca, invariance, twolevel |
| Write syntax to a file, run it, summarise the output |
| Run an existing |
| Re-read any |
| One section verbatim (TECH1, residuals, random starts …) |
| Fit indices side by side, with a scaled chi-square difference test |
| Read back factor scores / class probabilities, optionally as CSV |
Related MCP server: aigroup-econ-mcp
Install
Needs uv and an installation of Mplus. The demo build works too.
Claude Code
claude mcp add mplus -- uvx --from git+https://github.com/Ian3738/mplus-mcp mplus-mcpClaude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/,
Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"mplus": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Ian3738/mplus-mcp", "mplus-mcp"]
}
}
}If the client cannot find uvx, give the absolute path (which uvx).
From a clone
git clone https://github.com/Ian3738/mplus-mcp
cd mplus-mcp
uv sync
claude mcp add mplus -- "$(pwd)/run-server.sh"run-server.sh exists for two situations a bare uv run does not handle: GUI
clients that start without uv on PATH, and clones inside iCloud Drive, where
the virtualenv has to live outside the synced folder.
Configuration
Variable | Default | Purpose |
| first executable found (see below) | Path to the Mplus executable. Set it to prefer a licensed copy over the demo. |
|
| Where runs go when no folder is given |
Searched automatically: mplus / mpdemo on PATH, /Applications/Mplus/mplus,
/Applications/MplusDemo/mpdemo, /usr/local/bin/mplus, /opt/mplus/mplus,
C:\Program Files\Mplus\Mplus.exe.
Reading .sav files needs one extra package: add --extra spss to uv sync, or
use uvx --from "git+https://github.com/Ian3738/mplus-mcp[spss]" mplus-mcp.
Verify the setup by asking the model to call mplus_status.
How a session goes
data_prepare(path="ses.csv")
→ writes ses.dat, reports that `motivation` became `motivat`, hands back
NAMES = id sex y1 y2 y3 y4 x1 x2; MISSING = ALL (-999);
build_syntax(model_type="cfa", data_file="ses.dat",
names="id sex y1-y4 x1 x2",
factors={"F1": ["y1", "y2", "y3", "y4"]})
→ the input file as text
run_syntax(syntax=..., workdir="/path/holding/ses.dat", name="cfa1")
→ status, fit table, parameter estimates, any warnings, and cfa1.out on disk
compare_fit(out_paths=["cfa1.out", "cfa2.out"], chisq_diff=True)Notes on Mplus itself
Data files are resolved relative to the folder the input file runs in, so the server always runs with the working directory set to the
.inpfolder and refers to data by its bare file name. That is what makes folder names with spaces work.Input lines are capped at 90 characters;
run_syntaxfolds longer ones.Variable names are capped at 8 characters;
data_preparerenames and reports.A run that fails still writes an
.out, so the error is parsed and returned with the well-known causes attached where they apply.
Licence
MIT
Available Tools
10 toolsbuild_syntaxA
Write Mplus input syntax for a standard model family (cfa, efa, path, sem, mediation, growth, lpa, lca, invariance, twolevel, custom). Returns the syntax as text - it does not run it. Read it, adjust it, then pass it to run_syntax. Anything the template does not cover goes in model_extra, analysis_extra or model_constraint.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Mediation: the predictor. | |
| y | No | Mediation: the outcome. | |
| plot | No | PLOT type, e.g. 'PLOT3'. | |
| save | No | What to save, e.g. 'FSCORES' or 'CPROBABILITIES'. | |
| names | Yes | Every column in file order, e.g. 'id y1-y6 x1 x2'. | |
| title | No | Title line for the output. | |
| output | No | OUTPUT options. Default depends on the model type. | |
| starts | No | Mixture random starts, e.g. '500 100'. | |
| weight | No | Sampling weight variable. | |
| within | No | Two-level: %WITHIN% lines. | |
| between | No | Two-level: %BETWEEN% lines. | |
| classes | No | Number of latent classes for lpa/lca. | |
| cluster | No | Cluster variable for TWOLEVEL or COMPLEX. | |
| factors | No | Factors for cfa/sem/invariance, e.g. {'F1': ['y1', 'y2', 'y3']}. | |
| missing | No | MISSING specification, e.g. 'ALL (-999)'. | ALL (-999) |
| grouping | No | Grouping spec, e.g. 'sex (1 = male 2 = female)'. | |
| auxiliary | No | AUXILIARY spec, e.g. '(R3STEP) x1 x2'. | |
| bootstrap | No | Bootstrap draws; adds CINTERVAL (BOOTSTRAP). | |
| data_file | Yes | Data file name as Mplus will see it, e.g. 'scale.dat'. | |
| efa_range | No | EFA factor range, e.g. [1, 4]. | |
| estimator | No | ML, MLR, WLSMV, BAYES ... | |
| mediators | No | Mediation: one or more mediators. | |
| quadratic | No | Growth: add a quadratic slope factor. | |
| covariates | No | Mediation: controls for m and y. | |
| idvariable | No | ID variable, carried into SAVEDATA. | |
| indicators | No | Growth: repeated measures in time order. Mixture: class indicators. | |
| model_type | Yes | cfa, efa, path, sem, mediation, growth, lpa, lca, invariance, twolevel or custom. | |
| processors | No | PROCESSORS for parallel estimation. | |
| timescores | No | Growth: time scores, one per indicator. Default 0,1,2 ... | |
| categorical | No | Ordered categorical outcomes, e.g. 'u1-u6'. | |
| covariances | No | WITH statements, e.g. ['y1 WITH y2;']. | |
| model_lines | No | Extra MODEL lines, verbatim. | |
| regressions | No | MODEL lines such as ['y ON x1 x2;', 'f1 ON x1;']. | |
| usevariables | No | Variables the model uses. Default: all of NAMES. | |
| savedata_file | No | SAVEDATA file name. | |
| analysis_extra | No | Extra ANALYSIS lines, e.g. ['TYPE = COMPLEX;']. | |
| class_specific | No | Mixture: lines for class blocks, e.g. ['%c#1%', '[y1*2];']. | |
| free_variances | No | Mixture: free indicator variances across classes. | |
| model_constraint | No | MODEL CONSTRAINT lines, verbatim. | |
| growth_regressions | No | Growth: e.g. ['i s ON x;']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly states the tool is non-executing and that the output is raw text, and it reveals template limitations by directing uncovered content to extra parameters. It could add failure behavior or caveats, but the core behavior is disclosed.
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, front-loaded with purpose, and contains no filler. Each sentence earns its place, and the whole definition is appropriately sized for the tool's complexity.
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 40-parameter tool with no output schema and no annotations, the description still covers the essential workflow, the full model-family list, and a fallback policy for unsupported elements. The per-parameter context in the schema compensates for missing model-type-specific grouping.
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 already provides 100% parameter descriptions, setting a baseline of 3. The description adds a useful routing rule for non-template content, but it references `model_extra` while the schema actually defines `model_lines`; following the description verbatim could lead an agent to pass a non-existent parameter.
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 a specific verb and resource: 'Write Mplus input syntax for a standard model family', then enumerates model types. It also distinguishes itself from run_syntax by explicitly stating 'Returns the syntax as text - it does not run it.'
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 gives an explicit workflow: 'Read it, adjust it, then pass it to `run_syntax`', which tells the agent how to use this tool in relation to its execution sibling. However, it does not compare against other siblings like syntax_help or state conditions when build_syntax should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_fitA
Put the fit statistics of several .out files side by side - class enumeration, measurement invariance, nested model comparisons. With chisq_diff it also runs the chi-square difference test between consecutive models, scaled for MLR when Mplus reported a scaling correction factor.
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Row labels. Default: the file names. | |
| out_paths | Yes | Paths to the .out files, in the order to compare. | |
| chisq_diff | No | Also test consecutive models against each other. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It does disclose a meaningful statistical behavior: the optional chi-square difference test and its MLR scaling correction. However, it does not state that the tool is read-only, what happens on missing/invalid files, or any output/error behavior, leaving some behavioral ambiguity.
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 compact and front-loaded with the core action, then expands with relevant use cases and the chisq_diff behavior. It earns every sentence, though it could be slightly more structured by separating the parameter-specific behavior from the general 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?
The description is adequate for invoking the tool: it explains the core comparison task, the chisq_diff option, and MLR scaling. However, with no output schema, it does not describe the return format or what the side-by-side table looks like, and it does not mention the nested-models prerequisite for the chi-square difference test, which an agent would need for correct usage.
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 100%, so the baseline is 3. The description adds value beyond the schema by explaining that chisq_diff runs a chi-square difference test between consecutive models and that MLR scaling is handled, which the schema's one-line description does not convey. It also confirms the side-by-side ordering implied by out_paths.
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 names a specific verb ('Put ... side by side') and resource ('fit statistics of several .out files'), making the tool's core function unmistakable. It also lists concrete use cases (class enumeration, measurement invariance, nested model comparisons) and thereby distinguishes itself from single-file siblings like output_summary or output_section.
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 gives clear context for when to use the tool: whenever multiple .out files need their fit statistics compared. It does not explicitly name alternatives or say 'use only for multiple files,' so it falls short of a full when/when-not statement, but the multi-file framing is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_prepareA
Convert a CSV, Excel, SPSS (.sav), Stata (.dta) or parquet file into an Mplus .dat file: numeric only, no header, missing values flagged, names cut to 8 characters. Returns the DATA and VARIABLE block to paste into an input file, plus a per-variable summary and a note of anything that was renamed or recoded.
| Name | Required | Description | Default |
|---|---|---|---|
| sep | No | Field separator for text files, e.g. ';'. | |
| path | Yes | Source data file. `~` is expanded. | |
| sheet | No | Excel sheet name. Default: the first sheet. | |
| header | No | Whether row 1 holds column names. | |
| decimals | No | Decimal places for non-integer columns. | |
| encoding | No | Encoding of a text file, e.g. utf-8, big5. | utf-8 |
| out_path | No | Where to write the .dat file. Defaults to the source name with .dat. | |
| variables | No | Columns to keep, in this order. Default: all of them. | |
| na_strings | No | Extra strings to read as missing, e.g. ['NA', '99']. | |
| missing_flag | No | Number written for missing values. | |
| encode_strings | No | Turn text columns into numeric codes instead of dropping them. | |
| drop_incomplete | No | Listwise-delete incomplete cases. Rarely wanted - Mplus uses FIML. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden, and it does so well: it discloses that output is numeric-only, has no header, flags missing values, truncates names to 8 characters, and returns specific artifacts plus rename/recode notes. It does not discuss source-file mutability or overwrite behavior, but the main behavioral traits are explicit.
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 one dense sentence that front-loads the core action and then packs only high-value details: supported formats, transformation rules, and returned artifacts. There is no filler.
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 12-parameter conversion tool with no annotations and no output schema, the description covers the essential context: input formats, output behavior, and return contents. It could mention file-writing behavior more explicitly, but the schema documents out_path, so the remaining gap is minor.
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 100%, so the baseline is 3. The tool description adds useful global context for parameters such as missing_flag, header, and encode_strings, but it does not add per-parameter semantics beyond the schema.
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 verb ('Convert') and a precise resource (data files into an Mplus .dat file), then enumerates the supported formats and key transformation rules. This clearly distinguishes data_prepare from sibling tools that handle syntax, execution, or output inspection.
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 makes the tool's use case obvious: prepare a data file for Mplus analysis and get the blocks to paste into an input file. It does not explicitly state when not to use it or name alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mplus_statusA
Report which Mplus executable will be used, its version, and any demo-version limits. Call this first when a run fails for reasons that look like the installation rather than the model.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of signaling behavior. 'Report' plus the listed outputs implies a read-only diagnostic operation, and the note about installation-related failures gives useful execution context. It does not detail output formatting or authorization needs, but for a zero-argument status tool this is a minor gap.
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?
Two sentences with no filler: the first states what the tool reports, the second states when to call it. The most decision-relevant information is front-loaded.
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 zero-argument diagnostic tool with no output schema, the description is sufficient: it names the return categories (executable, version, demo limits) and the recommended invocation context. Nothing needed to call it correctly is missing.
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 input schema has zero parameters, so there is no parameter semantics for the description to clarify. Baseline 4 applies because the absence of parameters makes schema coverage complete by vacuity.
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 names a specific verb ('Report'), a clear resource ('Mplus executable'), and the exact aspects reported (version, demo-version limits). It is clearly distinct from all siblings, which are about syntax, running, output parsing, and savedata — none overlap with environment/status inspection.
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 gives an explicit trigger condition and ordering: 'Call this first when a run fails for reasons that look like the installation rather than the model.' It does not list when not to use it or name alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
output_sectionA
Return one section of an .out file verbatim, for anything the summary does not parse - TECH1, TECH4, residuals, sample statistics, random-start loglikelihoods. Call without section to list the sections in the file.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Section heading, or part of one, e.g. 'TECH1'. Omit to list them. | |
| out_path | Yes | Path to the .out file. | |
| max_chars | No | Characters to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses verbatim return behavior and the list-sections mode. It omits edge behaviors like what happens when a section is not found or how max_chars truncates output, but the core behavior is clearly transparent.
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?
Two sentences with no filler. The primary action and purpose are front-loaded, and the secondary usage instruction is packed efficiently into the second sentence.
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?
There is no output schema, so the description appropriately explains the return value ('verbatim' section). It covers the main usage modes and lists example sections. Missing failure-mode details are minor for a straightforward read tool.
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 100%, so the baseline of 3 applies. The description reinforces `section` usage ('Call without section to list') but adds no real meaning beyond what the input schema already documents for `out_path`, `section`, and `max_chars`.
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?
Description uses a precise verb and resource: 'Return one section of an .out file verbatim.' It also states scope ('for anything the summary does not parse') and gives concrete examples (TECH1, TECH4, residuals), making it clearly distinguishable from output_summary and compare_fit.
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?
Explicitly says when to use: for content the summary does not parse, and instructs how to discover sections by omitting `section`. This gives clear decision rules relative to the companion summary tool, though it does not name alternative tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
output_summaryA
Summarise an Mplus .out file that already exists: status, warnings, fit, parameter estimates, and whatever else include asks for. Use it on output produced outside this server, or to re-read a run without repeating it.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | fit, params, standardized, rsquare, effects, cinterval, classes, modindices, savedata, input, all. | |
| max_rows | No | Row cap per parameter table. | |
| out_path | Yes | Path to the .out file. |
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 that the file must already exist and that the tool re-reads rather than repeats a run, conveying a read-only, non-executing behavior. It does not detail error handling or response shape, but for a summarizer this is reasonably transparent.
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?
Two sentences with no filler. The purpose and content scope are front-loaded, and the usage context is delivered compactly in the second sentence. Every phrase earns its place.
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 tool with no output schema, the description covers what it summarizes and when to use it, while the schema handles include values and max_rows. It does not describe the response format or truncation behavior, but these are minor gaps given the simple read-only purpose.
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 100%, so the baseline is 3. The description references the `include` parameter but does not add meaning beyond the schema, which already documents all parameters, defaults, and value options. No additional parameter clarification is needed.
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 verb and resource: 'Summarise an Mplus .out file that already exists.' It enumerates the content covered (status, warnings, fit, parameter estimates) and clarifies via 're-read ... without repeating it' that this is distinct from running or creating output.
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 says when to use the tool: for output produced outside this server or for re-reading an existing run without re-running it. This implies it is not for new analyses and differentiates it from run_file/run_syntax, though it does not name sibling tools or state exclusions directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_fileA
Run an Mplus input file that already exists on disk and summarise the output. Use this for .inp files written by hand or by the Mplus editor.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Extra output sections; see `run_syntax`. | |
| timeout | No | Seconds before the run is abandoned. | |
| inp_path | Yes | Path to the .inp file. | |
| max_rows | No | Row cap per parameter table. |
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 states the action and that output is summarised, but it does not disclose side effects of running Mplus (e.g., generated output files), execution duration risks, or what the summary contains. This is a significant gap for an execution tool.
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?
Two concise sentences with no redundancy. The core operation is stated first, and the intended use case is front-loaded. Every sentence earns its place.
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 tool with 4 parameters, no output schema, and no annotations, the description is minimal. It covers the core use case and references the input file type, but it omits expected output summary details and behavioral expectations like timeout handling, though the schema does describe parameter constraints.
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 covers 100% of parameters, so the description does not need to repeat them. It adds no new parameter-level meaning beyond referencing run_syntax for the 'include' option. Baseline 3 is appropriate.
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 uses a specific verb ('Run'), a specific resource ('Mplus input file that already exists on disk'), and adds differentiating context ('written by hand or by the Mplus editor') that separates it from siblings like run_syntax. It is clear and not a tautology.
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 gives an explicit usage condition: 'Use this for .inp files written by hand or by the Mplus editor.' It clearly identifies when to use the tool, though it does not explicitly state when not to use it or name direct alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_syntaxA
Write Mplus input syntax to a file, run it, and summarise the output. Long lines are folded to the 90-character limit first. The .inp and .out stay on disk. Use include to ask for more of the output than the default fit table, parameter estimates and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Base name for the .inp and .out files, no spaces. | model |
| syntax | Yes | The complete input file, TITLE through OUTPUT. | |
| include | No | Extra output sections: fit, params, standardized, rsquare, effects, cinterval, classes, modindices, savedata, input, all. | |
| timeout | No | Seconds before the run is abandoned. | |
| workdir | No | Folder to run in - normally the one holding the .dat file. | |
| max_rows | No | Row cap per parameter table. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses line folding to 90 characters, that .inp and .out files persist on disk, and what default output is summarised. It does not cover error behavior or run side effects, but the essential traits are transparent.
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?
Three focused sentences with no filler. The core action is front-loaded, and each additional sentence adds useful behavioral or usage detail.
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 six-parameter execution tool with no output schema, the description explains the operation, persistence, defaults, and output extension mechanism. It is slightly incomplete on what exactly the 'summary' contains as a return value, but enough is provided for an agent to invoke it 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 coverage is 100%, so the baseline is 3. The description adds value by explaining what the default output contains and how `include` extends it, which goes beyond the schema's raw list of allowed sections.
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 a specific verb-resource chain: write Mplus syntax to a file, run it, and summarise output. This differentiates it from nearby siblings like run_file (running existing files) and output_summary (summarising already-produced output).
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 the tool is for submitting new/supplied Mplus syntax and receiving a summary, and it gives guidance on requesting more output with `include`. However, it never explicitly contrasts this with sibling tools like run_file or build_syntax, so an agent must infer when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
savedata_readA
Read the file a SAVEDATA command wrote - factor scores, class probabilities, most likely class membership - using the column layout Mplus recorded at the end of the .out file. Optionally write it out as a CSV for use in R or Excel.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | How many rows to show. | |
| to_csv | No | Write the data to this CSV path as well. | |
| out_path | Yes | Path to the .out file whose SAVEDATA to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses what is read, where the column layout comes from, what data types are present, and the optional CSV side effect. It does not describe exact return formatting or error cases, but covers the essential behavior well.
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?
Two tightly written sentences with no filler. The core behavior and data contents are front-loaded, and the optional CSV export is a clear, secondary clause.
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 three-parameter read tool with no output schema and no annotations, the description covers the source, contents, layout origin, and optional destination. Minor edge cases such as behavior when the .out file lacks SAVEDATA information are not covered, but the essential invocation context is complete.
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 100%, so the baseline is 3; the schema already documents out_path, rows, and to_csv. The description adds a little context by mentioning CSV for R/Excel, but adds no parameter-level syntax or formatting detail beyond the schema.
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?
States a specific verb ('Read'), a precise resource ('the file a SAVEDATA command wrote'), and the meaningful content (factor scores, class probabilities, class membership). It also explains the key mechanism of using the column layout Mplus recorded in the .out file, which clearly differentiates it from siblings like output_summary or output_section.
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?
Gives clear context: this tool is for reading SAVEDATA output associated with an Mplus .out file, and optionally exporting it as CSV for R or Excel. It does not explicitly list exclusions or alternatives, but the intended use case is unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syntax_helpA
Mplus syntax reference by topic: overview, data, variable, analysis, model, mediation, cfa, invariance, growth, mixture, multilevel, output, fit, montecarlo, errors, demo. Call with no topic to list them. Use it before writing syntax for a model family you have not written recently.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Topic name, e.g. 'mixture'. Omit to list the topics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It effectively conveys that this is a non-destructive read-only lookup, discloses the no-argument listing behavior, and enumerates the exact valid topics. This is sufficient behavioral context for a reference tool.
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?
Two sentences with zero filler. The topic list is front-loaded, followed by the no-topic call convention and the usage timing in a logical, compact order.
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?
Complete for a simple one-parameter reference tool with no output schema. It covers topics, calling conventions, and when to use it. It could mention the shape of the returned content, but that is a minor gap given how self-contained the purpose is.
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 100% and the schema already documents the topic parameter. The description adds genuine value beyond the schema by enumerating all valid topic values (mixture, cfa, growth, etc.), which the schema does not list. This goes beyond the baseline for high-coverage schemas.
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?
States a specific verb+resource ('Mplus syntax reference') and enumerates the topics covered. It is clearly distinguished from its operational siblings (build_syntax, run_syntax, output_summary, compare_fit), which all execute or analyze rather than provide reference material.
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?
Gives an explicit usage condition: 'Use it before writing syntax for a model family you have not written recently.' It also discloses the no-topic listing behavior. It does not name exclusion cases or alternatives, but for a help tool the guidance is clear and actionable.
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.
10 tool updates
v0.1.0- First observed
build_syntax - First observed
compare_fit - First observed
data_prepare - First observed
mplus_status - First observed
output_section - First observed
output_summary - First observed
run_file - First observed
run_syntax - First observed
savedata_read - First observed
syntax_help
TDQS
Each tool has a clearly distinct role in the Mplus workflow: installation status, syntax reference, data conversion, syntax generation, execution from text versus file, parsed output summarization versus raw sections, cross-file comparison, and savedata ingestion. No two tools overlap enough to cause selection ambiguity.
All names are lowercase snake_case and readable, but they mix verb-first forms (build_syntax, run_syntax, run_file, compare_fit), output_* prefixed forms, and noun-verb forms (data_prepare, savedata_read). The functional prefixes help, but the ordering is not consistent enough for a higher score.
Ten tools is well within the ideal range and each one maps to a distinct stage of the Mplus analysis lifecycle. None of the tools feel redundant or unnecessary for the server's stated purpose.
The set covers the full workflow: checking installation, syntax help, data preparation, syntax generation, running new or existing input files, summarizing output, retrieving raw output sections, comparing model fits, and reading SAVEDATA files. There are no obvious dead ends or significant missing operations.
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
Provides easy access to MLB, Baseball Savant, Statcast, and Fangraphs baseball data. Query detaile…
IMF MCP — wraps IMF SDMX JSON REST API (dataservices.imf.org)
Provide structured access to ClinicalTrials.gov data for searching, retrieving, and analyzing clin…
Sports Game Odds MCP — wraps the Sports Game Odds API (sportsgameodds.com)
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for NONMEM pharmacometric modeling that provides structured access to model parsing, execution, and results analysis. It enables users to perform diagnostics, manage PsN workflows, and translate models to mrgsolve for PK simulations through natural language.2215MIT
- AlicenseNot gradedqualityDmaintenanceEconometrics MCP server for regression, causal inference, time series, panel data, machine learning, and broader statistical analysis workflows.10MIT
- FlicenseNot gradedqualityCmaintenanceEnables comprehensive statistical analysis including descriptive statistics, hypothesis testing, regression, and more via a FastMCP-based API.3-
- AlicenseNot gradedqualityAmaintenanceMCP server that enables Claude to directly drive Stata, providing a persistent session and 75 tools for data management, estimation, post-estimation, graphs, and export. It lets users perform full Stata analyses through natural language instructions.MIT
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/Ian3738/mplus-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server