From 76289df32c18df774c020f7f849488f301466a87 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Tue, 10 Feb 2026 14:03:40 +0100 Subject: [PATCH] :sparkles: Establish compatibility with new member anchors (h3 instead of a tag) --- mcp/types-generator/prepare_api_docs.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mcp/types-generator/prepare_api_docs.py b/mcp/types-generator/prepare_api_docs.py index f5f4c72212..fafe0065e8 100644 --- a/mcp/types-generator/prepare_api_docs.py +++ b/mcp/types-generator/prepare_api_docs.py @@ -201,11 +201,21 @@ class PenpotAPIDocsProcessor: members_in_group = {} members[members_type] = members_in_group for member_tag in el.find_all(attrs={"class": "tsd-member"}): + # determine member name + member_name = None member_anchor = member_tag.find("a", attrs={"class": "tsd-anchor"}, recursive=False) - member_name = member_anchor.attrs["id"] - member_heading = member_tag.find("h3") + if member_anchor is not None: + member_name = member_anchor.attrs["id"] + else: + member_h3 = member_tag.find("h3", recursive=False) + if member_h3 is not None: + h3_span = member_h3.find("span", recursive=False) + if h3_span is not None: + member_name = h3_span.get_text().strip() + assert member_name is not None, f"Could not determine member name for\n{member_tag}" # extract tsd-tag info (e.g., "Readonly") from the heading and reinsert it into the signature, # where we want to see it. The heading is removed, as it is redundant. + member_heading = member_tag.find("h3") if member_heading: tags_in_heading = member_heading.find_all(attrs={"class": "tsd-tag"}) if tags_in_heading: