Commit 2a9d6f3
fix(mcp): fix document tools and expand MCP documentation (#2731)
* fix(mcp): add missing required fields to document query source filters
GetByUrlAsync omitted `search_title` and GetStructureAsync omitted both
`search_title` and `type` from the Elasticsearch _source filter. Since
DocumentationDocument marks these as `required`, the JSON deserializer
threw on every response: "missing required properties including:
'search_title'". Adding them to the source filter fixes the 2 broken
document tools.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): expand MCP docs with 4-IDE install tabs and one-click install buttons
- Add Cursor and VS Code one-click deep-link install buttons.
- Add Claude Code tab with CLI (`claude mcp add`) and `.mcp.json` instructions.
- Add IntelliJ IDEA tab with UI navigation steps and JSON config.
- Note that the MCP server uses stateless Streamable HTTP transport.
- Mention full-URL support in `GetDocumentByUrl` and `AnalyzeDocumentStructure` descriptions in docs.
- Update SKILL.md to reflect that both tools accept full URLs or paths (fixing misleading path-only examples).
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): add all 14 MCP tools to SKILL.md
The skill previously only documented 6 of the 14 tools (search and
document tools). Add the missing 8: ResolveCrossLink, ListRepositories,
GetRepositoryLinks, FindCrossLinks, ValidateCrossLinks (LinkTools), and
ListContentTypes, GenerateTemplate, GetContentTypeGuidelines
(ContentTypeTools).
Also update the skill name/description and usage guidelines to reflect
the full set of capabilities.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(docs/mcp): correct VS Code deep link URL encoding
The / characters inside the JSON value were not percent-encoded
(%2F), which would cause VS Code's protocol handler to misparse the
config. Use full encodeURIComponent-style encoding (safe='') so the
link matches what the VS Code MCP install handler expects.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): move installation before tool reference
Installation instructions are the most common entry point for readers,
so surface them before the command reference.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: exclude IDE deep-link schemes from cross-link validation
cursor:// and vscode: URLs (used for one-click MCP server installation
buttons) were not in ExcludedSchemes, so the link validator treated them
as cross-repository links and reported 'cursor'/'vscode' not found in
the cross-link index.
Add cursor, vscode, and vscode-insiders to ExcludedSchemes so they are
passed through as plain external links.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: treat non-http absolute URIs as opaque external links
After the cross-link check passes, ValidateExternalUri only returned
true (skip internal-path validation) for http/https and mailto schemes.
Any other absolute URI — including cursor:// and vscode: deep links —
fell through to ProcessInternalLink, which resolved them as relative
file paths and emitted "does not exist" errors.
Change the early-return to `true` for any non-http/non-mailto scheme so
that opaque protocol links (IDE deep links, ftp://, etc.) are skipped
by the file-existence validator entirely.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: guard against empty paragraph text in ProcessListBlock
GetInlineText returns "" when all inlines in a list item are unhandled
types (e.g. HtmlInline). Accessing paragraphText[^1] on an empty string
throws IndexOutOfRangeException.
Add the same null/empty guard that ProcessParagraph already uses, so
empty list items are skipped rather than causing an uncaught exception
during description generation.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* Revert "fix: guard against empty paragraph text in ProcessListBlock"
This reverts commit 3d35fc1.
* Revert "fix: treat non-http absolute URIs as opaque external links"
This reverts commit 22895b1.
* Revert "fix: exclude IDE deep-link schemes from cross-link validation"
This reverts commit e136184.
* test: remove install buttons to isolate DescriptionGenerator crash
Revert CrossLinkValidator and DiagnosticLinkInlineParser changes, and
remove cursor:// and vscode: deep-link buttons from docs, to verify
whether the DescriptionGenerator IndexOutOfRangeException is caused by
these changes or is a pre-existing docs-content issue.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): add install buttons using ela.st redirects
Use https://ela.st short links that redirect to cursor:// and vscode:
deep-link protocols. This avoids triggering cross-link validation while
still providing one-click install buttons for Cursor and VS Code.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): use raw HTML links for IDE install buttons
Replace {button} directives with raw <a> tags for the cursor:// and
vscode: deep links. The markdown link parser does not process inline
HTML, so these bypass cross-link validation entirely.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* ci: retrigger CI
Co-authored-by: Cursor <cursoragent@cursor.com>
* docs(mcp): use copyable code blocks for IDE install deep links
Raw HTML links render as static text. Replace with code blocks that
readers can copy and paste into their browser's address bar to trigger
the IDE install prompt.
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent 067cea7 commit 2a9d6f3
2 files changed
Lines changed: 233 additions & 55 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
88 | | - | |
| 88 | + | |
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
120 | 226 | | |
121 | 227 | | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
127 | 235 | | |
128 | 236 | | |
129 | 237 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
| 11 | + | |
18 | 12 | | |
19 | | - | |
| 13 | + | |
20 | 14 | | |
21 | | - | |
| 15 | + | |
22 | 16 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
28 | 20 | | |
29 | | - | |
| 21 | + | |
30 | 22 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
| 23 | + | |
35 | 24 | | |
36 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
37 | 34 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
| 35 | + | |
| 36 | + | |
42 | 37 | | |
43 | | - | |
| 38 | + | |
44 | 39 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
| 40 | + | |
49 | 41 | | |
50 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
51 | 45 | | |
52 | | - | |
| 46 | + | |
53 | 47 | | |
54 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
55 | 51 | | |
56 | | - | |
57 | | - | |
| 52 | + | |
58 | 53 | | |
59 | 54 | | |
60 | 55 | | |
61 | 56 | | |
62 | 57 | | |
| 58 | + | |
63 | 59 | | |
64 | 60 | | |
65 | 61 | | |
66 | 62 | | |
67 | 63 | | |
| 64 | + | |
68 | 65 | | |
69 | | - | |
70 | | - | |
| 66 | + | |
71 | 67 | | |
72 | | - | |
73 | | - | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
74 | 77 | | |
75 | 78 | | |
76 | 79 | | |
| |||
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
86 | | - | |
87 | | - | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
88 | 95 | | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
89 | 114 | | |
90 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
91 | 161 | | |
92 | 162 | | |
93 | 163 | | |
| |||
0 commit comments