diff --git a/.github/workflows/run-static.yml b/.github/workflows/run-static.yml
index 422c6d136..ff70d1a58 100644
--- a/.github/workflows/run-static.yml
+++ b/.github/workflows/run-static.yml
@@ -58,13 +58,30 @@ jobs:
SKIP: no-commit-to-branch
- name: Check SDK documentation is up to date
run: |
+ # Save original docs.json for comparison
+ cp docs/docs.json docs/docs.json.orig
+
+ # Generate documentation
just api-ref-all > /dev/null 2>&1
- if ! git diff --quiet docs/python-sdk/ docs/docs.json; then
+
+ # Check if python-sdk files changed
+ if ! git diff --quiet docs/python-sdk/; then
echo "❌ SDK documentation is out of date!"
echo "Files that were updated:"
- git diff --name-only docs/python-sdk/ docs/docs.json
+ git diff --name-only docs/python-sdk/
echo ""
echo "Run 'just api-ref-all' and commit the changes."
exit 1
fi
+
+ # Check if docs.json content changed (ignoring formatting)
+ if ! jq --sort-keys . docs/docs.json.orig | diff -q - <(jq --sort-keys . docs/docs.json) > /dev/null 2>&1; then
+ echo "❌ docs.json content has changed!"
+ echo "Run 'just api-ref-all' and commit the changes."
+ exit 1
+ fi
+
+ # Restore original docs.json to avoid false positives
+ mv docs/docs.json.orig docs/docs.json
+
echo "✅ SDK documentation is up to date"
diff --git a/docs/assets/brand/card-background.png b/docs/assets/brand/card-background.png
new file mode 100644
index 000000000..73e0581ca
Binary files /dev/null and b/docs/assets/brand/card-background.png differ
diff --git a/docs/assets/favicon.svg b/docs/assets/brand/favicon.svg
similarity index 100%
rename from docs/assets/favicon.svg
rename to docs/assets/brand/favicon.svg
diff --git a/docs/assets/brand/logo-wordmark-dark.svg b/docs/assets/brand/logo-wordmark-dark.svg
new file mode 100644
index 000000000..207134c62
--- /dev/null
+++ b/docs/assets/brand/logo-wordmark-dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/assets/brand/logo-wordmark.svg b/docs/assets/brand/logo-wordmark.svg
new file mode 100644
index 000000000..6e704d538
--- /dev/null
+++ b/docs/assets/brand/logo-wordmark.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/css/style.css b/docs/css/style.css
index 6f526c7bc..f25fda7fb 100644
--- a/docs/css/style.css
+++ b/docs/css/style.css
@@ -1,3 +1,7 @@
+img.nav-logo {
+ height: 34px;
+}
+
/* Code highlighting -- target only inline code elements, not code blocks */
p code:not(pre code),
table code:not(pre code),
@@ -12,3 +16,5 @@ h6 code:not(pre code) {
color: #f72585 !important;
background-color: rgba(247, 37, 133, 0.09);
}
+
+
diff --git a/docs/docs.json b/docs/docs.json
index 2c5d7739d..4c3e5e153 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -4,6 +4,10 @@
"default": "system",
"strict": false
},
+ "logo": {
+ "light": "/assets/brand/logo-wordmark.svg",
+ "dark": "/assets/brand/logo-wordmark-dark.svg"
+ },
"background": {
"color": {
"dark": "#222831",
@@ -11,6 +15,10 @@
},
"decoration": "windows"
},
+ "thumbnails": {
+ "appearance": "light",
+ "background": "/assets/brand/card-background.png"
+ },
"banner": {
"content": "Remote MCP that just works. [Try FastMCP Cloud ->](https://fastmcp.link/IhmBxWn)"
},
@@ -21,8 +29,8 @@
},
"description": "The fast, Pythonic way to build MCP servers and clients.",
"favicon": {
- "dark": "/assets/favicon.svg",
- "light": "/assets/favicon.svg"
+ "dark": "/assets/brand/favicon.svg",
+ "light": "/assets/brand/favicon.svg"
},
"footer": {
"socials": {