Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Answers EU Digital Product Passport questions: scope, required fields, registry and law changes.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
Authorization비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.
터미널에서 이 명령어를 실행하세요
claude mcp add --transport http compliance https://ai.tracepass.eu/compliance/mcp --header 'Authorization: your-value'실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"compliance": {
"url": "https://ai.tracepass.eu/compliance/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"compliance": {
"type": "http",
"url": "https://ai.tracepass.eu/compliance/mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 주소는 요청 header에 키가 필요한데, 커넥터 추가 메뉴에서는 넣을 수 없어요. 대신 Claude Code, Cursor, VS Code를 쓰세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
Authorization 비밀 필수 HTTP header이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
도구 이름과 설명은 서버가 2026년 11월 6일에 알려 준 그대로예요. 우리가 아니라 제작자가 쓴 글이고, 일반 텍스트로만 보여 드려요.
scope_checkChecks whether EU law requires a Digital Product Passport for a type of product, from when, and what the law requires of each role. Use it for "do I need a passport", "from when", "who is responsible", whether that responsibility can be handed to another company, who keeps and st
required_fieldsLists the data a passport must contain for a product category, with the article requiring each field, who may see it, how often it changes, and whether it usually comes from the maker or a supplier. Call it without `group` for a summary (counts by group), then with a `group` for
what_changedReports changes in EU passport law and standards for the user's categories since a date (default: since they last asked). Use it for "what's new" or "has X been adopted". Items marked "Planned, not law yet" are upcoming obligations, not yet in force. Use only what this tool retur
registry_guidanceExplains the EU DPP Registry and the technical side: registration in the registry, identifiers, QR and data carriers, data formats (JSON, HTML, data models) and standards, and where passport data is kept. Each point carries the date of its source. For who owes, keeps or may hand
create_draft_passportCreates a **draft** passport in the user's own TracePass account from facts they stated. Use it whenever the user asks to create a passport, including "create and publish": create the draft, then say that publishing is done by the user in TracePass. It never publishes. If the res
report_answerUse it when the user says an answer was wrong or unclear. Pass their words and the `ruleIds` of the answer. The report goes to a review queue. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaim
get_profileShows the company facts the assistant has stored (categories, markets, role, own-brand flag, etc.) and when they were last updated. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, an
update_profileSaves or corrects company facts. Use it when the user states a lasting fact about their company (role, categories, markets, own-brand), or to save a `learnable` fact from a result. The update merges the given facts into the existing profile; it does not replace the whole profile.
delete_profileDeletes every stored company fact. Use it only when the user explicitly asks to delete their profile. This is a separate tool so the assistant asks for confirmation before running it. Use only what this tool returns: add no facts, dates or articles of your own, not even today's d
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 도메인 tracepass.eu 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
660ms 만에 응답(HTTP 200)
로그인 필요 없음
도구 설명 9개를 읽었고, AI에게 보내는 숨겨진 지시는 없었어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: Authorization
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.25.0)은 어제 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, First Sale Scout
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Playbooks and a 14-day checklist for founders winning their first paying customers.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A Model Context Protocol server for [TracePass](https://www.tracepass.eu) — the EU Digital Product Passport platform. It lets AI assistants (Claude, Cursor, IDE agents) manage products, Digital Product Passports, economic-operator parties, and GS1 EPCIS 2.0 supply-chain events.
It speaks the full MCP protocol — tools, resources, resource templates, and prompts.
The same server core ships two ways:
https://ai.tracepass.eu/mcp. Nothing to install; always current.tracepass-mcp-server via npx. The MCP client launches it as a subprocess and speaks MCP over stdio.The server accepts either of TracePass's two v1 auth methods on the same Authorization: Bearer … header — it forwards whatever you send to the API, which decides. Pick the one that fits how you're connecting:
| API key | OAuth 2.0 | |
|---|---|---|
| Best for | A single user, scripts, server-to-server | AI assistants / apps acting on a user's behalf |
| What you send | A static tp_… key as a Bearer token | A scoped access token obtained via the OAuth flow |
| Setup | Mint at Developer → API Keys | The user clicks Connect and approves scopes |
| Scope | All-or-nothing (the whole workspace) | Exactly the scopes the user granted; revocable |
| Works with | Hosted and local (npx) | Hosted endpoint only (needs a browser consent step) |
Which should an AI assistant use? If your MCP client supports OAuth (Claude.ai, ChatGPT, and others), prefer OAuth — the user authorizes the connection once on a TracePass consent screen, you never handle a secret, and access is least-privilege and revocable. If your client only takes a header/token, use an API key.
No config beyond pointing your client at the hosted endpoint — discovery is automatic. On the first unauthenticated request the server returns a 401 whose WWW-Authenticate header carries a resource_metadata URL (RFC 9728) pointing at /.well-known/oauth-protected-resource, which names the TracePass authorization server. The client runs the standard authorization-code flow with PKCE (/api/oauth/authorize → /api/oauth/token), the user approves scopes, and the client stores + refreshes the token. If you distribute your own client, register an app under Developer → OAuth Apps to get a client_id; many hosted clients self-register via Dynamic Client Registration automatically.
Request only the scopes you need, e.g. passports:read passports:write offline_access. Users manage connected apps (and revoke) under Developer → OAuth Apps → Connected Apps.
Mint a tp_… key under Developer → API Keys and send it as a Bearer token.
Hosted:
{
"mcpServers": { "tracepass": { "url": "https://ai.tracepass.eu/mcp", "headers": { "Authorization": "Bearer tp_YOUR_KEY" } } } }
Local (npx / stdio) — the local subprocess can't do an interactive OAuth consent step, so it's API-key only, via the TRACEPASS_API_KEY env:
{
"mcpServers": { "tracepass": { "command": "npx", "args": ["-y", "tracepass-mcp-server"], "env": { "TRACEPASS_API_KEY": "tp_YOUR_KEY" } } } }
Optional env vars:
| Var | Default | Purpose |
|---|---|---|
TRACEPASS_BASE_URL | https://app.tracepass.eu | Override the TracePass API base URL (e.g. point at a local stack). |
TRACEPASS_AUTH_SERVER_URL | https://app.tracepass.eu | Public OAuth authorization-server origin advertised in discovery metadata. Set this when TRACEPASS_BASE_URL is an internal address. |
MCP_BODY_LIMIT_BYTES | 1048576 (1 MB) | Maximum request body size. Requests over the limit are rejected with 413 before reaching the SDK. |
MCP_BATCH_LIMIT | 10 | Maximum JSON-RPC messages in a single batch request. Oversized batches are rejected with 400 batch_too_large. |
PORT | 8080 | Listen port for the hosted HTTP service. |
The hosted endpoint accepts POST only on /mcp, /compliance/mcp, and the supplier paths. GET and DELETE are rejected with 405 to prevent the SDK's stateless transport from opening an unbounded SSE stream.
The TracePass v1 API operations are grouped into 8 tools. Each takes an action enum plus action-specific arguments. The tools are:
tracepass_products - manage the product catalogue (list, get, create, create_batch, update products).tracepass_passports - manage Digital Product Passports (list, get, compliance check, registry-readiness check, prepare an EU DPP Registry registration, record an acceptance test, get/set condition flags, create, get QR, list snapshots, get snapshot), by id or by serial. Passports are identified via GS1 or four additional EN 18219 schemes (iso15459, iec61406, did, doi); battery passports accept only gs1 and iso15459 (Art. 77(3)). Condition flags are approved yes/no facts (e.g. battery: hasBMS, rechargeable, externalStorageOnly, isStationaryBess) that gate conditional legal duties — setting an approved flag may make additional fields required and block publishing if those fields are empty.tracepass_passport_fields - update a passport's category-specific data fields, by id or by serial.tracepass_passport_parties - set or remove a passport's economic-operator parties (manufacturer, importer, etc.).tracepass_epcis - export, capture, and query a passport's GS1 EPCIS 2.0 supply-chain events.tracepass_templates - list and get the DPP category field schemas, each field traced to the EU instrument that mandates it.tracepass_scope - check whether a product type needs a Digital Product Passport (check), read the company's catalogue-wide scope report (catalogue_report), and trigger or poll a catalogue refresh run (catalogue_run, catalogue_run_status).tracepass_passport_lifecycle - irreversible and public-facing passport and product lifecycle actions (record_registration, undo_registration, place_on_market, suspend, archive, archive_product); the assistant must confirm with the user before each call.Each tool's full action set:
| Tool | Actions |
|---|---|
tracepass_products | list, get, create, create_batch, update |
tracepass_passports | list, get, get_by_serial, compliance, registry_readiness, prepare_registry_upi, prepare_registry_upload_file, record_acceptance_test, get_condition_flags, get_condition_flags_by_serial, set_condition_flags, set_condition_flags_by_serial, capture_measurements, capture_measurements_by_serial, list_measurements, list_measurements_by_serial, latest_measurements, latest_measurements_by_serial, create, get_qr, get_qr_by_serial, list_snapshots, get_snapshot |
tracepass_passport_fields | update, update_by_serial |
tracepass_passport_parties | set, remove |
tracepass_epcis | export, export_by_serial, capture, capture_job, query |
tracepass_templates | list, get |
tracepass_scope | check, catalogue_report, catalogue_run, catalogue_run_status |
tracepass_passport_lifecycle | record_registration, undo_registration, place_on_market, suspend, suspend_by_serial, archive, archive_by_serial, archive_product |
Changed in 1.24.0: archive, archive_by_serial, suspend, suspend_by_serial, and place_on_market moved from tracepass_passports to tracepass_passport_lifecycle; archive on products moved there as archive_product. This separates irreversible and public-facing actions so a client's "always allow" on the read-only passport tool no longer also allows them. Calls to the old names on the old tools return an error naming the new tool.
The ***_by_serial** actions address a passport by the customer's own serial number instead of its TracePass id. A serial is unique only *within a GTIN*, so if the same serial exists under two GTINs in your account a serial-only call returns 409 `ambiguous_serial` — pass the optional gtin arg to disambiguate (or use the by-id action). The same gtin disambiguator applies to every *_by_serial action.
The `tracepass_passports` `compliance` action returns a three-tier compliance verdict (compliant / compliant_with_warnings / incomplete) with regulation-cited findings — missing required fields, missing economic-operator parties, format issues, and per-category conditional rules. Read-only; use it to gap-check a passport, fix the cited gaps, then re-check.
A `compliant` verdict means this passport satisfies the rules encoded here, not *this product may be placed on the market*. The field specifications are hand-authored from the regulations, not an official EU artefact, and delegated acts are still landing. It is not legal advice.
A repurposed, remanufactured or reused battery needs a new passport linked to the original one(s) (Battery Regulation Art. 77(7)). Pass a lineage block to tracepass_passports create:
{ "predecessors": [ { "internalPassportId": "<your original passport id>", "trigger": "repurposing" } ] }
A predecessor is named by internalPassportId (one of your own passports) or by its resolvable identifier. trigger is one of preparation_for_reuse, preparation_for_repurposing, repurposing or remanufacturing. The platform derives batteryStatus from the triggers, stores the block immutably, and links your own originals back to the new passport (successors). A battery placed on the market before 18 Feb 2027 has no original passport: send an empty list with noPredecessorReason. Rule violations return 422 with the rule code.
capture_measurements pushes over-life data from your own equipment into a published battery passport: state of health, fades, cycle counts, dynamic values, state of charge, negative events, temperature history (Battery Regulation Annex XIII point 4). Every measurement is kept; the newest per field becomes the passport's current value and sets dynamicDataAsOf. list_measurements and latest_measurements read them back.
They are metered against the plan's monthly measurement allowance, not the daily write budget. Paid plans keep counting past the allowance at no charge; the Free plan stops at its allowance. Reading a passport is never metered.
The economic operator registers a battery passport itself, on the EU DPP Registry website under its own EU Login. TracePass prepares what the operator submits and records what the operator reports; it never submits to the Registry and never verifies the outcome.
tracepass_passports registry_readiness — would the Registry's formal checks pass?tracepass_passports prepare_registry_upi returns the exact address (upi) to paste into the Registry's online form. For several passports, prepare_registry_upload_file ({ passportIds }, up to 100) returns xml to upload unchanged under filename; passports that would fail are left out and listed in excluded with a reason, because the Registry fails a whole file on one bad entry.tracepass_passports record_acceptance_test records its result and changes nothing else.tracepass_passport_lifecycle record_registration records앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요