Skip to content

Commit 01c654c

Browse files
authored
Add DXT package build workflow and update manifest for GitHub Projects MCP (#5)
1 parent 2dc2f60 commit 01c654c

File tree

5 files changed

+184
-61
lines changed

5 files changed

+184
-61
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
name: Build DXT Package
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Version for the DXT package'
8+
required: false
9+
default: 'latest'
10+
type: string
11+
attach_to_release:
12+
description: 'Attach DXT to latest release'
13+
required: false
14+
default: false
15+
type: boolean
16+
17+
permissions:
18+
contents: write # Required for attaching to releases
19+
20+
jobs:
21+
build-dxt:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
26+
- name: Set up Node.js for DXT CLI
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: '20'
30+
31+
- name: Install DXT CLI
32+
run: npm install -g @anthropic-ai/dxt
33+
34+
- name: Determine version
35+
id: version
36+
run: |
37+
if [ "${{ github.event.inputs.version }}" = "latest" ]; then
38+
# Get latest git tag, fallback to commit SHA
39+
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "dev-$(git rev-parse --short HEAD)")
40+
else
41+
VERSION="${{ github.event.inputs.version }}"
42+
fi
43+
echo "version=$VERSION" >> $GITHUB_OUTPUT
44+
echo "Using version: $VERSION"
45+
46+
- name: Create DXT manifest
47+
run: |
48+
cat > manifest.json << 'EOF'
49+
{
50+
"dxt_version": "0.1.1",
51+
"name": "github-projects-mcp",
52+
"version": "${{ steps.version.outputs.version }}",
53+
"description": "A Model Context Protocol server for GitHub Projects",
54+
"long_description": "This package provides a Model Context Protocol (MCP) server for managing GitHub Projects, allowing users to interact with GitHub Projects through a standardized API.",
55+
"author": {
56+
"name": "Red Duck Labs, LLC",
57+
"email": "[email protected]",
58+
"url": "https://github.com/redducklabs"
59+
},
60+
"server": {
61+
"type": "python",
62+
"entry_point": "github_projects_mcp/server.py",
63+
"mcp_config": {
64+
"command": "python",
65+
"args": ["-m", "github_projects_mcp.server"],
66+
"env": {
67+
"GITHUB_TOKEN": "${user_config.GITHUB_TOKEN}",
68+
"API_MAX_RETRIES": "${user_config.API_MAX_RETRIES}",
69+
"API_RETRY_DELAY": "${user_config.API_RETRY_DELAY}"
70+
}
71+
}
72+
},
73+
"user_config": {
74+
"GITHUB_TOKEN": {
75+
"title": "GitHub Token",
76+
"type": "string",
77+
"description": "GitHub Personal Access Token with project permissions",
78+
"sensitive": true,
79+
"required": true
80+
},
81+
"API_MAX_RETRIES": {
82+
"title": "Max Retries",
83+
"type": "string",
84+
"description": "Maximum retries for rate-limited requests",
85+
"default": "3"
86+
},
87+
"API_RETRY_DELAY": {
88+
"title": "Retry Delay",
89+
"type": "string",
90+
"description": "Delay in seconds between retries",
91+
"default": "60"
92+
}
93+
}
94+
}
95+
EOF
96+
97+
- name: Build DXT package
98+
run: dxt pack
99+
100+
- name: List created DXT files
101+
run: ls -la *.dxt
102+
103+
- name: Upload DXT package
104+
uses: actions/upload-artifact@v4
105+
with:
106+
name: dxt-package-${{ steps.version.outputs.version }}
107+
path: "*.dxt"
108+
retention-days: 30
109+
110+
- name: Attach DXT to latest release
111+
if: github.event.inputs.attach_to_release == 'true'
112+
uses: softprops/action-gh-release@v1
113+
with:
114+
tag_name: ${{ steps.version.outputs.version }}
115+
files: "*.dxt"
116+
make_latest: false
117+
118+
- name: Summary
119+
run: |
120+
echo "## DXT Package Built Successfully! 🎉" >> $GITHUB_STEP_SUMMARY
121+
echo "" >> $GITHUB_STEP_SUMMARY
122+
echo "**Version:** ${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
123+
echo "**Package Name:** github-projects-mcp@${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
124+
echo "" >> $GITHUB_STEP_SUMMARY
125+
echo "### Files Created:" >> $GITHUB_STEP_SUMMARY
126+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
127+
ls -la *.dxt >> $GITHUB_STEP_SUMMARY
128+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
129+
echo "" >> $GITHUB_STEP_SUMMARY
130+
if [ "${{ github.event.inputs.attach_to_release }}" = "true" ]; then
131+
echo "✅ **DXT package attached to release ${{ steps.version.outputs.version }}**" >> $GITHUB_STEP_SUMMARY
132+
else
133+
echo "📦 **DXT package available as workflow artifact**" >> $GITHUB_STEP_SUMMARY
134+
fi

.github/workflows/publish-mcp-package.yml

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -29,80 +29,19 @@ jobs:
2929
with:
3030
python-version: '3.10'
3131

32-
- name: Set up Node.js for DXT CLI
33-
uses: actions/setup-node@v4
34-
with:
35-
node-version: '20'
36-
3732
- name: Install build dependencies
3833
run: |
3934
python -m pip install --upgrade pip
4035
python -m pip install build
41-
npm install -g @anthropic-ai/dxt
4236
4337
- name: Build Python package
4438
run: python -m build
4539

46-
- name: Create DXT manifest
47-
run: |
48-
cat > manifest.json << 'EOF'
49-
{
50-
"dxt_version": "0.1.1",
51-
"name": "github-projects-mcp",
52-
"version": "${{ github.ref_name }}",
53-
"description": "A Model Context Protocol server for GitHub Projects",
54-
"long_description": "This package provides a Model Context Protocol (MCP) server for managing GitHub Projects, allowing users to interact with GitHub Projects through a standardized API.",
55-
"author": {
56-
"name": "Red Duck Labs, LLC",
57-
"email": "[email protected]",
58-
"url": "https://github.com/redducklabs"
59-
},
60-
"server": {
61-
"type": "python",
62-
"entry_point": "github_projects_mcp/server.py",
63-
"mcp_config": {
64-
"command": "python",
65-
"args": ["-m", "github_projects_mcp.server"]
66-
}
67-
},
68-
"user_config": {
69-
"GITHUB_TOKEN": {
70-
"title": "GitHub Token",
71-
"type": "string",
72-
"description": "GitHub Personal Access Token with project permissions",
73-
"sensitive": true,
74-
"required": true
75-
},
76-
"API_MAX_RETRIES": {
77-
"title": "Max Retries",
78-
"type": "string",
79-
"description": "Maximum retries for rate-limited requests",
80-
"default": "3"
81-
},
82-
"API_RETRY_DELAY": {
83-
"title": "Retry Delay",
84-
"type": "string",
85-
"description": "Delay in seconds between retries",
86-
"default": "60"
87-
}
88-
}
89-
}
90-
EOF
91-
92-
- name: Build DXT package
93-
run: dxt pack
94-
9540
- name: Upload build artifacts
9641
uses: actions/upload-artifact@v4
9742
with:
9843
name: dist
9944
path: dist/
100-
101-
- name: Upload DXT package
102-
uses: actions/upload-artifact@v4
103-
with:
104-
name: dxt-package
105-
path: "*.dxt"
10645

10746
publish:
10847
needs: build

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# GitHub Projects MCP Server
22

3+
[![GitHub Release](https://img.shields.io/github/v/release/redducklabs/github-projects-mcp?style=for-the-badge&color=blue)](https://github.com/redducklabs/github-projects-mcp/releases)
4+
[![Download DXT](https://img.shields.io/badge/Download-DXT%20Package-purple?style=for-the-badge&logo=download)](https://github.com/redducklabs/github-projects-mcp/releases/latest/download/github-projects-mcp.dxt)
5+
[![PyPI Version](https://img.shields.io/pypi/v/github-projects-mcp?style=for-the-badge&color=green)](https://pypi.org/project/github-projects-mcp/)
6+
37
A Model Context Protocol (MCP) server that provides tools for interacting with GitHub Projects using GraphQL. This server exposes GitHub Projects functionality through standardized MCP tools that can be used by LLMs and other MCP clients.
48

59
## Features

github-projects-mcp.dxt

54.3 MB
Binary file not shown.

manifest.json

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"dxt_version": "0.1.1",
3+
"name": "github-projects-mcp",
4+
"version": "1.0.0",
5+
"description": "A Model Context Protocol server for GitHub Projects",
6+
"long_description": "This package provides a Model Context Protocol (MCP) server for managing GitHub Projects, allowing users to interact with GitHub Projects through a standardized API.",
7+
"author": {
8+
"name": "Red Duck Labs, LLC",
9+
"email": "[email protected]",
10+
"url": "https://github.com/redducklabs"
11+
},
12+
"server": {
13+
"type": "python",
14+
"entry_point": "github_projects_mcp/server.py",
15+
"mcp_config": {
16+
"command": "python",
17+
"args": ["-m", "github_projects_mcp.server"],
18+
"env": {
19+
"GITHUB_TOKEN": "${user_config.GITHUB_TOKEN}",
20+
"API_MAX_RETRIES": "${user_config.API_MAX_RETRIES}",
21+
"API_RETRY_DELAY": "${user_config.API_RETRY_DELAY}"
22+
}
23+
}
24+
},
25+
"user_config": {
26+
"GITHUB_TOKEN": {
27+
"title": "GitHub Token",
28+
"type": "string",
29+
"description": "GitHub Personal Access Token with project permissions",
30+
"sensitive": true,
31+
"required": true
32+
},
33+
"API_MAX_RETRIES": {
34+
"title": "Max Retries",
35+
"type": "string",
36+
"description": "Maximum retries for rate-limited requests",
37+
"default": "3"
38+
},
39+
"API_RETRY_DELAY": {
40+
"title": "Retry Delay",
41+
"type": "string",
42+
"description": "Delay in seconds between retries",
43+
"default": "60"
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)