Skip to content

Commit 4cbbf6f

Browse files
fix: indent multi-line descriptions in generated docs
When tool parameter descriptions span multiple lines, the continuation lines now receive proper indentation to maintain markdown list formatting. This fixes the rendering issue where multi-line descriptions would break out of the parameter list structure. Fixes #1494
1 parent 94ee074 commit 4cbbf6f

File tree

3 files changed

+41
-25
lines changed

3 files changed

+41
-25
lines changed

README.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -726,12 +726,12 @@ The following sets of tools are available:
726726
- **issue_read** - Get issue details
727727
- `issue_number`: The number of the issue (number, required)
728728
- `method`: The read operation to perform on a single issue.
729-
Options are:
730-
1. get - Get details of a specific issue.
731-
2. get_comments - Get issue comments.
732-
3. get_sub_issues - Get sub-issues of the issue.
733-
4. get_labels - Get labels assigned to the issue.
734-
(string, required)
729+
Options are:
730+
1. get - Get details of a specific issue.
731+
2. get_comments - Get issue comments.
732+
3. get_sub_issues - Get sub-issues of the issue.
733+
4. get_labels - Get labels assigned to the issue.
734+
(string, required)
735735
- `owner`: The owner of the repository (string, required)
736736
- `page`: Page number for pagination (min 1) (number, optional)
737737
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
@@ -744,10 +744,10 @@ Options are:
744744
- `issue_number`: Issue number to update (number, optional)
745745
- `labels`: Labels to apply to this issue (string[], optional)
746746
- `method`: Write operation to perform on a single issue.
747-
Options are:
748-
- 'create' - creates a new issue.
749-
- 'update' - updates an existing issue.
750-
(string, required)
747+
Options are:
748+
- 'create' - creates a new issue.
749+
- 'update' - updates an existing issue.
750+
(string, required)
751751
- `milestone`: Milestone number (number, optional)
752752
- `owner`: Repository owner (string, required)
753753
- `repo`: Repository name (string, required)
@@ -784,11 +784,11 @@ Options are:
784784
- `before_id`: The ID of the sub-issue to be prioritized before (either after_id OR before_id should be specified) (number, optional)
785785
- `issue_number`: The number of the parent issue (number, required)
786786
- `method`: The action to perform on a single sub-issue
787-
Options are:
788-
- 'add' - add a sub-issue to a parent issue in a GitHub repository.
789-
- 'remove' - remove a sub-issue from a parent issue in a GitHub repository.
790-
- 'reprioritize' - change the order of sub-issues within a parent issue in a GitHub repository. Use either 'after_id' or 'before_id' to specify the new position.
791-
(string, required)
787+
Options are:
788+
- 'add' - add a sub-issue to a parent issue in a GitHub repository.
789+
- 'remove' - remove a sub-issue from a parent issue in a GitHub repository.
790+
- 'reprioritize' - change the order of sub-issues within a parent issue in a GitHub repository. Use either 'after_id' or 'before_id' to specify the new position.
791+
(string, required)
792792
- `owner`: Repository owner (string, required)
793793
- `replace_parent`: When true, replaces the sub-issue's current parent issue. Use with 'add' method only. (boolean, optional)
794794
- `repo`: Repository name (string, required)
@@ -986,15 +986,15 @@ Options are:
986986

987987
- **pull_request_read** - Get details for a single pull request
988988
- `method`: Action to specify what pull request data needs to be retrieved from GitHub.
989-
Possible options:
990-
1. get - Get details of a specific pull request.
991-
2. get_diff - Get the diff of a pull request.
992-
3. get_status - Get status of a head commit in a pull request. This reflects status of builds and checks.
993-
4. get_files - Get the list of files changed in a pull request. Use with pagination parameters to control the number of results returned.
994-
5. get_review_comments - Get the review comments on a pull request. They are comments made on a portion of the unified diff during a pull request review. Use with pagination parameters to control the number of results returned.
995-
6. get_reviews - Get the reviews on a pull request. When asked for review comments, use get_review_comments method.
996-
7. get_comments - Get comments on a pull request. Use this if user doesn't specifically want review comments. Use with pagination parameters to control the number of results returned.
997-
(string, required)
989+
Possible options:
990+
1. get - Get details of a specific pull request.
991+
2. get_diff - Get the diff of a pull request.
992+
3. get_status - Get status of a head commit in a pull request. This reflects status of builds and checks.
993+
4. get_files - Get the list of files changed in a pull request. Use with pagination parameters to control the number of results returned.
994+
5. get_review_comments - Get the review comments on a pull request. They are comments made on a portion of the unified diff during a pull request review. Use with pagination parameters to control the number of results returned.
995+
6. get_reviews - Get the reviews on a pull request. When asked for review comments, use get_review_comments method.
996+
7. get_comments - Get comments on a pull request. Use this if user doesn't specifically want review comments. Use with pagination parameters to control the number of results returned.
997+
(string, required)
998998
- `owner`: Repository owner (string, required)
999999
- `page`: Page number for pagination (min 1) (number, optional)
10001000
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)

cmd/github-mcp-server/generate_docs.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,9 @@ func generateToolDoc(tool mcp.Tool) string {
269269

270270
description = prop.Description
271271

272+
// Indent any continuation lines in the description to maintain markdown formatting
273+
description = indentMultilineDescription(description, " ")
274+
272275
paramLine := fmt.Sprintf(" - `%s`: %s (%s, %s)", propName, description, typeStr, requiredStr)
273276
lines = append(lines, paramLine)
274277
}
@@ -288,6 +291,19 @@ func contains(slice []string, item string) bool {
288291
return false
289292
}
290293

294+
// indentMultilineDescription adds the specified indent to all lines after the first line.
295+
// This ensures that multi-line descriptions maintain proper markdown list formatting.
296+
func indentMultilineDescription(description, indent string) string {
297+
lines := strings.Split(description, "\n")
298+
if len(lines) <= 1 {
299+
return description
300+
}
301+
for i := 1; i < len(lines); i++ {
302+
lines[i] = indent + lines[i]
303+
}
304+
return strings.Join(lines, "\n")
305+
}
306+
291307
func replaceSection(content, startMarker, endMarker, newContent string) string {
292308
startPattern := fmt.Sprintf(`<!-- %s -->`, regexp.QuoteMeta(startMarker))
293309
endPattern := fmt.Sprintf(`<!-- %s -->`, regexp.QuoteMeta(endMarker))

docs/remote-server.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Below is a table of available toolsets for the remote GitHub MCP Server. Each to
1919
<!-- START AUTOMATED TOOLSETS -->
2020
| Name | Description | API URL | 1-Click Install (VS Code) | Read-only Link | 1-Click Read-only Install (VS Code) |
2121
|----------------|--------------------------------------------------|-------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
22-
| Default | ["Default" toolset](../README.md#default-toolset) | https://api.githubcopilot.com/mcp/ | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=github&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D) | [read-only](https://api.githubcopilot.com/mcp/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=github&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Freadonly%22%7D) |
22+
| all | All available GitHub MCP tools | https://api.githubcopilot.com/mcp/ | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=github&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2F%22%7D) | [read-only](https://api.githubcopilot.com/mcp/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=github&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Freadonly%22%7D) |
2323
| Actions | GitHub Actions workflows and CI/CD operations | https://api.githubcopilot.com/mcp/x/actions | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-actions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Factions%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/actions/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-actions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Factions%2Freadonly%22%7D) |
2424
| Code Security | Code security related tools, such as GitHub Code Scanning | https://api.githubcopilot.com/mcp/x/code_security | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/code_security/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%2Freadonly%22%7D) |
2525
| Dependabot | Dependabot tools | https://api.githubcopilot.com/mcp/x/dependabot | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/dependabot/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%2Freadonly%22%7D) |

0 commit comments

Comments
 (0)