Skip to content

Commit 1ab2d10

Browse files
authored
fix: .dxt extension included as release asset [DX-318] (#92)
* chore: build updated * chore: manifest added * chore: createcontenttype tool and createlocaletool updated to now build * chore: package_lock updated * chore: release job updated * chore: gh release upload * chore: ? * chore: test * chore: test2 * chore: test3 * chore: revert to non test branch * chore: readme updated * chore: small changes from Lisa * chore: icon added * chore: icon added * chore: manifest version updated * chore: test rollback * fix: build fix * chore: zod schema changed to protect types * chore: fieldSchema updated * chore: updateCT reverted
1 parent f3d118a commit 1ab2d10

File tree

10 files changed

+784
-8
lines changed

10 files changed

+784
-8
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,13 @@ jobs:
2222
- name: Run build
2323
run: npm run build
2424

25+
- name: Build DXT File
26+
run: npx dxt pack
27+
2528
- name: Save Build folders
2629
uses: actions/cache/save@v4
2730
with:
28-
path: build
31+
path: |
32+
build
33+
contentful-mcp-server.dxt
2934
key: build-cache-${{ github.run_id }}-${{ github.run_attempt }}

.github/workflows/release.yml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ jobs:
5959
- name: Restore the build folders
6060
uses: actions/cache/restore@v4
6161
with:
62-
path: build
62+
path: |
63+
build
64+
contentful-mcp-server.dxt
6365
key: build-cache-${{ github.run_id }}-${{ github.run_attempt }}
6466

6567
- uses: nrwl/nx-set-shas@dbe0650947e5f2c81f59190a38512cf49126fe6b # sets NX_BASE, NX_HEAD env vars
@@ -69,9 +71,22 @@ jobs:
6971
echo -e "//npm.pkg.github.com/:_authToken=${{ steps.vault.outputs.GITHUB_PACKAGES_WRITE_TOKEN }}\n@contentful:registry=https://npm.pkg.github.com" > ./.npmrc
7072
7173
- name: NX Release
72-
# Technically, this is an unnecessary double check since the release job only runs on the main branch, see main.yml
73-
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
7474
run: |
7575
npx nx release --yes
7676
env:
7777
GITHUB_TOKEN: ${{ steps.vault.outputs.GITHUB_TOKEN }}
78+
79+
- name: Get latest release tag
80+
id: get-tag
81+
run: |
82+
TAG=$(gh api repos/${{ github.repository }}/releases/latest --jq .tag_name)
83+
echo "tag=$TAG" >> $GITHUB_OUTPUT
84+
env:
85+
GITHUB_TOKEN: ${{ steps.vault.outputs.GITHUB_TOKEN }}
86+
87+
- name: Upload DXT file to release
88+
run: |
89+
gh release upload ${{ steps.get-tag.outputs.tag }} \
90+
./contentful-mcp-server.dxt
91+
env:
92+
GITHUB_TOKEN: ${{ steps.vault.outputs.GITHUB_TOKEN }}

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,6 @@ out/
2323
.cursor/
2424

2525
# ignore NX cache/configuration
26-
.nx/
26+
.nx/
27+
28+
contentful-mcp-server.dxt

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ This MCP server provides a comprehensive set of tools for content management, al
4848

4949
_Note: This requires [Cursor](https://cursor.com/) to be installed. If the link doesn't work, try the manual installation below._
5050

51+
**Claude Desktop:**
52+
53+
Download the .dxt configuration file [here](https://github.com/contentful/contentful-mcp-server/releases) from the latest release and import it into Claude Desktop to automatically configure the MCP server with your environment variables.
54+
5155
#### Install from source
5256

5357
```bash

icon.png

11.7 KB
Loading

manifest.json

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
{
2+
"dxt_version": "0.1",
3+
"name": "@contentful/mcp-server",
4+
"version": "1.0.5",
5+
"description": "MCP (Model Context Protocol) server for the Contentful Management API",
6+
"author": {
7+
"name": "Contentful"
8+
},
9+
"repository": {
10+
"type": "git",
11+
"url": "https://github.com/contentful/contentful-mcp-server"
12+
},
13+
"homepage": "https://github.com/contentful/contentful-mcp-server",
14+
"support": "https://github.com/contentful/contentful-mcp-server/issues",
15+
"icon": "icon.png",
16+
"server": {
17+
"type": "node",
18+
"entry_point": "build/index.js",
19+
"mcp_config": {
20+
"command": "node",
21+
"args": ["${__dirname}/build/index.js"],
22+
"env": {
23+
"CONTENTFUL_HOST": "${user_config.CONTENTFUL_HOST}",
24+
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${user_config.CMA_TOKEN}",
25+
"SPACE_ID": "${user_config.SPACE_ID}",
26+
"ENVIRONMENT_ID": "${user_config.ENVIRONMENT_ID}"
27+
}
28+
}
29+
},
30+
"tools": [
31+
{
32+
"name": "get_initial_context",
33+
"description": "Initialize connection and get usage instructions"
34+
},
35+
{
36+
"name": "list_content_types",
37+
"description": "List all content types"
38+
},
39+
{
40+
"name": "get_content_type",
41+
"description": "Get detailed content type information"
42+
},
43+
{
44+
"name": "create_content_type",
45+
"description": "Create new content types"
46+
},
47+
{
48+
"name": "update_content_type",
49+
"description": "Modify existing content types"
50+
},
51+
{
52+
"name": "publish_content_type",
53+
"description": "Publish content type changes"
54+
},
55+
{
56+
"name": "unpublish_content_type",
57+
"description": "Unpublish content types"
58+
},
59+
{
60+
"name": "delete_content_type",
61+
"description": "Remove content types"
62+
},
63+
{
64+
"name": "search_entries",
65+
"description": "Search and filter entries"
66+
},
67+
{
68+
"name": "get_entry",
69+
"description": "Retrieve specific entries"
70+
},
71+
{
72+
"name": "create_entry",
73+
"description": "Create new content entries"
74+
},
75+
{
76+
"name": "update_entry",
77+
"description": "Modify existing entries"
78+
},
79+
{
80+
"name": "publish_entry",
81+
"description": "Publish entries (single or bulk)"
82+
},
83+
{
84+
"name": "unpublish_entry",
85+
"description": "Unpublish entries (single or bulk)"
86+
},
87+
{
88+
"name": "delete_entry",
89+
"description": "Remove entries"
90+
},
91+
{
92+
"name": "upload_asset",
93+
"description": "Upload new assets"
94+
},
95+
{
96+
"name": "list_assets",
97+
"description": "List and browse assets"
98+
},
99+
{
100+
"name": "get_asset",
101+
"description": "Retrieve specific assets"
102+
},
103+
{
104+
"name": "update_asset",
105+
"description": "Modify asset metadata"
106+
},
107+
{
108+
"name": "publish_asset",
109+
"description": "Publish assets (single or bulk)"
110+
},
111+
{
112+
"name": "unpublish_asset",
113+
"description": "Unpublish assets (single or bulk)"
114+
},
115+
{
116+
"name": "delete_asset",
117+
"description": "Remove assets"
118+
},
119+
{
120+
"name": "list_spaces",
121+
"description": "List available spaces"
122+
},
123+
{
124+
"name": "get_space",
125+
"description": "Get space details"
126+
},
127+
{
128+
"name": "list_environments",
129+
"description": "List environments"
130+
},
131+
{
132+
"name": "create_environment",
133+
"description": "Create new environments"
134+
},
135+
{
136+
"name": "delete_environment",
137+
"description": "Remove environments"
138+
},
139+
{
140+
"name": "list_tags",
141+
"description": "List all tags"
142+
},
143+
{
144+
"name": "create_tag",
145+
"description": "Create new tags"
146+
},
147+
{
148+
"name": "create_ai_action",
149+
"description": "Create custom AI-powered workflows"
150+
},
151+
{
152+
"name": "invoke_ai_action",
153+
"description": "Invoke an AI action with variables"
154+
},
155+
{
156+
"name": "get_ai_action_invocation",
157+
"description": "Get AI action invocation details"
158+
},
159+
{
160+
"name": "get_ai_action",
161+
"description": "Retrieve AI action details and configuration"
162+
},
163+
{
164+
"name": "list_ai_actions",
165+
"description": "List AI actions in a space"
166+
},
167+
{
168+
"name": "update_ai_action",
169+
"description": "Update existing AI actions"
170+
},
171+
{
172+
"name": "publish_ai_action",
173+
"description": "Publish AI actions for use"
174+
},
175+
{
176+
"name": "unpublish_ai_action",
177+
"description": "Unpublish AI actions"
178+
},
179+
{
180+
"name": "delete_ai_action",
181+
"description": "Remove AI actions"
182+
},
183+
{
184+
"name": "get_locale",
185+
"description": "Retrieve a specific locale from your Contentful environment"
186+
},
187+
{
188+
"name": "create_locale",
189+
"description": "Create a new locale in your Contentful environment"
190+
},
191+
{
192+
"name": "list_locales",
193+
"description": "List all locales in your Contentful environment"
194+
},
195+
{
196+
"name": "update_locale",
197+
"description": "Update an existing locale in your Contentful environment"
198+
},
199+
{
200+
"name": "delete_locale",
201+
"description": "Delete a specific locale from your Contentful environment"
202+
}
203+
],
204+
"prompts": [],
205+
"tools_generated": false,
206+
"prompts_generated": false,
207+
"compatibility": {},
208+
"user_config": {
209+
"CMA_TOKEN": {
210+
"type": "string",
211+
"title": "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN",
212+
"description": "Contentful Management Access Token",
213+
"required": true,
214+
"sensitive": true
215+
},
216+
"SPACE_ID": {
217+
"type": "string",
218+
"title": "SPACE_ID",
219+
"description": "Contentful Space ID",
220+
"required": true
221+
},
222+
"ENVIRONMENT_ID": {
223+
"type": "string",
224+
"title": "ENVIRONMENT_ID",
225+
"description": "Contentful Environment ID",
226+
"required": false,
227+
"default": "master"
228+
},
229+
"CONTENTFUL_HOST": {
230+
"type": "string",
231+
"title": "CONTENTFUL_HOST",
232+
"description": "Contentful Host",
233+
"required": false,
234+
"default": "api.contentful.com"
235+
}
236+
},
237+
"license": "MIT"
238+
}

0 commit comments

Comments
 (0)