Skip to main content
Glama
rephol

plate-cost

by rephol

plate-cost

MCP 앱으로, 레시피의 원가를 계산하고 메뉴 항목의 가격을 책정합니다. 모델이 직접 산술을 수행하는 대신 여는 대화형 계산기입니다.

클로드에게 *"내 나시고렝 가격을 책정해 줘"*라고 요청하면 작동하는 스프레드시트를 얻습니다: 재료 행, 구매 가격, 폐기율, 1인분 수율, 마진 슬라이더. 숫자를 바꾸면 모든 것이 다시 계산됩니다. 이 숫자 사용을 누르면 모델은 스스로 만들어낸 수치가 아니라 사용자가 입력한 수치로 대화를 계속합니다.

MCP Apps (ext-apps) 기반으로 구축되었습니다.

plate-cost running in the ext-apps reference host

ext-appsbasic-host 참조 호스트에서 실행 중 — 클로드가 아닙니다. 모델이 레시피를 제안하고, 위젯이 이를 로드했으며, "이 숫자 사용"이 수정된 수치를 대화로 다시 보냈습니다.

이것이 앱이지 도구가 아닌 이유

원가 계산은 탐험이지 질문이 아닙니다. 1인분 크기를 조정하고 마진이 움직이는 것을 보기 전에는 원하는 답을 알 수 없습니다. 채팅은 그런 작업에 나쁜 인터페이스이고, 모델이 머릿속으로 산술을 수행하는 것은 더 나쁩니다 — LLM은 다단계 숫자 작업에서는 신뢰할 수 없지만, 확신에 찬 말투에서는 완전히 신뢰할 수 있습니다.

그래서 분업은 이렇습니다: 위젯이 입력을 받고, 서버가 계산을 하며, 모델이 대화를 합니다.

Related MCP server: TradingCalc MCP Server

흥미로운 부분: 숫자가 어디서 왔는지 아는 것

MCP Apps에는 열린 격차가 있습니다 — ext-apps#746: 위젯에서 온 tools/call과 모델이 만들기로 결정한 호출은 서버에서 구분할 수 없습니다. 대부분의 도구에서는 그게 중요하지 않습니다. 원가 계산 도구에서는 산술을 수행하는지 추측을 세탁하는지를 결정합니다.

mcp-app-attest가 이를 해결합니다 — 이 저장소에서 추출되었으며, 이 저장소가 첫 번째 사용자입니다. 서버는 앱 리소스를 제공할 때마다 수명이 짧은 토큰을 발행하여 문서에 대체합니다. 위젯은 모든 호출에서 _meta에 이를 다시 에코합니다. 모델은 리소스 본문을 볼 수 없으므로 토큰을 생성할 수 없습니다. 호출은 어느 쪽이든 응답됩니다 — 응답은 어느 쪽이었는지 알려줍니다:

{ "perPortion": 3300, "inputsFrom": "model" }

그리고 숫자가 모델에서 왔을 때, 텍스트 응답은 그렇게 말합니다:

참고: 이 수치는 계산기가 아닌 모델에서 나온 것입니다. 신뢰하기 전에 사용자와 구매 가격을 확인하세요.

참조 호스트에 대해 종단 간 검증되었으며, 단위 테스트만이 아닙니다:

[provenance] inputsFrom=model  reason=missing  meta=null
[provenance] inputsFrom=app    meta={..."io.platecost/app-attestation":"XfqGVAiP…"}

이것이 아닌 것. 인증이 아니며, 인간이 무엇을 입력했다는 증거도 아닙니다. 코드 경로를 구분하는 것이지, 신원을 구분하는 것이 아닙니다. 호스트가 리소스 텍스트를 모델 컨텍스트에 복사하면 모델이 토큰을 읽을 수 있습니다 — 여기서 이를 막는 것은 없으며, 호스트가 지켜야 할 계약입니다. 손상된 위젯은 원하는 무엇이든 보낼 수 있습니다. "내 양식에 입력된 것"과 "언어 모델이 생성한 것"의 차이로 취급하세요. 이것이 정확히 #746이 요구하는 것입니다.

이후 mcp-app-attest로 추출되었으며, 저장된 토큰 대신 서명된 토큰으로 전환했습니다 — 이유는 아래의 "작동하지 않은 것" 노트를 참조하세요.

도메인이 틀리는 두 가지

둘 다 src/costing.ts에 있으며, 둘 다 테스트가 있습니다.

폐기물은 더 많이 사용하는 것이 아니라 더 많이 구매하는 것을 의미합니다. 원가는 used / (1 - wastePct)이지 used * (1 + wastePct)가 아닙니다. 50% 폐기 시 1.5배가 아니라 두 배를 구매합니다. 순진한 버전은 당신이 가진 모든 다듬어진 재료를 과소평가합니다.

마진과 마크업은 다른 숫자입니다. 마진은 (price - cost) / price이고, 마크업은 (price - cost) / cost입니다. 60% 마크업은 37.5% 마진이고, 60% 마진은 150% 마크업이 필요합니다. priceForMargin은 마진을 받습니다 — 주방에서 "우리는 65%를 원한다"는 의미입니다 — 그리고 둘 다 반환하므로, 그 차이가 가정이 아니라 보입니다.

또한 처리되는 것: 질량 및 부피 계열 내 단위 변환, 계열 간 변환 거부(kgl은 제공하지 않은 밀도가 필요함), 재료별 원가 비율, 그리고 배치당이 아니라 1인분당 적용되는 간접비.

사용해 보기

npm install
npm run build      # bundles the widget to a single inlined HTML
npm test           # 21 tests
npm run dev        # widget standalone in a browser, no host

MCP 클라이언트를 server.ts에 연결하세요. 호스트 외부에서는 증명 플레이스홀더가 대체되지 않으므로 호출은 model로 표시됩니다 — 그것이 정직한 답입니다.

작동하지 않은 것

  • 상태 없는 HTTP 전송. 첫 번째 버전은 요청마다 새 서버를 만들었는데, 이는 상태 없는 도구에는 괜찮지만 이 도구를 조용히 깨뜨립니다: 증명은 위젯이 다시 호출할 때 더 이상 존재하지 않는 서버 인스턴스에 의해 발행되었으므로, 모든 위젯 호출이 unknown으로 거부되었습니다. 인메모리 테스트는 이를 볼 수 없었습니다 — 하나의 인스턴스를 공유하기 때문입니다. 실제 호스트에 대해 실행해야만 드러났습니다.

  • SDK를 비난하기. 위의 문제를 찾기 전에, 명백한 용의자는 전송 중에 _meta가 제거되는 것이었습니다. 그렇지 않습니다: 참조 호스트는 샌드박스 프록시를 통해 그대로 전달합니다. 알아둘 가치가 있습니다. 전체 메커니즘이 호스트가 그렇게 하는 것에 의존하고, 사양이 이를 요구하지 않기 때문입니다.

상태

v0. 두 개의 도구(cost-recipe, price-portion), 하나의 위젯, 21개의 테스트.

구축되지 않음: 대화 간 지속성, 다중 레시피 비교, 그리고 #753 / #745의 네임스페이스 문제와 관련된 모든 것 — callServerTool은 도구 이름을 그대로 사용하므로, 이는 집계기 뒤에서 깨질 것입니다. 그것이 다음으로 해결할 가치가 있는 것이며, 여기서는 해결되지 않았습니다.

MIT.

Maintenance

ActivityMaintained
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
    Not graded
    quality
    D
    maintenance
    Provides basic arithmetic operations and advanced mathematical functions through the Model Context Protocol (MCP), with features like calculation history tracking and expression evaluation.
    1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides deterministic trading calculations for PnL, risk, margin, and funding, enabling users to get exact numbers for trade planning and risk assessment via MCP or REST API.
    11
    1
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Deterministic Odoo ERP calculators: implementation, migration and upgrade cost, ROI and TCO, US/Canada/EU sales tax and VAT, Canadian payroll source deductions, and inventory maths (reorder point, safety stock, EOQ, landed cost, OEE). 24 tools, each a pure function, the numbers are arithmetic rather than a model's guess. Hosted remote server, no install and no API key; a stdio bridge is included
    24
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A deterministic what-if scenario simulation MCP server that projects business metrics over time with exact decimal arithmetic, offering sensitivity analysis and break-even solving.
    6
    47
    MIT

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/rephol/plate-cost'

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