Skip to main content
Glama
squall321

LaminateAnalyzerMCP

by squall321

LaminateAnalyzerMCP

적층 복합재의 중립면(neutral surface)·ABD 강성·평가 지표를 결정론적으로 계산하는 MCP 서버. LLM 에이전트가 계산을 직접 하지 않고 이 서버를 호출한다. 동일 입력 → 바이트 동일 응답(payload_hash 추적).

Tool 21종 (MVP 7 + V1 4 + V2 10)

analyze_laminate(원샷 진입점) · validate_laminate_input · compute_abd_matrix · compute_neutral_axis · evaluate_laminate · get_reference_cases(폐형해 자가검증) · get_server_info · solve_load_response(ε0/κ·유효 공학 상수) · run_sensitivity_analysis · batch_evaluate_laminates(≤32) · generate_design_report(ko/en) · compute_thermal_response(유효 CTE·열곡률·PCB 휨) · homogenize_layer(동박률) · assess_crack_shielding(크랙 문턱·보호층 차폐·점탄성 이완) · recover_ply_stresses(층별 응력·Tsai-Wu 파손) · check_design_rules(적층 관례 판정) · compute_buckling · compute_natural_frequencies(감쇠·횡전단 유연성 포함) · run_progressive_failure(한계하중) · compute_interlaminar_stresses(박리) · estimate_fatigue_life(반복 수명)

핵심 규약. laminae[0] = 최하단 ply, 각도 deg(CCW), unit_system 필수(SI | SI_mm), 하중은 단위 폭당. 에이전트용 상세 절차는 docs/agent_guide.md, 수식 유도는 docs/math_spec.md, 두 MCP 협동 실 세션 기록은 docs/s5_scenario_log.md.

Related MCP server: Protein Design MCP Server

두 표면 — MCP와 REST

같은 계산·검증·응답 envelope를 두 경로로 노출한다.

소비자

경로

발견 방법

LLM 에이전트 (Claude 등)

POST /mcp (streamable HTTP) 또는 stdio

tools/list · laminate://guide 리소스 · get_reference_cases few-shot

스크립트·서비스·사람

GET/POST /api/v1/tools[/{name}]

GET /api/v1/tools(목록+JSON Schema) · GET /api/v1/guide · /docs(OpenAPI)

curl -s localhost:8000/api/v1/tools | jq '.tools[].name'        # 도구 21종
curl -s -X POST localhost:8000/api/v1/tools/analyze_laminate \
     -H 'Content-Type: application/json' \
     -d '{"laminate":{"unit_system":"SI_mm","laminae":[...]}}'   # 실행

실행

# 로컬 stdio (Claude Code는 .mcp.json으로 자동 연결 — materialtwin과 함께 등록됨)
.venv/bin/laminate-mcp

# HTTP (HEAXHub fastapi 스택과 동일 형태)
.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --root-path /apps/laminate_analyzer_mcp
# → GET /health · REST /api/v1/* · OpenAPI /docs · MCP POST /mcp

hwax portal(HEAXHub) 등록 — 완료

HEAXHub/integrations/laminate-analyzer-mcp가 이 리포지토리의 심볼릭 링크(in-tree 통합)이고, .portal/manifest.yaml(schema v2)이 정본이다. 카탈로그 등록·빌드·서비스 기동·Caddy 라우트까지 실증 완료(2026-07-16). Caddy 라우트는 forward_auth(/api/v1/authz) → prefix strip → 127.0.0.1:<port> 구조라 포털 경유 접속에는 포털 인증이 필요하다(visibility: team).

# 에이전트 연결 (포털 경유 — 인증 토큰 필요)
claude mcp add --transport http laminate-analyzer \
  <포털베이스>/apps/laminate_analyzer_mcp/mcp --header "Authorization: Bearer <token>"

개발

python3.12 -m venv .venv && .venv/bin/pip install -e ".[test]"
.venv/bin/pytest            # 216 tests

Available Tools

4 tools
compute_neutral_axisA

중립면 위치를 계산한다. mode: clt_weighted(기본, x·y 각각 B11/A11·B22/A22) | beam_equivalent(E_x 가중 도심).

출력은 midplane 기준·bottom 기준·무차원 ζ=(z-z_bot)/h 세 표기를 항상 병기한다. 대칭 적층이면 모든 정의에서 0(midplane). 정의별 가정은 응답의 axis_definition 참조.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoclt_weighted
laminateYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It discloses output formats (midplane/bottom/ζ), behavior for symmetric laminates, and references axis_definition for assumptions. This is transparent for a compute tool.

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?

Description is concise, uses bullet points for clarity, starts with the main purpose, and every sentence adds value. No redundancy.

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 no output schema and 0% schema coverage, the description explains modes and output but omits details about the laminate parameter structure. User may need external knowledge to provide correct input.

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?

Schema has 0% description coverage. The description compensates by explaining mode options with formulas, but does not elaborate on the laminate object structure, which is required and has additionalProperties. Partial compensation.

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 calculates neutral axis position, specifies two modes with explanations, and describes the output format. It distinguishes itself from sibling tools by focusing on neutral axis computation.

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?

No explicit guidance on when to use this tool vs siblings. The context implies it's for structural analysis, but no when-not-to-use or alternative suggestions. Usage is implied by the task domain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_casesA

내장 기준 케이스를 반환한다. case_id 생략 시 목록.

각 케이스는 완전한 입력 payload(input.laminate)와 폐형해 기대값(expected)을 포함하므로, 입력 스키마의 실전 예시(few-shot)이자 서버 자가 검증 수단으로 쓸 수 있다.

ParametersJSON Schema
NameRequiredDescriptionDefault
case_idNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It correctly implies a read-only operation ('returns'), but does not disclose other behavioral traits like idempotency, rate limits, or safety. The description adds some value by stating the content of each case (payload and expected value), but is not fully transparent.

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 two concise sentences. The first states the primary purpose and conditional behavior; the second explains additional value. Every sentence is purposeful, with no redundancy or verbosity.

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?

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers behavior (list vs detail), content (payload and expected values), and use cases. It could mention output format or pagination, but not critical. A minor gap in completeness.

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?

Schema description coverage is 0%, so the description must compensate. It adds meaning to the single parameter case_id by stating that omission returns a list, which the schema alone does not convey. This is a clear addition beyond the schema.

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 'returns built-in reference cases' and distinguishes it from sibling tools (compute_neutral_axis, run_sensitivity_analysis, get_server_info) which perform different tasks. It specifies the optional case_id parameter for filtering, leaving no ambiguity about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While it doesn't explicitly compare to siblings, the description indicates usage contexts: as few-shot examples and server self-validation. This gives implicit guidance on when to use the tool. However, it lacks explicit when-not-to-use or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_server_infoB

서버·엔진 버전, 지원 단위계, 한계값, Tool·오류코드 목록을 반환한다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It implies a read-only query returning static information, but does not explicitly state side-effect-freeness, idempotency, or authorization needs. The description is adequate but minimal.

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 captures all essential information without redundancy or waste.

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?

The description lists returned categories but lacks details on structure or format. Since there is no output schema, it should describe the response fields. Additionally, no usage context or examples are provided, making it incomplete for an agent to fully understand the tool's output.

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 input schema has zero parameters, so the baseline score is 4. The description adds value by listing the categories of returned data, which compensates for the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns server/engine version, supported unit systems, limits, and tool/error code list. The verb '반환한다' (returns) and the specific resources are clear. However, it does not explicitly distinguish from sibling tools like compute_neutral_axis or run_sensitivity_analysis, which are not about retrieving static info but computation.

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. It simply describes what it returns, without mentioning prerequisites, when it is appropriate, or when to avoid it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_sensitivity_analysisA

ply별 각도/두께/탄성계수 섭동에 대한 D̂11·coupling_ratio·ζ_x의 민감도(중앙차분).

제조 공차 강건성 판단용. 결정론적이며 에이전트가 2×3×n_plies회 반복 호출할 것을 1회로 줄인다. ply 수가 많으면 계산 시간 예산(10s) 초과 시 E500을 반환한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
laminateYes
modulus_relNo
thickness_relNo
angle_delta_degNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the algorithm (central difference), deterministic nature, optimization (reduces calls), and error handling (returns E500 if time budget exceeded). It does not mention side effects (likely none) or data persistence, but covers key operational traits.

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 exceptionally concise, with three focused sentences. The first sentence states the core function, the second the use case, and the third key behavioral details (error handling, optimization). No wasted words.

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 the tool's complexity (multiple perturbation parameters, nested laminate input, no output schema), the description omits critical details: the format of the return value (e.g., a table or object) and the structure of the laminate parameter. This forces the agent to guess or risk incorrect invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It explains that modulus_rel, thickness_rel, and angle_delta_deg are perturbation sizes for each ply, and that laminate is required. However, it does not describe the laminate object structure or what values the defaults represent, leaving significant gaps.

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 it computes sensitivity of D̂11, coupling_ratio, ζ_x to ply-level perturbations in angle, thickness, and modulus. This is specific and distinguishes it from sibling tools like compute_neutral_axis, which focus on different computations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the use case (manufacturing tolerance robustness assessment) and notes that the tool reduces repeated agent calls into a single call, implying it should be used instead of multiple iterative calls. However, it does not explicitly contrast with sibling tools beyond the implied domain difference.

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.2.1
    • First observedcompute_neutral_axis
    • First observedget_reference_cases
    • First observedget_server_info
    • First observedrun_sensitivity_analysis

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool addresses a distinct function: neutral axis computation, sensitivity analysis, reference cases, and server info. There is no overlap in purpose.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (compute_, run_, get_, get_), making them predictable.

Tool Count4/5

With 4 tools, the server is slightly lean but still within a reasonable scope for a specialized domain like laminate neutral axis analysis.

Completeness2/5

The server lacks fundamental laminate analysis capabilities such as stiffness matrix computation, stress/strain analysis, or failure criteria, which are expected for a laminate analyzer.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to perform unit-aware engineering calculations with automatic unit conversion, dependency resolution, and access to 500+ units across 75+ categories through the CalcsLive calculation engine.
    3
    7
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI assistant to drive Abaqus/CAE through file IPC—sending Python commands, querying model info, submiting jobs, and capturing viewport screenshots—so finite element models can be built and solved without manual GUI interaction.
    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/squall321/LaminateAnalyzerMCP'

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