You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(mcp)!: rename to ooxml convention and refresh public surface
Renames every MCP tool to a single ooxml_* prefix and groups them into
two visible families: prose search (ooxml_search, ooxml_section,
ooxml_parts) over the spec PDFs, and schema lookup (ooxml_element,
ooxml_type, ooxml_children, ooxml_attributes, ooxml_enum,
ooxml_namespace) over the parsed XSDs. Drops the redundant lookup_ and
_info suffixes.
Server-level rename: ecma-spec-mcp -> ooxml-mcp (wrangler), MCP server
name -> "ooxml". Connect command becomes
"claude mcp add --transport http ooxml https://api.ooxml.dev/mcp".
DNS at api.ooxml.dev/mcp is unchanged; the deploy creates a new worker
and the route binding needs to be repointed once.
Drops the duplicate hard-coded tool list in handleMcpInfo so the GET
debug endpoint and the JSON-RPC tools/list response can no longer
drift.
Refreshes the /mcp page, prerender HTML, llms.txt, mcp-server README,
and brand.md to reflect both tool families. Adds Codex CLI install
instructions next to Claude Code and Cursor. Replaces the homepage
NEW callout to announce the schema-lookup launch.
BREAKING CHANGE: every existing MCP client config that connects to
api.ooxml.dev/mcp must update its tool names. Old names
(search_ecma_spec, get_section, list_parts, ooxml_lookup_element,
ooxml_lookup_type, ooxml_namespace_info) are not aliased.
Copy file name to clipboardExpand all lines: README.md
+30-5Lines changed: 30 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,16 +23,41 @@ We faced this at SuperDoc — building a document engine on native OOXML with no
23
23
24
24
## MCP Server
25
25
26
-
Ask questions in natural language and get answers grounded in the spec, or query the schema graph for precise structural answers.
26
+
Ask questions in natural language and get answers grounded in the spec, or query the schema graph for precise structural answers. Works with Claude Code, Codex CLI, Cursor, and any MCP-compatible client.
27
+
28
+
**Claude Code**
29
+
30
+
```bash
31
+
claude mcp add --transport http ooxml https://api.ooxml.dev/mcp
32
+
```
33
+
34
+
**Codex CLI**
27
35
28
36
```bash
29
-
claude mcp add --transport http ecma-spec https://api.ooxml.dev/mcp
"Semantic search across the ECMA-376 (Office Open XML) specification. Returns relevant sections based on natural language queries about WordprocessingML, SpreadsheetML, PresentationML, and more.",
46
46
inputSchema: {
@@ -61,7 +61,7 @@ const TOOLS = [
61
61
},
62
62
},
63
63
{
64
-
name: "get_section",
64
+
name: "ooxml_section",
65
65
description:
66
66
"Get a specific section of the ECMA-376 specification by section ID (e.g., '17.3.2' for paragraph properties).",
67
67
inputSchema: {
@@ -77,7 +77,7 @@ const TOOLS = [
77
77
},
78
78
},
79
79
{
80
-
name: "list_parts",
80
+
name: "ooxml_parts",
81
81
description: "List ECMA-376 specification parts and their top-level sections.",
82
82
inputSchema: {
83
83
type: "object"asconst,
@@ -124,11 +124,11 @@ function handleInitialize(id: number | string | null): JsonRpcResponse {
124
124
tools: {},
125
125
},
126
126
serverInfo: {
127
-
name: "ecma-spec",
127
+
name: "ooxml",
128
128
version: "0.1.0",
129
129
},
130
130
instructions:
131
-
"ECMA-376 (Office Open XML) specification search server. Use search_ecma_spec for semantic search, get_section for specific sections, or list_parts to browse the spec structure.",
131
+
"OOXML (ECMA-376 / Office Open XML) reference server. Two tool families: prose search over the spec PDFs (ooxml_search, ooxml_section, ooxml_parts) and deterministic schema lookup over the parsed XSDs (ooxml_element, ooxml_type, ooxml_children, ooxml_attributes, ooxml_enum, ooxml_namespace).",
132
132
},
133
133
};
134
134
}
@@ -173,7 +173,7 @@ async function handleToolsCall(
173
173
}
174
174
175
175
switch(name){
176
-
case"search_ecma_spec": {
176
+
case"ooxml_search": {
177
177
constquery=args?.queryasstring;
178
178
constpart=args?.partasnumber|undefined;
179
179
constlimit=Math.min((args?.limitasnumber)||5,20);
@@ -194,7 +194,7 @@ async function handleToolsCall(
194
194
break;
195
195
}
196
196
197
-
case"get_section": {
197
+
case"ooxml_section": {
198
198
constsectionId=args?.section_idasstring;
199
199
constpart=args?.partasnumber|undefined;
200
200
@@ -213,7 +213,7 @@ async function handleToolsCall(
0 commit comments