-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Add API documentation with GitHub Pages deployment #1109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add API documentation with GitHub Pages deployment #1109
Conversation
commit: |
a79839c to
80f17f4
Compare
|
Hey, thanks for your contribution. This is a great idea but I think these docs should live in the [official docs](https://modelcontextprotocol.io/] under its own section. It probably needs some syncing with that repo more than creating a deployment here. |
|
@mattzcarey I intend to link to the docs from the SDKs page. Ultimately, I think it would be nice have something like However, I strongly feel that the docs files themselves should live in each individual SDK's repo. That way, (1) the docs will be naturally kept in sync with the SDK, and (2) generation of versioned API docs will be tied to an SDK's release via GitHub Actions. |
94a7781 to
5023e06
Compare
5023e06 to
aa1575d
Compare
fab0d31 to
e66c540
Compare
e66c540 to
ec7fbda
Compare
ec7fbda to
b8eeb5d
Compare
felixweinberger
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @jonathanhefner thanks for kicking this off!
I think having a documentation page specifically for the TypeScript SDK is good and GH Pages seems like the right way to host this imo.
Looking at the current version of the documentation though this looks like mostly generated docs based on DocStrings / Types. Is the idea for this to be a skeleton that we then fill in with actual guides and How-Tos for doing stuff or is the intention just to be a type reference? I'm not sure if the type reference adds a ton of value over just having the source code on github directly and inspecting the source?
Comparing for example the direction the Python SDK docs are going in which is more of a nicely rendered and navigable guide on how to actually use the SDK: https://modelcontextprotocol.github.io/python-sdk/
Do we need all the generated type docs or should we stick to something closer to what Python is doing?
656143f to
63ade30
Compare
There are two possible approaches I had in mind:
When I first submitted this PR, there were no other documents, so I tried to allow for either possibility. (See this comment in the script for Option 2.) Since #1197, there are now some guides in At the moment, I lean toward staying with Option 1. If we have more sophisticated needs for structure and styling, we can switch to Option 2. |
Yeah I think this is heading more in the direction I was thinking: https://jonathanhefner.github.io/mcp-typescript-sdk/v99.0.1/documents/Server.html However, I do feel like the navigation might be a little bit confusing / overwhelming? Looking at the side bar:
There's a mix of low level API references that mirror the code structure and more classic tutorial-style guides. By virtue of the code structure for example we're elevating Even just having: Would be quite helpful potentially to separate the generated class and type docs from the actually written prose and guides? |
63ade30 to
8afd7d4
Compare
This adds automated generation and deployment of versioned API
documentation using TypeDoc and GitHub Pages. Documentation will be
generated and published when a new release is created.
Changes
-------
1. **Documentation generation script** (see `scripts/generate-gh-pages.sh`)
Generates TypeDoc documentation for a specific version tag and
commits it to the gh-pages branch. The script uses git worktrees to
isolate the documentation generation process from the main workspace.
Documentation for each release is stored in a versioned directory
(e.g., `v1.2.3/`) on the gh-pages branch. The script:
- Parses semantic versions from tag names, ignoring arbitrary prefixes
(e.g., tags `1.2.3`, `v1.2.3`, and `release-1.2.3` all create `v1.2.3/`)
- Creates the gh-pages branch as an orphan branch if it doesn't exist
- Generates new doc pages while preserving existing versioned directories
- Generates `_data/latest_version.yml` for Jekyll template
- Determines the latest version via semantic version sorting
- For the latest version only, copies static Jekyll template files
from `.github/pages/` to the gh-pages root
2. **Jekyll template files** (see `.github/pages/` directory)
- `.github/pages/_config.yml` - Jekyll configuration
- `.github/pages/index.html` - Landing page that redirects to the
latest version based on the generated `_data/latest_version.yml`
3. **GitHub Actions workflow** (see `.github/workflows/main.yml`)
Added a `publish-gh-pages` job that runs after the `publish` job on
release events. This ensures documentation is generated and
published only after the npm package is successfully published. The
job invokes the generation script with the release tag name and
pushes the updated gh-pages branch.
4. **CI validation** (see `package.json`)
Updated the `check` script to include TypeDoc validation with
`--emit none`. This ensures TypeDoc can successfully parse the
codebase (without generating output), catching documentation issues
early in CI.
5. **Documentation link** (see `README.md`)
Added a link to the published API documentation in the Documentation
section of the README.
TypeDoc Configuration
---------------------
TypeDoc is configured via `typedoc.json`:
- Uses the `src` directory as the entry point with the `expand` strategy
- Explicitly excludes test files, mocks, examples, and integration tests
Documentation URL
-----------------
Documentation will be available at:
https://modelcontextprotocol.github.io/typescript-sdk/
Versioned API documentation will be available at:
- https://modelcontextprotocol.github.io/typescript-sdk/ (redirects to latest)
- https://modelcontextprotocol.github.io/typescript-sdk/v1.2.3/ (specific versions)
Co-Authored-By: Claude <noreply@anthropic.com>
latest version
- Add `projectDocuments` option to `typedoc.json` to include `docs/*.md` - Prefix `docs/*.md` filenames with indexes to control sidebar ordering - Convert relative links to absolute GitHub URLs so they work in the generated documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
8afd7d4 to
63bf877
Compare
|
|
@felixweinberger Good point. How does this look:
|





This adds automated generation and deployment of versioned API documentation using TypeDoc and GitHub Pages. Documentation will be generated and published when a new release is created.
Changes
Documentation generation script (see
scripts/generate-gh-pages.sh)Generates TypeDoc documentation for a specific version tag and commits it to the gh-pages branch. The script uses git worktrees to isolate the documentation generation process from the main workspace.
Documentation for each release is stored in a versioned directory (e.g.,
v1.2.3/) on the gh-pages branch. The script:1.2.3,v1.2.3, andrelease-1.2.3all createv1.2.3/)_data/latest_version.ymlfor Jekyll template.github/pages/to the gh-pages rootJekyll template files (see
.github/pages/directory).github/pages/_config.yml- Jekyll configuration.github/pages/index.html- Landing page that redirects to the latest version based on the generated_data/latest_version.ymlGitHub Actions workflow (see
.github/workflows/main.yml)Added a
publish-gh-pagesjob that runs after thepublishjob on release events. This ensures documentation is generated and published only after the npm package is successfully published. The job invokes the generation script with the release tag name and pushes the updated gh-pages branch.CI validation (see
package.json)Updated the
checkscript to include TypeDoc validation with--emit none. This ensures TypeDoc can successfully parse the codebase (without generating output), catching documentation issues early in CI.Documentation link (see
README.md)Added a link to the published API documentation in the Documentation section of the README.
TypeDoc Configuration
TypeDoc is configured via
typedoc.json:srcdirectory as the entry point with theexpandstrategyDocumentation URL
Documentation will be available at:
https://modelcontextprotocol.github.io/typescript-sdk/
Versioned API documentation will be available at:
Co-Authored-By: Claude noreply@anthropic.com
You can see a preview of the documentation at: https://jonathanhefner.github.io/mcp-typescript-sdk/.
Note that the page automatically redirects to the latest version (in the preview, dummy v99.0.1), but it is fully customizable — see
.github/pages/index.html— and can be more sophisticated in the future.Eventually, I intend to link to the page from the
modelcontextprotocol.ioSDKs page. And, ultimately, I think it would be nice have something likesdks.modelcontextprotocol.iosuch thathttps://sdks.modelcontextprotocol.io/typescript-sdk/resolves tohttps://modelcontextprotocol.github.io/typescript-sdk/.If desired, I can also submit a PR for the
gh-pagesbranch that backfills docs for old tags.