<div dir="auto">Note, here’s the Saxonica page with the HE License, previously I was reporting Google Search results:</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit" dir="auto"><a href="https://www.saxonica.com/html/documentation12/about/packages.html#:~:text=SaxonC%20%28on%20the%20Native%20platform%29%20is%20distributed,and%20require%20activation%20by%20a%20license%20key." style="font-size:inherit">https://www.saxonica.com/html/documentation12/about/packages.html</a></div><br></div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Tue, Apr 21, 2026 at 1:19 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">Great work here, foundational technology is still required, can we use MCP to debug X3D stylesheets, X3DUOM or schemas?  Can these be broken up into more manageable, extensible and reusable pieces?  Are they?  Does a stylesheet MCP exist?  XMLSpy?</div><div dir="auto"><br></div><div dir="auto">Interesting, I didn’t realize lxml came with style sheet processing (XSLT 1.0, sigh), validation and schematron! Reading XML into x3d.py!  That’s great progress.  Now I can create a typical JSON to DOM converter! That sounds like a task I could dig into!</div><div dir="auto"><br></div><div dir="auto">On JSON, Is there head metadata or just scene Metadata*?  If someone has a performant Python JSON schema validator, I’m all ears!  “<span style="font-family:"mona sans vf",-apple-system,blinkmacsystemfont,"segoe ui","noto sans",helvetica,arial,sans-serif,"apple color emoji","segoe ui emoji";font-size:inherit;color:rgb(31,35,40)">Validate an X3D document (XML or JSON) against the XSD schema.”  Frankly, it looks like the MCP validates JSON surface structure, I’m not seeing a schema validator for JSON.  Try misspelling “head” or “meta”  and see what happens to your validation.  I haven’t looked at the whole code base yet.  I need to review JSON output from x3d.py (recent versions), but…..</span></div><div dir="auto"><br></div><div dir="auto">It would seem like Saxonica would have an interesting Python stylesheet solution:</div><div dir="auto"><br></div><div dir="auto">Well, there’s Home Edition under Mozilla Public License!</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><ul style="padding:0px;font-family:"google sans","helvetica neue",sans-serif;font-size:inherit;font-weight:400;letter-spacing:normal;margin:12px 0px 16px;font-style:normal;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;color:rgb(10,10,10)"><li style="margin:0px;padding:0px;list-style:circle;font-family:"google sans","helvetica neue",sans-serif"><code dir="ltr" style="font-size:14px;line-height:22px;border:1px solid;border-radius:4px;font-family:monospace">pip install saxonche</code></li></ul></div><div style="font-size:inherit"><a href="https://www.saxonica.com/products/PD12/SaxonC-HE.pdf" style="font-size:inherit" target="_blank">https://www.saxonica.com/products/PD12/SaxonC-HE.pdf</a></div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">This seems like a good solution which protects Web3D Consortium investments.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">On the other hand, there’s supply chain risks.</div></div><div dir="auto"><br></div><div dir="auto"> I am hopeful that converting X3D JSON into X3D DOM or X3D XML with python will soon be possible!</div><div dir="auto"><br></div><div dir="auto">Collaboration welcome!</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 20, 2026 at 10:58 PM Don Brutzman via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div>For our next X3D AI Working Group meeting...</div><div><ul><li>Tuesday 21 April 2026, 0800 pacific</li><li><a href="https://www.web3d.org/calendar/2800/x3d-ai-working-group-meeting/2025-11-19t160000-2025-12-16t160000-2026-01-20t160000" target="_blank">https://www.web3d.org/calendar/2800/x3d-ai-working-group-meeting/2025-11-19t160000-2025-12-16t160000-2026-01-20t160000</a></li></ul></div><div>... am hoping to briefly present the following significant work by Rick Lentz.</div><div><br></div><div>The Model Context Protocol (MCP)</div><div><ul><li><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol" target="_blank">Model Context Protocol - Wikipedia</a></li><li><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol" target="_blank">https://en.wikipedia.org/wiki/Model_Context_Protocol</a></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)">The </span><b style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)">Model Context Protocol</b><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> (</span><b style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)">MCP</b><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)">) is an </span><a href="https://en.wikipedia.org/wiki/Open_standard" title="Open standard" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">open standard</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> and </span><a href="https://en.wikipedia.org/wiki/Open-source" title="Open-source" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">open-source</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> </span><a href="https://en.wikipedia.org/wiki/Software_framework" title="Software framework" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">framework</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> introduced by </span><a href="https://en.wikipedia.org/wiki/Anthropic" title="Anthropic" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">Anthropic</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> in November 2024 to standardize the way </span><a href="https://en.wikipedia.org/wiki/Artificial_intelligence" title="Artificial intelligence" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">artificial intelligence</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> (AI) systems like </span><a href="https://en.wikipedia.org/wiki/Large_language_model" title="Large language model" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">large language models</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> (LLMs) integrate and share data with external tools, systems, and data sources.</span><sup id="m_-2898891252156801678m_-3650711868205830252gmail-cite_ref-venturebeat-2024-11-25_1-0" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:10.16px;font-family:sans-serif;color:rgb(0,0,0)"><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol#cite_note-venturebeat-2024-11-25-1" style="text-decoration:none;background:0% 0% repeat;font-family:sans-serif;color:rgb(0,43,184)" target="_blank"><span style="font-family:sans-serif">[</span>1<span style="font-family:sans-serif">]</span></a></sup><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> MCP provides a universal interface for reading files, executing functions, and handling contextual prompts.</span><sup id="m_-2898891252156801678m_-3650711868205830252gmail-cite_ref-venturebeat_2025-03-27_2-0" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:10.16px;font-family:sans-serif;color:rgb(0,0,0)"><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol#cite_note-venturebeat_2025-03-27-2" style="text-decoration:none;background:0% 0% repeat;font-family:sans-serif;color:rgb(0,43,184)" target="_blank"><span style="font-family:sans-serif">[</span>2<span style="font-family:sans-serif">]</span></a></sup><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> Following its announcement, the protocol was adopted by major AI providers, including </span><a href="https://en.wikipedia.org/wiki/OpenAI" title="OpenAI" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">OpenAI</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)"> and </span><a href="https://en.wikipedia.org/wiki/Google_DeepMind" title="Google DeepMind" style="text-decoration:none;background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-family:sans-serif;font-size:12.7px;color:rgb(0,43,184)" target="_blank">Google DeepMind</a><span style="font-family:sans-serif;font-size:12.7px;color:rgb(0,0,0)">.</span><sup id="m_-2898891252156801678m_-3650711868205830252gmail-cite_ref-TechCrunch_2025-03-25_3-0" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:10.16px;font-family:sans-serif;color:rgb(0,0,0)"><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol#cite_note-TechCrunch_2025-03-25-3" style="text-decoration:none;background:0% 0% repeat;font-family:sans-serif;color:rgb(0,43,184)" target="_blank"><span style="font-family:sans-serif">[</span>3<span style="font-family:sans-serif">]</span></a></sup><sup id="m_-2898891252156801678m_-3650711868205830252gmail-cite_ref-TechCrunch_2025-04-09_4-0" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:10.16px;font-family:sans-serif;color:rgb(0,0,0)"><a href="https://en.wikipedia.org/wiki/Model_Context_Protocol#cite_note-TechCrunch_2025-04-09-4" style="text-decoration:none;background:0% 0% repeat;font-family:sans-serif;color:rgb(0,43,184)" target="_blank"><span style="font-family:sans-serif">[</span>4<span style="font-family:sans-serif">]</span></a></sup></blockquote><div><br></div><div>Rick has created an open-source MCP project for X3D, and has gotten some interesting results using it.</div><div><ul><li><span style="white-space:nowrap;box-sizing:border-box;text-decoration:none;min-width:3ch;line-height:24px;border-radius:6px;height:31.9981px;text-overflow:ellipsis;font-weight:600;overflow:hidden;display:inline!important;background-color:rgba(0,0,0,0);color:rgb(31,35,40)"><a href="https://github.com/ricklentz/x3d_mcp" target="_blank">ricklentz/x3d_mcp</a></span></li><li><a href="https://github.com/ricklentz/x3d_mcp" target="_blank">https://github.com/ricklentz/x3d_mcp</a></li><li><a href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md" target="_blank">https://github.com/ricklentz/x3d_mcp/blob/main/README.md</a></li></ul><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";margin-top:0px;color:rgb(31,35,40)"><h1 dir="auto" style="box-sizing:border-box;margin:0px 0px 16px;line-height:1.25;border-bottom-width:0.909091px;border-bottom-style:solid;padding-bottom:0.3em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";border-bottom-color:rgba(209,217,224,0.7)"><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">x3d_mcp</font></h1><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-x3d_mcp" aria-label="Permalink: x3d_mcp" href="https://github.com/ricklentz/x3d_mcp#x3d_mcp" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">MCP server for generating, validating, and converting valid X3D content. Built on the official Web3D Consortium toolchain.</p><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h2 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;border-bottom-width:0.909091px;border-bottom-style:solid;padding-bottom:0.3em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";border-bottom-color:rgba(209,217,224,0.7)"><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Overview</font></h2><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-overview" aria-label="Permalink: Overview" href="https://github.com/ricklentz/x3d_mcp#overview" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">x3d_mcp exposes X3D capabilities to LLMs via the Model Context Protocol (MCP). It generates spec-compliant X3D scenes in XML, JSON, and ClassicVRML encodings, with full validation against the ISO/IEC 19775 standard.</p><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">LLMs have spatial and visual understanding of 3D space. X3D (Extensible 3D) provides a declarative, XML-based means to express that understanding as valid, interoperable 3D content. This server bridges the two.</p><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">No X3D MCP server exists in the ecosystem.</span> This is the first.<span style="font-family:Arial,Helvetica,sans-serif;color:rgb(34,34,34)"> </span></p></blockquote><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h2 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;border-bottom-width:0.740741px;border-bottom-style:solid;padding-bottom:0.3em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";border-bottom-color:rgba(209,217,224,0.7)"><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Design Decisions</font></h2><span style="margin:auto;line-height:1;border-radius:6px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-design-decisions" aria-label="Permalink: Design Decisions" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#design-decisions" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></span></div><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h3 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Language: Python</font></h3><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-language-python" aria-label="Permalink: Language: Python" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#language-python" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><ul dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;padding-left:2em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><li style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">x3d.py</code></span> (PyPI <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">x3d</code> v4.0.65, BSD-3) -- official Web3D Consortium package, auto-generated from X3DUOM</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">lxml</code></span> -- XSD and ISO-Schematron validation, 42x faster than pure-Python alternatives</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">FastMCP</code></span> (PyPI <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">mcp</code>) -- official Anthropic MCP SDK, decorator-based tool registration</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">All dependencies are BSD/MIT licensed. Project uses <a href="https://www.web3d.org/license" rel="nofollow" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank">Web3D Consortium Open-Source License</a>.</li></ul><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h3 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Two Operating Modes</font></h3><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-two-operating-modes" aria-label="Permalink: Two Operating Modes" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#two-operating-modes" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Workflow Mode</span> -- high-level tools for end-to-end scene generation. The LLM describes what it wants; the server handles construction, validation, and serialization. Fewer tool calls, higher reliability.</p><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Granular Mode</span> -- low-level tools for node-by-node scene construction. The LLM builds the scene graph incrementally: create nodes, set fields, add children, define routes. Full control for complex or iterative workflows.</p><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Both modes validate output before returning it.</p><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h3 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">JSON Conversion</font></h3><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-json-conversion" aria-label="Permalink: JSON Conversion" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#json-conversion" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">JSON and ClassicVRML encoding uses <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">x3d.py</code>'s built-in <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">.JSON()</code> and <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">.VRML()</code> serialization methods. These are auto-generated from X3DUOM and produce spec-compliant output directly. The Web3D Consortium's <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">X3dToJson.xslt</code> is XSLT 2.0, which is incompatible with lxml (XSLT 1.0 only), so we use the native Python serialization instead.</p><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h3 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Validation Pipeline</font></h3><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-validation-pipeline" aria-label="Permalink: Validation Pipeline" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#validation-pipeline" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">Three layers, matching the X3D specification's own validation hierarchy:</p><ol dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;padding-left:2em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><li style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Type checking at generation time</span> -- <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">x3d.py</code> enforces field types, ranges, and enumerations during scene construction</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">XSD validation</span> -- <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">lxml.etree.XMLSchema</code> against <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">x3d-4.1.xsd</code> (bundled with companion schemas)</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><span style="box-sizing:border-box;font-weight:600;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">JSON structural validation</span> -- checks for required X3D root, @version, @profile, and Scene keys</li></ol><div dir="auto" style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><h3 dir="auto" style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji""><font size="2" style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">X3DUOM as Foundation</font></h3><a id="m_-2898891252156801678m_-3650711868205830252gmail-user-content-x3duom-as-foundation" aria-label="Permalink: X3DUOM as Foundation" href="https://github.com/ricklentz/x3d_mcp/blob/main/README.md#x3duom-as-foundation" style="box-sizing:border-box;float:left;padding-right:4px;margin:auto;line-height:1;border-radius:6px;opacity:0;width:28px;height:28px;display:flex;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background-color:rgba(0,0,0,0);color:rgb(9,105,218)" target="_blank"></a></div><p dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">The <code style="box-sizing:border-box;font-family:"Monaspace Neon",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;white-space:break-spaces;border-radius:6px;margin:0px;padding:0.2em 0.4em;background-color:rgba(129,139,152,0.12)">X3dUnifiedObjectModel-4.1.xml</code> (X3DUOM) is the single source of truth for all 265 concrete nodes (5 new in 4.1: EnvironmentLight, FontLibrary, HAnimPose, InlineGeometry, Tangent), abstract types, simple types, and statements. It is parsed at build time to generate:</p><ul dir="auto" style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;padding-left:2em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><li style="box-sizing:border-box;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Node/field metadata lookup tables</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">containerField mapping rules</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Enumeration value sets</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Default value tables</li><li style="box-sizing:border-box;margin-top:0.25em;font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"">Inheritance hierarchy</li></ul><span style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">[etc. etc. etc.]</span></div><div><span style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)">_________________</span></div></div><div><span style="font-family:"Mona Sans VF",-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:rgb(31,35,40)"><br></span></div><div><span style="color:rgb(31,35,40)"><font face="arial, sans-serif" style="font-family:arial,sans-serif;color:rgb(31,35,40)">This certainly looks interesting and already connects a thorough list of X3D resources.  He is willing to transition (not just fork) this project on GitHub as an open-access Web3D Consortium project if the X3D AI group is willing to work with it.  This project is already shared publicly under the Web3D Consortium Open-Source License.</font></span></div><div><span style="color:rgb(31,35,40)"><font face="arial, sans-serif" style="font-family:arial,sans-serif;color:rgb(31,35,40)"><br></font></span></div><div><font face="arial, sans-serif" style="font-family:arial,sans-serif;color:rgb(31,35,40)">All reactions and feedback welcome.  Have fun with MCP, and LLM model creation using X3D!  😁 👍</font></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">all the best, Don</font></div></div></div></div></div><div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">Relative Motion Consulting  <a href="https://RelativeMotion.info" style="font-family:monospace" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div></div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>
</blockquote></div></div>