PyThermoCalcDB-NASA-MCP
๐งช PyThermoCalcDB-NASA-MCP
PyThermoCalcDB-NASA-MCP is a Model Context Protocol server for running selected
pythermocalcdb-nasa thermodynamic calculations from agents and MCP-compatible
clients.
๐ Overview
The MCP package is an interface and orchestration layer. It validates structured
requests, builds a ModelSource, calls deterministic pythermocalcdb-nasa
functions, and returns JSON-safe results. It does not implement the scientific
calculation itself.
The default source workflow uses the embedded NASA-9 SQLite database included by
pythermocalcdb-nasa. If a component is unavailable locally, the MCP server
returns a structured failure. External data search is not this MCP server's
responsibility; another agent or caller should prepare complete pyThermoDB
REFERENCE content and call the tool with source: "reference".
Use this package to:
Calculate
H_T,S_T,G_T, andCp_Tfor one component.Calculate
dH_rxn_STD,dS_rxn_STD,dG_rxn_STD,Keq, andKeq_vh_shortcutfor reactions.Validate externally prepared pyThermoDB YAML reference content.
๐ฆ Installation
pip install pythermocalcdb-nasa-mcpFor local development:
uv syncโถ๏ธ Running
STDIO is the default transport:
pythermocalcdb-nasa-mcp --mode stdioHTTP transport is also supported:
pythermocalcdb-nasa-mcp --mode http --host 127.0.0.1 --port 8000 --path /mcpFrom a local checkout:
uv run pythermocalcdb-nasa-mcp --mode stdio๐ MCP Client Configuration
๐งต STDIO:
{
"mcpServers": {
"pythermocalcdb-nasa": {
"command": "pythermocalcdb-nasa-mcp",
"args": ["--mode", "stdio"]
}
}
}๐ HTTP:
{
"mcpServers": {
"pythermocalcdb-nasa": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}๐ต๏ธ MCP Inspector
You can test the server with the official MCP Inspector.
For direct STDIO testing from a local checkout:
npx @modelcontextprotocol/inspector uv run pythermocalcdb-nasa-mcp --mode stdioFor HTTP testing, start the server first:
uv run pythermocalcdb-nasa-mcp --mode http --host 127.0.0.1 --port 8000 --path /mcpThen connect Inspector to:
http://127.0.0.1:8000/mcp๐ MCP Resources
pythermocalcdb-nasa://references/nasa-requirementsSource policy, NASA symbols, units, temperature ranges, and agent boundaries.
pythermocalcdb-nasa://workflows/species-propertiesWorkflow for
H_T,S_T,G_T, andCp_T.
pythermocalcdb-nasa://workflows/reaction-propertiesWorkflow for
dH_rxn_STD,dS_rxn_STD,dG_rxn_STD,Keq, andKeq_vh_shortcut.
pythermocalcdb-nasa://guidance/agent-checklistChecklist for reliable database-first and reference-backed calls.
๐งฐ MCP Tools
๐ฅ Species tools:
calc_H_Tcalc_S_Tcalc_G_Tcalc_Cp_T
โ๏ธ Reaction tools:
calc_dH_rxn_STDcalc_dS_rxn_STDcalc_dG_rxn_STDcalc_Keqcalc_Keq_vh_shortcut
๐ ๏ธ Utility tool:
check_yaml_reference
๐ Input Model Notes
Calculation tools receive one Pydantic argument named request. They use shared
domain models from pythermodb_settings, including Component, Temperature,
and ComponentKey.
๐๏ธ Database-backed species request:
{
"request": {
"component": {
"name": "carbon dioxide",
"formula": "CO2",
"state": "g"
},
"temperature": {
"value": 300.0,
"unit": "K"
},
"source": "database",
"component_key": "Name-Formula",
"nasa_type": "nasa9",
"basis": "molar"
}
}๐ Reference-backed species request:
{
"request": {
"component": {
"name": "component name from prepared reference",
"formula": "Formula",
"state": "g"
},
"temperature": {
"value": 300.0,
"unit": "K"
},
"source": "reference",
"reference_content": "REFERENCES:\n ...",
"component_key": "Name-Formula",
"nasa_type": "nasa9",
"basis": "molar"
}
}๐๏ธ Database-backed reaction request:
{
"request": {
"name": "Water-Gas Shift Reaction",
"reaction": "CO(g) + H2O(g) => CO2(g) + H2(g)",
"components": [
{"name": "carbon monoxide", "formula": "CO", "state": "g"},
{"name": "dihydrogen monoxide", "formula": "H2O", "state": "g"},
{"name": "carbon dioxide", "formula": "CO2", "state": "g"},
{"name": "dihydrogen", "formula": "H2", "state": "g"}
],
"temperature": {
"value": 398.15,
"unit": "K"
},
"source": "database",
"component_key": "Name-Formula",
"nasa_type": "nasa9"
}
}Use the same reaction request shape with calc_Keq_vh_shortcut when a van't
Hoff shortcut estimate is requested. It returns a dimensionless equilibrium
constant.
Responses follow this contract:
{
"success": true,
"message": "H_T completed successfully.",
"results": {
"operation": "H_T",
"value": 0.0,
"unit": "J/mol"
},
"analysis": {
"source": "database"
},
"warnings": []
}โ Best Practices
Use
source: "database"first for NASA-9 data in supportedg,l, andsphases.Use
source: "reference"only with complete externally preparedreference_content.Do not ask this MCP server to search external scientific data.
Keep temperature inputs in Kelvin.
Make sure every reaction species appears in both the reaction equation and
components.Use
nasa_type: "nasa9"with the database source.Check
success,message, andwarningsbefore reporting results.
๐งช Development Quick Check
python -m py_compile pythermocalcdb_nasa_mcp/server.py
python -m py_compile pythermocalcdb_nasa_mcp/interface/core.py
python -m py_compile pythermocalcdb_nasa_mcp/models/nasa.py
python -m unittest discover tests๐ Examples
Example payload shapes are available in examples/request_payloads.py.
๐ License
This project is licensed under the Apache License 2.0. See LICENSE.
๐ค Author
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/sinagilassi/PyThermoCalcDB-NASA-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server