-
-
⚡ MCP Server
+
+
+ ⚡ MCP Server
+
+
+ Latest MCP (2026-07-28) · Stateless
+
OOXML reference for AI assistants
- Three tool families: prose search across 18,000+ spec chunks, deterministic schema
- lookup over the parsed XSDs, and curated OPC package metadata. Ask in natural language,
- or query the structure directly.
+ Search spec prose, inspect XSD schemas, look up OPC package metadata, and query preset
+ shape guides from your AI assistant.
+
+ The hosted service is free. You may need to create an account and sign in when you
+ connect. Sign-in is only used to control usage.
+
+
{/* Endpoint */}
Endpoint
@@ -214,7 +231,7 @@ export function Mcp() {
{activeTab === "other" && (
<>
- Use the endpoint URL with any MCP-compatible client:
+ Use the endpoint URL with an MCP client that supports Streamable HTTP:
@@ -292,6 +309,26 @@ export function Mcp() {
+ {/* Preset shape tools */}
+
+
Preset shapes
+
+ Adjustment guides extracted from ECMA-376 Fourth Edition, Part 1 Annex D.
+
+
+ {PRESET_SHAPE_TOOLS.map((tool) => (
+
+
+
+ {tool.name}
+
+
{tool.description}
+
+
+ ))}
+
+
+
{/* Example Queries */}
Example Queries
@@ -325,9 +362,8 @@ export function Mcp() {
tools.
- By connecting to this MCP server, your AI assistant gains prose search across the
- ECMA-376 specification, deterministic schema lookup over the parsed XSDs, and curated
- OPC package metadata—making it much easier to work with Office Open XML.
+ Connect this server to search the ECMA-376 specification, inspect XSD schemas, look up
+ OPC package metadata, and query preset shape guides.
From 819ebd2e21ff4f2ddb95cbc40cffdbc947b4a291 Mon Sep 17 00:00:00 2001
From: Caio Pizzol <97641911+caio-pizzol@users.noreply.github.com>
Date: Thu, 13 Aug 2026 10:53:02 -0300
Subject: [PATCH 2/2] fix(web): handle clipboard errors
---
apps/web/src/pages/Cli.tsx | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/apps/web/src/pages/Cli.tsx b/apps/web/src/pages/Cli.tsx
index 308f603..20bc99e 100644
--- a/apps/web/src/pages/Cli.tsx
+++ b/apps/web/src/pages/Cli.tsx
@@ -93,12 +93,17 @@ function CommandBlock({
label: string;
multiline?: boolean;
}) {
- const [copied, setCopied] = useState(false);
+ const [copyStatus, setCopyStatus] = useState<"idle" | "copied" | "failed">("idle");
- const copy = () => {
- navigator.clipboard.writeText(command);
- setCopied(true);
- setTimeout(() => setCopied(false), 2000);
+ const copy = async () => {
+ try {
+ if (!navigator.clipboard?.writeText) throw new Error("Clipboard API unavailable");
+ await navigator.clipboard.writeText(command);
+ setCopyStatus("copied");
+ } catch {
+ setCopyStatus("failed");
+ }
+ setTimeout(() => setCopyStatus("idle"), 2000);
};
return (
@@ -117,8 +122,9 @@ function CommandBlock({
onClick={copy}
className="shrink-0 text-xs font-medium text-white hover:text-[var(--color-syntax-value)]"
aria-label={`Copy ${label}`}
+ aria-live="polite"
>
- {copied ? "Copied" : "Copy"}
+ {copyStatus === "copied" ? "Copied" : copyStatus === "failed" ? "Copy failed" : "Copy"}
);