Skip to content

Commit c387b48

Browse files
authored
Merge pull request #31 from mapbox/mcp-registry
Add to MCP registry
2 parents 51c2210 + cc90c61 commit c387b48

12 files changed

Lines changed: 400 additions & 43 deletions

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
## 0.4.0 (Unreleased)
1+
## 0.4.4
2+
3+
### Other
4+
5+
- Add to MCP registry
6+
7+
## 0.4.0
28

39
### Features Added
410

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"dxt_version": "0.1",
33
"name": "@mapbox/mcp-devkit-server",
44
"display_name": "Mapbox MCP DevKit Server",
5-
"version": "0.4.3",
5+
"version": "0.4.4",
66
"description": "Mapbox MCP devkit server",
77
"author": {
88
"name": "Mapbox, Inc."

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mapbox/mcp-devkit-server",
3-
"version": "0.4.3",
3+
"version": "0.4.4",
44
"description": "Mapbox MCP devkit server",
55
"main": "./dist/commonjs/index.js",
66
"module": "./dist/esm/index.js",

scripts/sync-manifest-version.cjs

Lines changed: 101 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,114 @@
1-
// Sync manifest.json version with package.json
1+
// Sync manifest.json and server.json versions with package.json
22
const fs = require('node:fs');
33
const path = require('node:path');
44

5-
function syncManifestVersion() {
5+
/**
6+
* Pure function that syncs versions across config objects
7+
* @param {Object} packageJson - The package.json object
8+
* @param {Object} manifestJson - The manifest.json object
9+
* @param {Object} serverJson - The server.json object
10+
* @returns {Object} Result containing updated configs and change information
11+
*/
12+
function syncVersionsCore(packageJson, manifestJson, serverJson) {
13+
const packageVersion = packageJson.version;
14+
const result = {
15+
packageVersion,
16+
updatedManifest: null,
17+
updatedServer: null,
18+
changes: {
19+
manifest: false,
20+
server: false,
21+
serverPackage: false
22+
},
23+
oldVersions: {
24+
manifest: manifestJson.version,
25+
server: serverJson.version,
26+
serverPackage: serverJson.packages?.[0]?.version
27+
}
28+
};
29+
30+
// Check and update manifest.json
31+
if (manifestJson.version !== packageVersion) {
32+
result.updatedManifest = { ...manifestJson, version: packageVersion };
33+
result.changes.manifest = true;
34+
}
35+
36+
// Check and update server.json
37+
const serverNeedsUpdate = serverJson.version !== packageVersion;
38+
const packageNeedsUpdate = serverJson.packages?.[0] &&
39+
serverJson.packages[0].version !== packageVersion;
40+
41+
if (serverNeedsUpdate || packageNeedsUpdate) {
42+
result.updatedServer = JSON.parse(JSON.stringify(serverJson)); // Deep clone
43+
44+
if (serverNeedsUpdate) {
45+
result.updatedServer.version = packageVersion;
46+
result.changes.server = true;
47+
}
48+
49+
if (packageNeedsUpdate) {
50+
result.updatedServer.packages[0].version = packageVersion;
51+
result.changes.serverPackage = true;
52+
}
53+
}
54+
55+
return result;
56+
}
57+
58+
function syncVersions() {
659
const packageJsonPath = path.join(process.cwd(), 'package.json');
760
const manifestJsonPath = path.join(process.cwd(), 'manifest.json');
61+
const serverJsonPath = path.join(process.cwd(), 'server.json');
862

9-
// Read package.json
63+
// Read files
1064
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
11-
const packageVersion = packageJson.version;
12-
13-
// Read manifest.json
1465
const manifestJson = JSON.parse(fs.readFileSync(manifestJsonPath, 'utf-8'));
15-
const manifestVersion = manifestJson.version;
66+
const serverJson = JSON.parse(fs.readFileSync(serverJsonPath, 'utf-8'));
67+
68+
// Sync versions using pure function
69+
const result = syncVersionsCore(packageJson, manifestJson, serverJson);
70+
71+
let updatedFiles = [];
1672

17-
// Check if versions are already in sync
18-
if (manifestVersion === packageVersion) {
19-
console.log(`✓ Versions already in sync: ${packageVersion}`);
20-
return;
73+
// Write updated manifest if needed
74+
if (result.updatedManifest) {
75+
fs.writeFileSync(
76+
manifestJsonPath,
77+
JSON.stringify(result.updatedManifest, null, 2) + '\n',
78+
'utf-8'
79+
);
80+
console.log(
81+
`✓ Updated manifest.json version: ${result.oldVersions.manifest}${result.packageVersion}`
82+
);
83+
updatedFiles.push('manifest.json');
2184
}
2285

23-
// Update manifest.json version
24-
manifestJson.version = packageVersion;
25-
fs.writeFileSync(
26-
manifestJsonPath,
27-
JSON.stringify(manifestJson, null, 2) + '\n',
28-
'utf-8'
29-
);
30-
31-
console.log(
32-
`✓ Updated manifest.json version: ${manifestVersion}${packageVersion}`
33-
);
86+
// Write updated server if needed
87+
if (result.updatedServer) {
88+
fs.writeFileSync(
89+
serverJsonPath,
90+
JSON.stringify(result.updatedServer, null, 2) + '\n',
91+
'utf-8'
92+
);
93+
console.log(
94+
`✓ Updated server.json versions: ${result.oldVersions.server}${result.packageVersion}`
95+
);
96+
updatedFiles.push('server.json');
97+
}
98+
99+
if (updatedFiles.length === 0) {
100+
console.log(`✓ All versions already in sync: ${result.packageVersion}`);
101+
} else {
102+
console.log(`✓ Synced ${updatedFiles.join(', ')} with package.json version: ${result.packageVersion}`);
103+
}
104+
}
105+
106+
// Export for testing
107+
if (typeof module !== 'undefined' && module.exports) {
108+
module.exports = { syncVersionsCore, syncVersions };
34109
}
35110

36-
syncManifestVersion();
111+
// Run if called directly
112+
if (require.main === module) {
113+
syncVersions();
114+
}

server.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json",
3+
"name": "io.github.mapbox/mcp-devkit-server",
4+
"description": "Provides AI assistants with direct access to Mapbox developer APIs and documentation.",
5+
"repository": {
6+
"url": "https://github.com/mapbox/mcp-devkit-server",
7+
"source": "github"
8+
},
9+
"version": "0.4.4",
10+
"packages": [
11+
{
12+
"registryType": "npm",
13+
"registryBaseUrl": "https://registry.npmjs.org",
14+
"runtimeHint": "npx",
15+
"version": "0.4.4",
16+
"identifier": "@mapbox/mcp-devkit-server",
17+
"transport": {
18+
"type": "stdio"
19+
},
20+
"environmentVariables": [
21+
{
22+
"description": "Your Mapbox access token. See docs for required scopes.",
23+
"format": "string",
24+
"isRequired": true,
25+
"isSecret": true,
26+
"name": "MAPBOX_ACCESS_TOKEN"
27+
}
28+
]
29+
}
30+
]
31+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"dxt_version": "0.1",
3+
"name": "test-manifest",
4+
"version": "1.0.0",
5+
"description": "Test manifest",
6+
"author": {
7+
"name": "Test Author"
8+
}
9+
}

test/project/fixtures/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"name": "test-package",
3+
"version": "2.0.0",
4+
"description": "Test package for sync script"
5+
}

test/project/fixtures/server.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"$schema": "test-schema",
3+
"name": "test-server",
4+
"version": "1.5.0",
5+
"packages": [
6+
{
7+
"identifier": "test-package",
8+
"version": "1.2.0",
9+
"registryType": "npm"
10+
}
11+
]
12+
}

0 commit comments

Comments
 (0)