Skip to content

feat(issue): Link external issues #67

feat(issue): Link external issues

feat(issue): Link external issues #67

name: MCP Server Package
on:
push:
branches: [main]
pull_request:
paths:
- ".github/workflows/mcp-server-package.yml"
- "packages/mcp-core/**"
- "packages/mcp-server/**"
- "packages/mcp-server-tsconfig/**"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "turbo.json"
permissions:
contents: read
jobs:
package-consumer:
name: Clean Consumer Typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
# pnpm/action-setup@v4
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
name: Install pnpm
with:
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build package dependencies
run: pnpm --filter @sentry/mcp-core build
- name: Build stdio package
run: pnpm --filter @sentry/mcp-server build
- name: Pack stdio package
run: pnpm --dir packages/mcp-server pack --pack-destination "$RUNNER_TEMP"
- name: Typecheck clean consumer
shell: bash
run: |
set -euo pipefail
consumer="$RUNNER_TEMP/mcp-server-consumer"
mkdir -p "$consumer"
cd "$consumer"
export npm_config_cache="$RUNNER_TEMP/npm-cache"
cat > package.json <<'EOF'
{
"private": true,
"type": "module"
}
EOF
npm install --ignore-scripts --no-audit --no-fund "$RUNNER_TEMP"/sentry-mcp-server-*.tgz typescript@^5.8.3 @types/node@^22
cat > tsconfig.json <<'EOF'
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
"noEmit": true,
"strict": true,
"target": "ES2022"
},
"include": ["index.ts"]
}
EOF
cat > index.ts <<'EOF'
import {
startStdio,
type StdioServerContext,
} from "@sentry/mcp-server/transports/stdio";
declare const server: Parameters<typeof startStdio>[0];
const telemetryContext: StdioServerContext = {
agentMode: false,
experimentalMode: false,
mcpUrl: "https://example.com/mcp",
sentryHost: "sentry.io",
};
void startStdio(server, telemetryContext);
void startStdio(server, {
accessToken: "token",
constraints: {},
sentryHost: "sentry.io",
});
EOF
npx tsc --noEmit