Skip to content

Commit 61fa1ba

Browse files
committed
Initial release: Forge MCP Server v1.0.0
0 parents  commit 61fa1ba

31 files changed

Lines changed: 5233 additions & 0 deletions

.github/workflows/ci.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
typecheck:
15+
name: Type Check
16+
runs-on: ubuntu-latest
17+
timeout-minutes: 10
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: '20'
25+
26+
- name: Install dependencies
27+
run: npm ci
28+
29+
- name: Run type check
30+
run: npm run typecheck
31+
32+
build:
33+
name: Build
34+
runs-on: ubuntu-latest
35+
timeout-minutes: 10
36+
needs: [typecheck]
37+
steps:
38+
- uses: actions/checkout@v4
39+
40+
- name: Setup Node.js
41+
uses: actions/setup-node@v4
42+
with:
43+
node-version: '20'
44+
45+
- name: Install dependencies
46+
run: npm ci
47+
48+
- name: Build
49+
run: npm run build
50+
51+
- name: Verify dist output
52+
run: |
53+
test -f dist/index.js || (echo "dist/index.js not found" && exit 1)
54+
echo "Build output verified"
55+
56+
ci-success:
57+
name: CI Success
58+
runs-on: ubuntu-latest
59+
needs: [typecheck, build]
60+
if: always()
61+
steps:
62+
- name: Check all jobs passed
63+
run: |
64+
if [[ "${{ needs.typecheck.result }}" != "success" ]] || \
65+
[[ "${{ needs.build.result }}" != "success" ]]; then
66+
echo "One or more jobs failed"
67+
exit 1
68+
fi
69+
echo "All CI checks passed!"

.github/workflows/release.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Release
2+
3+
# Tag patterns:
4+
# v1.0.0 = Production release (npm publish)
5+
# tv1.0.0 = Test release (NO npm publish)
6+
7+
on:
8+
push:
9+
tags:
10+
- 'v*'
11+
- 'tv*'
12+
workflow_dispatch:
13+
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.ref }}
16+
cancel-in-progress: true
17+
18+
jobs:
19+
release:
20+
name: Build & Publish
21+
runs-on: ubuntu-latest
22+
timeout-minutes: 15
23+
permissions:
24+
contents: write
25+
id-token: write
26+
27+
steps:
28+
- name: Checkout
29+
uses: actions/checkout@v4
30+
31+
- name: Setup Node.js
32+
uses: actions/setup-node@v4
33+
with:
34+
node-version: '20'
35+
registry-url: 'https://registry.npmjs.org'
36+
37+
- name: Install dependencies
38+
run: npm ci
39+
40+
- name: Type check
41+
run: npm run typecheck
42+
43+
- name: Build
44+
run: npm run build
45+
46+
- name: Verify build output
47+
run: |
48+
test -f dist/index.js || (echo "dist/index.js not found" && exit 1)
49+
echo "Build verified"
50+
51+
- name: Update version from tag
52+
run: |
53+
VERSION=${{ github.ref_name }}
54+
VERSION=${VERSION#v}
55+
VERSION=${VERSION#tv}
56+
npm version $VERSION --no-git-tag-version --allow-same-version
57+
58+
- name: Create GitHub Release
59+
uses: softprops/action-gh-release@v2
60+
with:
61+
generate_release_notes: true
62+
draft: false
63+
prerelease: ${{ contains(github.ref_name, '-') || startsWith(github.ref_name, 'tv') }}
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
66+
67+
- name: Publish to npm
68+
if: ${{ startsWith(github.ref_name, 'v') && !startsWith(github.ref_name, 'tv') }}
69+
run: npm publish --access public
70+
env:
71+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules/
2+
dist/
3+
*.map
4+
tmpclaude-*

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 RightNow AI
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)