@purplesquirrel/volcengine-mcp 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.editorconfig ADDED
@@ -0,0 +1,21 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
13
+
14
+ [*.{json,yml,yaml}]
15
+ indent_size = 2
16
+
17
+ [*.py]
18
+ indent_size = 4
19
+
20
+ [Makefile]
21
+ indent_style = tab
@@ -0,0 +1,11 @@
1
+ # Code Owners
2
+ # These owners will be automatically requested for review on PRs
3
+
4
+ # Default owner for everything
5
+ * @PurpleSquirrelMedia
6
+
7
+ # Workflows and CI
8
+ .github/ @PurpleSquirrelMedia
9
+
10
+ # Source code
11
+ src/ @PurpleSquirrelMedia
@@ -0,0 +1,5 @@
1
+ github: PurpleSquirrelMedia
2
+ ko_fi: purplesquirrel
3
+ buy_me_a_coffee: purplesquirrel
4
+ custom:
5
+ - https://purplesquirrelmedia.github.io/.github/pricing.html
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a bug or issue
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Description
10
+ A clear description of the bug.
11
+
12
+ ## Steps to Reproduce
13
+ 1.
14
+ 2.
15
+ 3.
16
+
17
+ ## Expected Behavior
18
+ What you expected to happen.
19
+
20
+ ## Actual Behavior
21
+ What actually happened.
22
+
23
+ ## Environment
24
+ - OS:
25
+ - Node.js version:
26
+ - Package version:
27
+
28
+ ## Logs/Screenshots
29
+ If applicable, add logs or screenshots.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new feature
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Description
10
+ A clear description of the feature you'd like.
11
+
12
+ ## Use Case
13
+ Why is this feature needed? What problem does it solve?
14
+
15
+ ## Proposed Solution
16
+ How do you think this should work?
17
+
18
+ ## Alternatives Considered
19
+ Any other approaches you've thought about.
20
+
21
+ ## Additional Context
22
+ Any other relevant information.
@@ -0,0 +1,17 @@
1
+ ## Description
2
+ Brief description of the changes.
3
+
4
+ ## Type of Change
5
+ - [ ] Bug fix
6
+ - [ ] New feature
7
+ - [ ] Breaking change
8
+ - [ ] Documentation update
9
+
10
+ ## Testing
11
+ How was this tested?
12
+
13
+ ## Checklist
14
+ - [ ] Code follows project style
15
+ - [ ] Self-reviewed the code
16
+ - [ ] Added/updated tests if needed
17
+ - [ ] Updated documentation if needed
@@ -5,8 +5,6 @@ updates:
5
5
  schedule:
6
6
  interval: "weekly"
7
7
  open-pull-requests-limit: 10
8
- labels:
9
- - "dependencies"
10
8
  commit-message:
11
9
  prefix: "chore(deps)"
12
10
 
@@ -14,8 +12,5 @@ updates:
14
12
  directory: "/"
15
13
  schedule:
16
14
  interval: "weekly"
17
- labels:
18
- - "dependencies"
19
- - "github-actions"
20
15
  commit-message:
21
16
  prefix: "chore(ci)"
@@ -0,0 +1,33 @@
1
+ dependencies:
2
+ - changed-files:
3
+ - any-glob-to-any-file:
4
+ - 'package.json'
5
+ - 'package-lock.json'
6
+ - 'requirements.txt'
7
+ - 'pyproject.toml'
8
+
9
+ documentation:
10
+ - changed-files:
11
+ - any-glob-to-any-file:
12
+ - '**/*.md'
13
+ - 'docs/**'
14
+
15
+ ci:
16
+ - changed-files:
17
+ - any-glob-to-any-file:
18
+ - '.github/**'
19
+
20
+ source:
21
+ - changed-files:
22
+ - any-glob-to-any-file:
23
+ - 'src/**'
24
+ - 'index.js'
25
+ - 'index.ts'
26
+
27
+ tests:
28
+ - changed-files:
29
+ - any-glob-to-any-file:
30
+ - 'test/**'
31
+ - 'tests/**'
32
+ - '**/*.test.js'
33
+ - '**/*.test.ts'
@@ -0,0 +1,38 @@
1
+ name-template: 'v$RESOLVED_VERSION'
2
+ tag-template: 'v$RESOLVED_VERSION'
3
+ categories:
4
+ - title: '🚀 Features'
5
+ labels:
6
+ - 'feature'
7
+ - 'enhancement'
8
+ - title: '🐛 Bug Fixes'
9
+ labels:
10
+ - 'fix'
11
+ - 'bugfix'
12
+ - 'bug'
13
+ - title: '🧰 Maintenance'
14
+ labels:
15
+ - 'chore'
16
+ - 'dependencies'
17
+ change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
18
+ change-title-escapes: '\<*_&'
19
+ version-resolver:
20
+ major:
21
+ labels:
22
+ - 'major'
23
+ minor:
24
+ labels:
25
+ - 'minor'
26
+ - 'feature'
27
+ patch:
28
+ labels:
29
+ - 'patch'
30
+ - 'fix'
31
+ - 'bugfix'
32
+ default: patch
33
+ template: |
34
+ ## Changes
35
+
36
+ $CHANGES
37
+
38
+ **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
@@ -0,0 +1,40 @@
1
+ name: CodeQL Security Scan
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ schedule:
9
+ - cron: '0 6 * * 1' # Weekly on Monday
10
+
11
+ jobs:
12
+ analyze:
13
+ name: Analyze
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ language: ['javascript']
24
+
25
+ steps:
26
+ - name: Checkout repository
27
+ uses: actions/checkout@v4
28
+
29
+ - name: Initialize CodeQL
30
+ uses: github/codeql-action/init@v3
31
+ with:
32
+ languages: ${{ matrix.language }}
33
+
34
+ - name: Autobuild
35
+ uses: github/codeql-action/autobuild@v3
36
+
37
+ - name: Perform CodeQL Analysis
38
+ uses: github/codeql-action/analyze@v3
39
+ with:
40
+ category: "/language:${{ matrix.language }}"
@@ -0,0 +1,46 @@
1
+ name: Docker
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ push:
7
+ branches: [main]
8
+
9
+ env:
10
+ REGISTRY: ghcr.io
11
+
12
+ jobs:
13
+ build-and-push:
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ contents: read
17
+ packages: write
18
+
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Log in to Container Registry
24
+ uses: docker/login-action@v3
25
+ with:
26
+ registry: ${{ env.REGISTRY }}
27
+ username: ${{ github.actor }}
28
+ password: ${{ secrets.GITHUB_TOKEN }}
29
+
30
+ - name: Extract metadata
31
+ id: meta
32
+ uses: docker/metadata-action@v5
33
+ with:
34
+ images: ${{ env.REGISTRY }}/${{ github.repository }}
35
+ tags: |
36
+ type=ref,event=branch
37
+ type=semver,pattern={{version}}
38
+ type=semver,pattern={{major}}.{{minor}}
39
+
40
+ - name: Build and push
41
+ uses: docker/build-push-action@v5
42
+ with:
43
+ context: .
44
+ push: true
45
+ tags: ${{ steps.meta.outputs.tags }}
46
+ labels: ${{ steps.meta.outputs.labels }}
@@ -0,0 +1,16 @@
1
+ name: Label PRs
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+
7
+ jobs:
8
+ label:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ pull-requests: write
13
+ steps:
14
+ - uses: actions/labeler@v5
15
+ with:
16
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,38 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ contents: read
12
+ id-token: write
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Setup Node.js
18
+ uses: actions/setup-node@v4
19
+ with:
20
+ node-version: '20.x'
21
+ registry-url: 'https://registry.npmjs.org'
22
+ cache: 'npm'
23
+
24
+ - name: Install dependencies
25
+ run: npm ci
26
+
27
+ - name: Build
28
+ run: npm run build --if-present
29
+
30
+ - name: Update version from release tag
31
+ run: |
32
+ VERSION=${GITHUB_REF#refs/tags/v}
33
+ npm version $VERSION --no-git-tag-version --allow-same-version
34
+
35
+ - name: Publish to npm with provenance
36
+ run: npm publish --access public --provenance
37
+ env:
38
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -0,0 +1,19 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ types: [opened, reopened, synchronize]
8
+
9
+ permissions:
10
+ contents: read
11
+ pull-requests: write
12
+
13
+ jobs:
14
+ update_release_draft:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: release-drafter/release-drafter@v6
18
+ env:
19
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,35 @@
1
+ name: Scorecard analysis
2
+ on:
3
+ branch_protection_rule:
4
+ schedule:
5
+ - cron: '0 7 * * 1'
6
+ push:
7
+ branches: [main]
8
+
9
+ permissions: read-all
10
+
11
+ jobs:
12
+ analysis:
13
+ name: Scorecard analysis
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ security-events: write
17
+ id-token: write
18
+
19
+ steps:
20
+ - name: Checkout code
21
+ uses: actions/checkout@v4
22
+ with:
23
+ persist-credentials: false
24
+
25
+ - name: Run analysis
26
+ uses: ossf/scorecard-action@v2.4.0
27
+ with:
28
+ results_file: results.sarif
29
+ results_format: sarif
30
+ publish_results: true
31
+
32
+ - name: Upload to code-scanning
33
+ uses: github/codeql-action/upload-sarif@v3
34
+ with:
35
+ sarif_file: results.sarif
@@ -0,0 +1,4 @@
1
+ {
2
+ "*.{js,ts}": ["eslint --fix", "prettier --write"],
3
+ "*.{json,md,yml,yaml}": ["prettier --write"]
4
+ }
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 20
package/.prettierrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "semi": true,
3
+ "singleQuote": true,
4
+ "tabWidth": 2,
5
+ "trailingComma": "es5",
6
+ "printWidth": 100
7
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,26 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.1] - 2026-01-06
9
+
10
+ ### Fixed
11
+ - Fixed npm package execution (added bin entry and compiled TypeScript)
12
+
13
+ ### Added
14
+ - CI/CD workflows for automated testing and publishing
15
+ - CodeQL security scanning
16
+ - OpenSSF Scorecard analysis
17
+ - Dependabot configuration
18
+ - Issue and PR templates
19
+ - Security policy and code of conduct
20
+
21
+ ## [1.0.0] - 2026-01-05
22
+
23
+ ### Added
24
+ - Initial release
25
+ - Full MCP server implementation
26
+ - MIT license
@@ -0,0 +1,26 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We pledge to make participation in our community a harassment-free experience for everyone.
6
+
7
+ ## Our Standards
8
+
9
+ **Positive behaviors:**
10
+ - Using welcoming and inclusive language
11
+ - Being respectful of differing viewpoints
12
+ - Gracefully accepting constructive criticism
13
+ - Focusing on what is best for the community
14
+
15
+ **Unacceptable behaviors:**
16
+ - Harassment, trolling, or personal attacks
17
+ - Publishing others' private information
18
+ - Other conduct which could reasonably be considered inappropriate
19
+
20
+ ## Enforcement
21
+
22
+ Instances of abusive behavior may be reported to the project maintainers. All complaints will be reviewed and investigated promptly and fairly.
23
+
24
+ ## Attribution
25
+
26
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
@@ -0,0 +1,62 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in contributing! We welcome contributions from the community.
4
+
5
+ ## Getting Started
6
+
7
+ 1. Fork the repository
8
+ 2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/REPO_NAME.git`
9
+ 3. Create a branch: `git checkout -b feature/your-feature-name`
10
+ 4. Make your changes
11
+ 5. Test your changes
12
+ 6. Commit: `git commit -m "Add your feature"`
13
+ 7. Push: `git push origin feature/your-feature-name`
14
+ 8. Open a Pull Request
15
+
16
+ ## Development Setup
17
+
18
+ ```bash
19
+ # Install dependencies
20
+ npm install
21
+
22
+ # Run in development mode
23
+ npm run dev
24
+
25
+ # Run tests
26
+ npm test
27
+ ```
28
+
29
+ ## Code Style
30
+
31
+ - Use meaningful variable and function names
32
+ - Add comments for complex logic
33
+ - Follow existing code patterns
34
+ - Keep functions small and focused
35
+
36
+ ## Pull Request Guidelines
37
+
38
+ - Provide a clear description of the changes
39
+ - Reference any related issues
40
+ - Ensure all tests pass
41
+ - Update documentation if needed
42
+
43
+ ## Reporting Issues
44
+
45
+ When reporting issues, please include:
46
+
47
+ - A clear description of the problem
48
+ - Steps to reproduce
49
+ - Expected vs actual behavior
50
+ - Environment details (OS, Node.js version, etc.)
51
+
52
+ ## Code of Conduct
53
+
54
+ Be respectful and inclusive. We're all here to learn and build together.
55
+
56
+ ## Questions?
57
+
58
+ Feel free to open an issue for any questions or discussions.
59
+
60
+ ## License
61
+
62
+ By contributing, you agree that your contributions will be licensed under the MIT License.
package/Dockerfile ADDED
@@ -0,0 +1,18 @@
1
+ FROM node:20-alpine
2
+
3
+ WORKDIR /app
4
+
5
+ # Copy package files
6
+ COPY package*.json ./
7
+
8
+ # Install dependencies
9
+ RUN npm ci --only=production
10
+
11
+ # Copy source
12
+ COPY . .
13
+
14
+ # Build if needed
15
+ RUN npm run build --if-present
16
+
17
+ # Run the server
18
+ CMD ["node", "dist/index.js"]
package/README.md CHANGED
@@ -1,7 +1,11 @@
1
1
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@purplesquirrel/volcengine-mcp.svg)](https://www.npmjs.com/package/@purplesquirrel/volcengine-mcp) [![npm downloads](https://img.shields.io/npm/dm/@purplesquirrel/volcengine-mcp.svg)](https://www.npmjs.com/package/@purplesquirrel/volcengine-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+
2
5
  [![MCP](https://img.shields.io/badge/MCP-Server-blue)](https://modelcontextprotocol.io)
3
6
  [![Doubao](https://img.shields.io/badge/ByteDance-Doubao-00D1C1)](https://www.volcengine.com)
4
7
  [![CI](https://github.com/PurpleSquirrelMedia/volcengine-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/PurpleSquirrelMedia/volcengine-mcp/actions/workflows/ci.yml)
8
+ [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/PurpleSquirrelMedia/volcengine-mcp/badge)](https://securityscorecards.dev/viewer/?uri=github.com/PurpleSquirrelMedia/volcengine-mcp)
5
9
 
6
10
  # Volcano Engine MCP Server
7
11
 
@@ -162,3 +166,14 @@ Matthew Karsten
162
166
  ## License
163
167
 
164
168
  MIT
169
+
170
+
171
+ ## 💜 Support This Project
172
+
173
+ If this MCP server is useful to you, consider supporting its development:
174
+
175
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=for-the-badge&logo=github)](https://github.com/sponsors/PurpleSquirrelMedia)
176
+ [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/purplesquirrel)
177
+
178
+ **Enterprise support available** - [Contact us](mailto:enterprise@purplesquirrel.media) for SLAs, custom development, and priority support.
179
+
package/SECURITY.md ADDED
@@ -0,0 +1,34 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ | Version | Supported |
6
+ | ------- | ------------------ |
7
+ | 1.x.x | :white_check_mark: |
8
+
9
+ ## Reporting a Vulnerability
10
+
11
+ We take security seriously. If you discover a security vulnerability, please report it responsibly.
12
+
13
+ ### How to Report
14
+
15
+ 1. **Do NOT open a public issue** for security vulnerabilities
16
+ 2. Email security concerns to: security@purplesquirrel.media
17
+ 3. Or use GitHub's private vulnerability reporting feature
18
+
19
+ ### What to Include
20
+
21
+ - Description of the vulnerability
22
+ - Steps to reproduce
23
+ - Potential impact
24
+ - Suggested fix (if any)
25
+
26
+ ### Response Timeline
27
+
28
+ - **Initial response**: Within 48 hours
29
+ - **Status update**: Within 1 week
30
+ - **Fix timeline**: Depends on severity, typically within 30 days
31
+
32
+ ### Recognition
33
+
34
+ We appreciate responsible disclosure and will acknowledge security researchers who report valid vulnerabilities.
package/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,11 +1,15 @@
1
1
  {
2
2
  "name": "@purplesquirrel/volcengine-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "MCP server for ByteDance Volcano Engine (Doubao) integration with Claude Code",
5
5
  "main": "index.js",
6
6
  "type": "module",
7
+ "bin": {
8
+ "volcengine-mcp": "./index.js"
9
+ },
7
10
  "scripts": {
8
- "start": "node index.js"
11
+ "start": "node index.js",
12
+ "prepare": "husky install || true"
9
13
  },
10
14
  "keywords": [
11
15
  "mcp",
@@ -20,5 +24,17 @@
20
24
  "license": "MIT",
21
25
  "dependencies": {
22
26
  "@modelcontextprotocol/sdk": "^1.24.0"
27
+ },
28
+ "engines": {
29
+ "node": ">=18.0.0"
30
+ },
31
+ "devDependencies": {
32
+ "husky": "^9.0.0",
33
+ "lint-staged": "^15.0.0",
34
+ "prettier": "^3.0.0"
35
+ },
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/PurpleSquirrelMedia/volcengine-mcp"
23
39
  }
24
40
  }
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Smoke test - verifies the package can be imported
5
+ */
6
+
7
+ const { spawn } = require('child_process');
8
+ const path = require('path');
9
+
10
+ async function test() {
11
+ console.log('Running smoke test...');
12
+
13
+ // Test 1: Package can be required
14
+ try {
15
+ const pkg = require('./package.json');
16
+ console.log(`✓ Package ${pkg.name}@${pkg.version} loaded`);
17
+ } catch (err) {
18
+ console.error('✗ Failed to load package.json');
19
+ process.exit(1);
20
+ }
21
+
22
+ // Test 2: Main entry point exists
23
+ try {
24
+ const main = require('.');
25
+ console.log('✓ Main entry point loaded');
26
+ } catch (err) {
27
+ console.error('✗ Failed to load main entry:', err.message);
28
+ process.exit(1);
29
+ }
30
+
31
+ console.log('All smoke tests passed!');
32
+ }
33
+
34
+ test();