Skip to content

Commit 8f8fc89

Browse files
tadasantclaude
andauthored
Fix missing $schema entries - data migration (#806)
Drafted by Claude Code, reviewed by me. ## Summary This PR adds a data migration to fix 17 server entries that were published with empty `$schema` fields. **This is a pure data migration** - no code changes are needed because: - Validation for the `$schema` field was already added in commit [6d2001b](6d2001b) on **2025-10-07** - That validation was deployed to production on **2025-10-14** with v1.3.0 ([PR #668](#668)) - All 17 affected entries were published before deployment (see dates below) ## Affected Entries (17 total) | Server | Version | Published | |--------|---------|-----------| | io.github.ruvnet/claude-flow | 2.0.0-alpha.104 | 2025-09-10 | | io.github.ruvnet/claude-flow | 2.0.0-alpha.105 | 2025-09-10 | | io.github.ruvnet/ruv-swarm | 1.0.18 | 2025-09-10 | | io.github.ruvnet/ruv-swarm | 1.0.19 | 2025-09-10 | | travel.kismet/mcp-server | 0.0.0 | 2025-09-10 | | io.github.jkakar/cookwith-mcp | 1.0.0 | 2025-09-11 | | io.github.jkakar/cookwith-mcp | 1.0.1 | 2025-09-12 | | io.github.jkakar/cookwith-mcp | 1.0.2 | 2025-09-12 | | io.github.OtherVibes/mcp-as-a-judge | 0.3.12 | 2025-09-18 | | io.github.OtherVibes/mcp-as-a-judge | 0.3.13 | 2025-09-18 | | io.github.OtherVibes/mcp-as-a-judge | 0.3.14 | 2025-09-18 | | io.github.OtherVibes/mcp-as-a-judge | 0.3.20 | 2025-09-20 | | io.github.Skills03/scrimba-teaching | 1.0.1 | 2025-09-21 | | io.github.Skills03/scrimba-teaching | 1.1.0 | 2025-09-21 | | io.github.Skills03/scrimba-teaching | 1.2.0 | 2025-09-21 | | io.github.toby/mirror-mcp | 0.0.4 | 2025-10-01 | | io.github.antuelle78/weather-mcp | 1.0.0 | 2025-10-09 ⚠️ | **Note on outlier:** `io.github.antuelle78/weather-mcp` was published on 2025-10-09, which is after the validation code was committed (2025-10-07) but before it was deployed (2025-10-14). This confirms the entries slipped through due to the gap between merge and deployment. ## Dry Run SQL To verify affected rows before running the migration: ```sql SELECT server_name, version, value->>'$schema' as schema_value FROM servers WHERE (server_name, version) IN ( ('io.github.OtherVibes/mcp-as-a-judge', '0.3.12'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.13'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.14'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.20'), ('io.github.Skills03/scrimba-teaching', '1.0.1'), ('io.github.Skills03/scrimba-teaching', '1.1.0'), ('io.github.Skills03/scrimba-teaching', '1.2.0'), ('io.github.antuelle78/weather-mcp', '1.0.0'), ('io.github.jkakar/cookwith-mcp', '1.0.0'), ('io.github.jkakar/cookwith-mcp', '1.0.1'), ('io.github.jkakar/cookwith-mcp', '1.0.2'), ('io.github.ruvnet/claude-flow', '2.0.0-alpha.104'), ('io.github.ruvnet/claude-flow', '2.0.0-alpha.105'), ('io.github.ruvnet/ruv-swarm', '1.0.18'), ('io.github.ruvnet/ruv-swarm', '1.0.19'), ('io.github.toby/mirror-mcp', '0.0.4'), ('travel.kismet/mcp-server', '0.0.0') ) AND (value->>'$schema' = '' OR value->>'$schema' IS NULL); ``` Result against prod: ```sql app=> SELECT server_name, version, value->>'$schema' as schema_value FROM servers WHERE (server_name, version) IN ( ('io.github.OtherVibes/mcp-as-a-judge', '0.3.12'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.13'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.14'), ('io.github.OtherVibes/mcp-as-a-judge', '0.3.20'), ('io.github.Skills03/scrimba-teaching', '1.0.1'), ('io.github.Skills03/scrimba-teaching', '1.1.0'), ('io.github.Skills03/scrimba-teaching', '1.2.0'), ('io.github.antuelle78/weather-mcp', '1.0.0'), ('io.github.jkakar/cookwith-mcp', '1.0.0'), ('io.github.jkakar/cookwith-mcp', '1.0.1'), ('io.github.jkakar/cookwith-mcp', '1.0.2'), ('io.github.ruvnet/claude-flow', '2.0.0-alpha.104'), ('io.github.ruvnet/claude-flow', '2.0.0-alpha.105'), ('io.github.ruvnet/ruv-swarm', '1.0.18'), ('io.github.ruvnet/ruv-swarm', '1.0.19'), ('io.github.toby/mirror-mcp', '0.0.4'), ('travel.kismet/mcp-server', '0.0.0') ) AND (value->>'$schema' = '' OR value->>'$schema' IS NULL); server_name | version | schema_value -------------------------------------+-----------------+-------------- io.github.toby/mirror-mcp | 0.0.4 | io.github.jkakar/cookwith-mcp | 1.0.0 | io.github.ruvnet/ruv-swarm | 1.0.19 | io.github.jkakar/cookwith-mcp | 1.0.1 | io.github.ruvnet/ruv-swarm | 1.0.18 | io.github.antuelle78/weather-mcp | 1.0.0 | io.github.jkakar/cookwith-mcp | 1.0.2 | io.github.OtherVibes/mcp-as-a-judge | 0.3.12 | travel.kismet/mcp-server | 0.0.0 | io.github.Skills03/scrimba-teaching | 1.0.1 | io.github.OtherVibes/mcp-as-a-judge | 0.3.20 | io.github.Skills03/scrimba-teaching | 1.2.0 | io.github.ruvnet/claude-flow | 2.0.0-alpha.105 | io.github.ruvnet/claude-flow | 2.0.0-alpha.104 | io.github.Skills03/scrimba-teaching | 1.1.0 | io.github.OtherVibes/mcp-as-a-judge | 0.3.14 | io.github.OtherVibes/mcp-as-a-judge | 0.3.13 | ``` --------- Co-authored-by: Claude <[email protected]>
1 parent 52e3744 commit 8f8fc89

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
-- Migration: Fix empty $schema fields in 17 specific server entries
2+
--
3+
-- This migration updates exactly 17 server entries that were published with
4+
-- empty $schema fields (""). These entries are explicitly listed below to
5+
-- ensure no other data is affected.
6+
--
7+
-- Issue: https://github.com/modelcontextprotocol/registry/issues/805
8+
--
9+
-- Affected entries (17 total):
10+
-- io.github.OtherVibes/mcp-as-a-judge: 0.3.12, 0.3.13, 0.3.14, 0.3.20
11+
-- io.github.Skills03/scrimba-teaching: 1.0.1, 1.1.0, 1.2.0
12+
-- io.github.antuelle78/weather-mcp: 1.0.0
13+
-- io.github.jkakar/cookwith-mcp: 1.0.0, 1.0.1, 1.0.2
14+
-- io.github.ruvnet/claude-flow: 2.0.0-alpha.104, 2.0.0-alpha.105
15+
-- io.github.ruvnet/ruv-swarm: 1.0.18, 1.0.19
16+
-- io.github.toby/mirror-mcp: 0.0.4
17+
-- travel.kismet/mcp-server: 0.0.0
18+
19+
BEGIN;
20+
21+
-- Define the exact list of affected entries
22+
-- Using a CTE to make the affected entries explicit and auditable
23+
WITH affected_entries AS (
24+
SELECT server_name, version FROM (VALUES
25+
-- io.github.OtherVibes/mcp-as-a-judge (4 versions)
26+
('io.github.OtherVibes/mcp-as-a-judge', '0.3.12'),
27+
('io.github.OtherVibes/mcp-as-a-judge', '0.3.13'),
28+
('io.github.OtherVibes/mcp-as-a-judge', '0.3.14'),
29+
('io.github.OtherVibes/mcp-as-a-judge', '0.3.20'),
30+
-- io.github.Skills03/scrimba-teaching (3 versions)
31+
('io.github.Skills03/scrimba-teaching', '1.0.1'),
32+
('io.github.Skills03/scrimba-teaching', '1.1.0'),
33+
('io.github.Skills03/scrimba-teaching', '1.2.0'),
34+
-- io.github.antuelle78/weather-mcp (1 version)
35+
('io.github.antuelle78/weather-mcp', '1.0.0'),
36+
-- io.github.jkakar/cookwith-mcp (3 versions)
37+
('io.github.jkakar/cookwith-mcp', '1.0.0'),
38+
('io.github.jkakar/cookwith-mcp', '1.0.1'),
39+
('io.github.jkakar/cookwith-mcp', '1.0.2'),
40+
-- io.github.ruvnet/claude-flow (2 versions)
41+
('io.github.ruvnet/claude-flow', '2.0.0-alpha.104'),
42+
('io.github.ruvnet/claude-flow', '2.0.0-alpha.105'),
43+
-- io.github.ruvnet/ruv-swarm (2 versions)
44+
('io.github.ruvnet/ruv-swarm', '1.0.18'),
45+
('io.github.ruvnet/ruv-swarm', '1.0.19'),
46+
-- io.github.toby/mirror-mcp (1 version)
47+
('io.github.toby/mirror-mcp', '0.0.4'),
48+
-- travel.kismet/mcp-server (1 version)
49+
('travel.kismet/mcp-server', '0.0.0')
50+
) AS t(server_name, version)
51+
)
52+
UPDATE servers s
53+
SET value = jsonb_set(
54+
s.value,
55+
'{$schema}',
56+
'"https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json"'::jsonb
57+
)
58+
FROM affected_entries ae
59+
WHERE s.server_name = ae.server_name
60+
AND s.version = ae.version
61+
AND (s.value->>'$schema' = '' OR s.value->>'$schema' IS NULL);
62+
63+
COMMIT;

0 commit comments

Comments
 (0)