claude-autopm 1.15.1 → 1.15.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/README.md +8 -8
- package/autopm/.claude/examples/mcp-servers.example.json +3 -20
- package/autopm/.claude/mcp/MCP-REGISTRY.md +2 -7
- package/autopm/.claude/mcp/context7.md +205 -0
- package/autopm/.claude/mcp/github-mcp.md +350 -0
- package/autopm/.claude/mcp/playwright-mcp.md +312 -0
- package/bin/autopm.js +2 -2
- package/bin/commands/mcp.js +2 -2
- package/package.json +1 -1
- package/scripts/mcp-handler.js +1 -2
package/README.md
CHANGED
|
@@ -226,7 +226,7 @@ Essential Components:
|
|
|
226
226
|
✅ Git repository - Initialized
|
|
227
227
|
|
|
228
228
|
Optional Components:
|
|
229
|
-
✅ MCP servers - 2 active (context7
|
|
229
|
+
✅ MCP servers - 2 active (context7, github-mcp)
|
|
230
230
|
⚠️ Git hooks - Not installed (run: bash scripts/setup-hooks.sh)
|
|
231
231
|
✅ Node.js version - v20.10.0 (compatible)
|
|
232
232
|
|
|
@@ -382,10 +382,10 @@ autopm mcp agents
|
|
|
382
382
|
🤖 Agents Using MCP
|
|
383
383
|
|
|
384
384
|
✅ react-frontend-engineer
|
|
385
|
-
└─ context7
|
|
385
|
+
└─ context7
|
|
386
386
|
|
|
387
387
|
✅ python-backend-engineer
|
|
388
|
-
└─ context7
|
|
388
|
+
└─ context7
|
|
389
389
|
└─ sqlite-mcp
|
|
390
390
|
|
|
391
391
|
📊 Summary:
|
|
@@ -393,7 +393,7 @@ autopm mcp agents
|
|
|
393
393
|
Using MCP: 39 (74%)
|
|
394
394
|
|
|
395
395
|
# Enable MCP servers
|
|
396
|
-
autopm mcp enable context7
|
|
396
|
+
autopm mcp enable context7
|
|
397
397
|
autopm mcp enable github-mcp
|
|
398
398
|
|
|
399
399
|
# Configure API keys interactively
|
|
@@ -447,8 +447,8 @@ autopm mcp validate # Validate all servers
|
|
|
447
447
|
|
|
448
448
|
### MCP Server Types
|
|
449
449
|
|
|
450
|
-
- **Documentation** - `context7
|
|
451
|
-
- **Codebase** - `context7
|
|
450
|
+
- **Documentation** - `context7` for live framework documentation (React, Python, AWS, etc.)
|
|
451
|
+
- **Codebase** - `context7` for project analysis and navigation
|
|
452
452
|
- **GitHub** - `github-mcp` for repository operations
|
|
453
453
|
- **Databases** - `sqlite-mcp`, `postgresql-mcp`, `mongodb-mcp` for data operations
|
|
454
454
|
- **Browser** - `playwright-mcp` for E2E testing and automation
|
|
@@ -457,7 +457,7 @@ autopm mcp validate # Validate all servers
|
|
|
457
457
|
|
|
458
458
|
```bash
|
|
459
459
|
# 1. Enable context7 documentation server
|
|
460
|
-
autopm mcp enable context7
|
|
460
|
+
autopm mcp enable context7
|
|
461
461
|
|
|
462
462
|
# 2. Configure API key
|
|
463
463
|
cat > .claude/.env << EOF
|
|
@@ -472,7 +472,7 @@ autopm mcp sync
|
|
|
472
472
|
autopm mcp diagnose
|
|
473
473
|
|
|
474
474
|
# 5. Test connection
|
|
475
|
-
autopm mcp test context7
|
|
475
|
+
autopm mcp test context7
|
|
476
476
|
```
|
|
477
477
|
|
|
478
478
|
### MCP Benefits
|
|
@@ -2,27 +2,10 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"context7": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["@upstash/context7-mcp"],
|
|
5
|
+
"args": ["-y", "@upstash/context7-mcp"],
|
|
6
6
|
"env": {
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
"CONTEXT7_API_URL": "${CONTEXT7_API_URL:-https://context7.com/api/v1}",
|
|
10
|
-
"CONTEXT7_WORKSPACE": "${CONTEXT7_WORKSPACE:-}",
|
|
11
|
-
"CONTEXT7_MODE": "documentation"
|
|
12
|
-
},
|
|
13
|
-
"envFile": ".claude/.env"
|
|
14
|
-
},
|
|
15
|
-
"context7": {
|
|
16
|
-
"command": "npx",
|
|
17
|
-
"args": ["@upstash/context7-mcp"],
|
|
18
|
-
"env": {
|
|
19
|
-
"CONTEXT7_API_KEY": "${CONTEXT7_API_KEY:-}",
|
|
20
|
-
"CONTEXT7_MCP_URL": "${CONTEXT7_MCP_URL:-https://mcp.context7.com/mcp}",
|
|
21
|
-
"CONTEXT7_API_URL": "${CONTEXT7_API_URL:-https://context7.com/api/v1}",
|
|
22
|
-
"CONTEXT7_WORKSPACE": "${CONTEXT7_WORKSPACE:-}",
|
|
23
|
-
"CONTEXT7_MODE": "codebase"
|
|
24
|
-
},
|
|
25
|
-
"envFile": ".claude/.env"
|
|
7
|
+
"DEFAULT_MINIMUM_TOKENS": "${DEFAULT_MINIMUM_TOKENS:-10000}"
|
|
8
|
+
}
|
|
26
9
|
},
|
|
27
10
|
"playwright-mcp": {
|
|
28
11
|
"command": "npx",
|
|
@@ -11,13 +11,8 @@ This document provides guidance on MCP (Model Context Protocol) server managemen
|
|
|
11
11
|
Example MCP server configurations are available in `.claude/examples/mcp/`:
|
|
12
12
|
|
|
13
13
|
### context7
|
|
14
|
-
**Description**: Context7
|
|
15
|
-
**Use Cases**: API documentation, framework guides, technical references
|
|
16
|
-
**Example**: `.claude/examples/mcp/context7.md`
|
|
17
|
-
|
|
18
|
-
### context7
|
|
19
|
-
**Description**: Context7 codebase server for project code analysis
|
|
20
|
-
**Use Cases**: Code navigation, project analysis, dependency tracking
|
|
14
|
+
**Description**: Context7 MCP server - up-to-date documentation database for any library or framework
|
|
15
|
+
**Use Cases**: API documentation, framework guides, technical references, library lookups
|
|
21
16
|
**Example**: `.claude/examples/mcp/context7.md`
|
|
22
17
|
|
|
23
18
|
### playwright-mcp
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context7
|
|
3
|
+
command: npx
|
|
4
|
+
args: ["-y", "@upstash/context7-mcp"]
|
|
5
|
+
description: MCP server for Context7 - Up-to-date documentation database
|
|
6
|
+
category: documentation
|
|
7
|
+
status: inactive
|
|
8
|
+
env:
|
|
9
|
+
DEFAULT_MINIMUM_TOKENS: "${DEFAULT_MINIMUM_TOKENS:-10000}"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Context7 MCP Server
|
|
13
|
+
|
|
14
|
+
Official MCP server for [Context7](https://context7.com) - provides up-to-date documentation for libraries and frameworks.
|
|
15
|
+
|
|
16
|
+
## 🎯 Features
|
|
17
|
+
|
|
18
|
+
- **Up-to-date Documentation**: Always current library documentation
|
|
19
|
+
- **Smart Search**: Resolve library names to Context7 IDs
|
|
20
|
+
- **Token Control**: Configure minimum tokens for documentation retrieval
|
|
21
|
+
- **Multi-library Support**: Access documentation for any supported library
|
|
22
|
+
|
|
23
|
+
## 📦 Installation
|
|
24
|
+
|
|
25
|
+
### Option 1: Using AutoPM (Recommended)
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Install from npm with automatic configuration
|
|
29
|
+
autopm mcp install @upstash/context7-mcp --enable
|
|
30
|
+
|
|
31
|
+
# Configure API key
|
|
32
|
+
echo "CONTEXT7_API_KEY=your-key-here" >> .claude/.env
|
|
33
|
+
|
|
34
|
+
# Test connection
|
|
35
|
+
autopm mcp test context7
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Option 2: Manual Setup
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Copy this example to your project
|
|
42
|
+
cp .claude/examples/mcp/context7.md .claude/mcp/
|
|
43
|
+
|
|
44
|
+
# Enable the server
|
|
45
|
+
autopm mcp enable context7
|
|
46
|
+
|
|
47
|
+
# Sync configuration
|
|
48
|
+
autopm mcp sync
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 🔑 Configuration
|
|
52
|
+
|
|
53
|
+
### Environment Variables
|
|
54
|
+
|
|
55
|
+
Add to `.claude/.env`:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Optional: Minimum tokens for documentation retrieval (default: 10000)
|
|
59
|
+
DEFAULT_MINIMUM_TOKENS=10000
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Note: Context7 API key is not required for basic usage.
|
|
63
|
+
|
|
64
|
+
## 🔧 Available Tools
|
|
65
|
+
|
|
66
|
+
### 1. `resolve-library-id`
|
|
67
|
+
Resolves a general library name into a Context7-compatible library ID.
|
|
68
|
+
|
|
69
|
+
**Example:**
|
|
70
|
+
```
|
|
71
|
+
Library: "react" → ID: "react/latest"
|
|
72
|
+
Library: "nextjs" → ID: "next/latest"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 2. `get-library-docs`
|
|
76
|
+
Fetches documentation for a library using a Context7-compatible library ID.
|
|
77
|
+
|
|
78
|
+
**Parameters:**
|
|
79
|
+
- `libraryId` (required): Context7 library ID (e.g., "react/latest")
|
|
80
|
+
- `topic` (optional): Specific topic to focus on
|
|
81
|
+
- `tokens` (optional): Minimum tokens to retrieve (default: 10000)
|
|
82
|
+
|
|
83
|
+
**Example:**
|
|
84
|
+
```
|
|
85
|
+
get-library-docs("react/latest", topic="hooks")
|
|
86
|
+
get-library-docs("nextjs/14", topic="app-router", tokens=15000)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 📚 Usage in Agent Definitions
|
|
90
|
+
|
|
91
|
+
Reference Context7 documentation in your agents:
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
## MCP Servers Used
|
|
95
|
+
|
|
96
|
+
This agent uses Context7 for up-to-date documentation:
|
|
97
|
+
- `mcp://context7/react/latest` - React documentation
|
|
98
|
+
- `mcp://context7/nextjs/14` - Next.js 14 documentation
|
|
99
|
+
- `mcp://context7/typescript/latest` - TypeScript reference
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 🧪 Testing
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Test the connection
|
|
106
|
+
autopm mcp test context7
|
|
107
|
+
|
|
108
|
+
# Check status
|
|
109
|
+
autopm mcp status
|
|
110
|
+
|
|
111
|
+
# Verify in Claude Code
|
|
112
|
+
/mcp
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 🔐 Security
|
|
116
|
+
|
|
117
|
+
- Context7 MCP server does not require authentication for basic usage
|
|
118
|
+
- Never commit `.claude/.env` with sensitive data
|
|
119
|
+
- Review Context7's [privacy policy](https://context7.com/privacy)
|
|
120
|
+
|
|
121
|
+
## 📖 Supported Libraries
|
|
122
|
+
|
|
123
|
+
Context7 supports hundreds of libraries including:
|
|
124
|
+
- **Frontend**: React, Vue, Angular, Svelte, Next.js
|
|
125
|
+
- **Backend**: Express, Fastify, NestJS, Django, Flask
|
|
126
|
+
- **Databases**: PostgreSQL, MongoDB, Redis, MySQL
|
|
127
|
+
- **Cloud**: AWS, Azure, GCP services
|
|
128
|
+
- **And many more...**
|
|
129
|
+
|
|
130
|
+
Visit [Context7](https://context7.com) to browse all available documentation.
|
|
131
|
+
|
|
132
|
+
## 🆘 Troubleshooting
|
|
133
|
+
|
|
134
|
+
### Server Not Starting
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Check npm package is available
|
|
138
|
+
npm view @upstash/context7-mcp
|
|
139
|
+
|
|
140
|
+
# Reinstall
|
|
141
|
+
npm install -g @upstash/context7-mcp
|
|
142
|
+
|
|
143
|
+
# Test manually
|
|
144
|
+
npx -y @upstash/context7-mcp
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Library Not Found
|
|
148
|
+
|
|
149
|
+
Use `resolve-library-id` to find the correct library ID:
|
|
150
|
+
```
|
|
151
|
+
resolve-library-id("your-library-name")
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Token Limit Issues
|
|
155
|
+
|
|
156
|
+
Adjust `DEFAULT_MINIMUM_TOKENS` in your environment:
|
|
157
|
+
```bash
|
|
158
|
+
echo "DEFAULT_MINIMUM_TOKENS=5000" >> .claude/.env
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 🔗 Links
|
|
162
|
+
|
|
163
|
+
- **NPM Package**: https://www.npmjs.com/package/@upstash/context7-mcp
|
|
164
|
+
- **GitHub**: https://github.com/upstash/context7
|
|
165
|
+
- **Context7 Website**: https://context7.com
|
|
166
|
+
- **Documentation**: https://upstash.com/docs/redis/integrations/mcp
|
|
167
|
+
- **Blog Post**: https://upstash.com/blog/context7-mcp
|
|
168
|
+
|
|
169
|
+
## 📝 Example Agent Configuration
|
|
170
|
+
|
|
171
|
+
```markdown
|
|
172
|
+
---
|
|
173
|
+
name: react-expert
|
|
174
|
+
description: React development expert with Context7 documentation
|
|
175
|
+
mcpServers:
|
|
176
|
+
- context7
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
# React Expert Agent
|
|
180
|
+
|
|
181
|
+
This agent has access to:
|
|
182
|
+
- `mcp://context7/react/latest` - Current React documentation
|
|
183
|
+
- `mcp://context7/react-router/latest` - React Router docs
|
|
184
|
+
- `mcp://context7/redux/latest` - Redux documentation
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## 🎓 Best Practices
|
|
188
|
+
|
|
189
|
+
1. **Use Specific Library IDs**: `react/18` instead of `react/latest` for stability
|
|
190
|
+
2. **Configure Token Limits**: Adjust based on your needs
|
|
191
|
+
3. **Cache Results**: Context7 provides fresh docs but cache for performance
|
|
192
|
+
4. **Topic Filtering**: Use specific topics to reduce token usage
|
|
193
|
+
5. **Test Regularly**: Ensure documentation sources are accessible
|
|
194
|
+
|
|
195
|
+
## 🆕 Updates
|
|
196
|
+
|
|
197
|
+
Context7 MCP server is actively maintained by Upstash. Check for updates:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
npm update -g @upstash/context7-mcp
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
**Need help?** Visit [Context7 documentation](https://context7.com) or [Upstash support](https://upstash.com/support)
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-mcp
|
|
3
|
+
command: npx
|
|
4
|
+
args: ["@modelcontextprotocol/server-github"]
|
|
5
|
+
env:
|
|
6
|
+
GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN:-}"
|
|
7
|
+
GITHUB_API_URL: "${GITHUB_API_URL:-https://api.github.com}"
|
|
8
|
+
envFile: .claude/.env
|
|
9
|
+
description: GitHub MCP server for repository management and collaboration
|
|
10
|
+
category: integration
|
|
11
|
+
status: active
|
|
12
|
+
version: ">=1.0.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# GitHub MCP Server
|
|
16
|
+
|
|
17
|
+
## Description
|
|
18
|
+
|
|
19
|
+
The GitHub MCP Server provides comprehensive GitHub integration through the Model Context Protocol, enabling repository management, issue tracking, pull request workflows, and collaborative development features.
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- **Repository Management**: Create, clone, configure repositories
|
|
24
|
+
- **Issue Tracking**: Create, update, search issues
|
|
25
|
+
- **Pull Requests**: Create, review, merge PRs
|
|
26
|
+
- **Actions/Workflows**: Manage GitHub Actions
|
|
27
|
+
- **Code Search**: Search across repositories
|
|
28
|
+
- **Release Management**: Create and manage releases
|
|
29
|
+
- **Team Collaboration**: Manage teams and permissions
|
|
30
|
+
|
|
31
|
+
## Configuration
|
|
32
|
+
|
|
33
|
+
### Required Environment Variables
|
|
34
|
+
|
|
35
|
+
- `GITHUB_PERSONAL_ACCESS_TOKEN`: Your GitHub PAT (required)
|
|
36
|
+
|
|
37
|
+
### Optional Environment Variables
|
|
38
|
+
|
|
39
|
+
- `GITHUB_API_URL`: GitHub API endpoint (for GitHub Enterprise)
|
|
40
|
+
- `GITHUB_DEFAULT_OWNER`: Default repository owner
|
|
41
|
+
- `GITHUB_DEFAULT_REPO`: Default repository name
|
|
42
|
+
|
|
43
|
+
### Token Permissions
|
|
44
|
+
|
|
45
|
+
Required scopes for full functionality:
|
|
46
|
+
```
|
|
47
|
+
repo - Full repository access
|
|
48
|
+
workflow - GitHub Actions workflows
|
|
49
|
+
write:packages - Package registry
|
|
50
|
+
admin:org - Organization management (optional)
|
|
51
|
+
gist - Gist creation (optional)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Usage Examples
|
|
55
|
+
|
|
56
|
+
### Basic Setup
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Enable the server
|
|
60
|
+
autopm mcp enable github-mcp
|
|
61
|
+
|
|
62
|
+
# Configure authentication
|
|
63
|
+
echo "GITHUB_TOKEN=ghp_your_token_here" >> .claude/.env
|
|
64
|
+
|
|
65
|
+
# For a specific repository
|
|
66
|
+
echo "GITHUB_DEFAULT_OWNER=your-username" >> .claude/.env
|
|
67
|
+
echo "GITHUB_DEFAULT_REPO=your-repo" >> .claude/.env
|
|
68
|
+
|
|
69
|
+
# Sync configuration
|
|
70
|
+
autopm mcp sync
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Integration with Agents
|
|
74
|
+
|
|
75
|
+
Commonly used with:
|
|
76
|
+
- `github-operations-specialist` - For DevOps workflows
|
|
77
|
+
- `code-analyzer` - For PR reviews
|
|
78
|
+
- `test-runner` - For CI/CD integration
|
|
79
|
+
|
|
80
|
+
## MCP Commands
|
|
81
|
+
|
|
82
|
+
### Repository Operations
|
|
83
|
+
|
|
84
|
+
```javascript
|
|
85
|
+
// Get repository info
|
|
86
|
+
github.getRepository({ owner, repo })
|
|
87
|
+
|
|
88
|
+
// Create repository
|
|
89
|
+
github.createRepository({
|
|
90
|
+
name: "new-repo",
|
|
91
|
+
description: "Repository description",
|
|
92
|
+
private: false,
|
|
93
|
+
auto_init: true
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
// List repositories
|
|
97
|
+
github.listRepositories({ type: "owner" })
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Issue Management
|
|
101
|
+
|
|
102
|
+
```javascript
|
|
103
|
+
// Create issue
|
|
104
|
+
github.createIssue({
|
|
105
|
+
title: "Bug: Application crashes",
|
|
106
|
+
body: "Detailed description...",
|
|
107
|
+
labels: ["bug", "high-priority"],
|
|
108
|
+
assignees: ["username"]
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// Update issue
|
|
112
|
+
github.updateIssue({
|
|
113
|
+
issue_number: 123,
|
|
114
|
+
state: "closed",
|
|
115
|
+
labels: ["resolved"]
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
// Search issues
|
|
119
|
+
github.searchIssues({
|
|
120
|
+
query: "is:open label:bug"
|
|
121
|
+
})
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Pull Request Workflows
|
|
125
|
+
|
|
126
|
+
```javascript
|
|
127
|
+
// Create PR
|
|
128
|
+
github.createPullRequest({
|
|
129
|
+
title: "Feature: Add new functionality",
|
|
130
|
+
head: "feature-branch",
|
|
131
|
+
base: "main",
|
|
132
|
+
body: "PR description..."
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
// Review PR
|
|
136
|
+
github.createReview({
|
|
137
|
+
pull_number: 456,
|
|
138
|
+
event: "APPROVE",
|
|
139
|
+
body: "LGTM!"
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
// Merge PR
|
|
143
|
+
github.mergePullRequest({
|
|
144
|
+
pull_number: 456,
|
|
145
|
+
merge_method: "squash"
|
|
146
|
+
})
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### GitHub Actions
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// Trigger workflow
|
|
153
|
+
github.triggerWorkflow({
|
|
154
|
+
workflow_id: "ci.yml",
|
|
155
|
+
ref: "main",
|
|
156
|
+
inputs: { environment: "production" }
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
// Get workflow runs
|
|
160
|
+
github.listWorkflowRuns({
|
|
161
|
+
workflow_id: "ci.yml",
|
|
162
|
+
status: "completed"
|
|
163
|
+
})
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Advanced Features
|
|
167
|
+
|
|
168
|
+
### Code Search
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// Search code
|
|
172
|
+
github.searchCode({
|
|
173
|
+
query: "function TODO in:file language:js repo:owner/repo"
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
// Search commits
|
|
177
|
+
github.searchCommits({
|
|
178
|
+
query: "fix bug author:username"
|
|
179
|
+
})
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Release Management
|
|
183
|
+
|
|
184
|
+
```javascript
|
|
185
|
+
// Create release
|
|
186
|
+
github.createRelease({
|
|
187
|
+
tag_name: "v1.0.0",
|
|
188
|
+
name: "Version 1.0.0",
|
|
189
|
+
body: "Release notes...",
|
|
190
|
+
draft: false,
|
|
191
|
+
prerelease: false
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
// Upload release asset
|
|
195
|
+
github.uploadReleaseAsset({
|
|
196
|
+
release_id: 789,
|
|
197
|
+
name: "app.zip",
|
|
198
|
+
data: fileBuffer
|
|
199
|
+
})
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Webhooks
|
|
203
|
+
|
|
204
|
+
```javascript
|
|
205
|
+
// Create webhook
|
|
206
|
+
github.createWebhook({
|
|
207
|
+
config: {
|
|
208
|
+
url: "https://example.com/webhook",
|
|
209
|
+
content_type: "json"
|
|
210
|
+
},
|
|
211
|
+
events: ["push", "pull_request"]
|
|
212
|
+
})
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Workflow Integration
|
|
216
|
+
|
|
217
|
+
### Automated PR Workflow
|
|
218
|
+
|
|
219
|
+
```yaml
|
|
220
|
+
workflow:
|
|
221
|
+
- create_branch: feature/new-feature
|
|
222
|
+
- commit_changes:
|
|
223
|
+
message: "Add new feature"
|
|
224
|
+
- create_pr:
|
|
225
|
+
title: "Feature: New functionality"
|
|
226
|
+
reviewers: ["reviewer1", "reviewer2"]
|
|
227
|
+
- wait_for_checks: true
|
|
228
|
+
- auto_merge:
|
|
229
|
+
method: squash
|
|
230
|
+
delete_branch: true
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Issue Triage
|
|
234
|
+
|
|
235
|
+
```yaml
|
|
236
|
+
triage:
|
|
237
|
+
rules:
|
|
238
|
+
- if: "title contains 'bug'"
|
|
239
|
+
then:
|
|
240
|
+
- add_label: bug
|
|
241
|
+
- assign_to: bug-team
|
|
242
|
+
- if: "title contains 'feature'"
|
|
243
|
+
then:
|
|
244
|
+
- add_label: enhancement
|
|
245
|
+
- add_to_project: feature-requests
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Best Practices
|
|
249
|
+
|
|
250
|
+
1. **Authentication**
|
|
251
|
+
- Use fine-grained PATs
|
|
252
|
+
- Rotate tokens regularly
|
|
253
|
+
- Store securely in .env
|
|
254
|
+
|
|
255
|
+
2. **Rate Limiting**
|
|
256
|
+
- Monitor API usage
|
|
257
|
+
- Implement caching
|
|
258
|
+
- Use conditional requests
|
|
259
|
+
|
|
260
|
+
3. **Branch Protection**
|
|
261
|
+
- Require PR reviews
|
|
262
|
+
- Enable status checks
|
|
263
|
+
- Protect main branch
|
|
264
|
+
|
|
265
|
+
4. **Automation**
|
|
266
|
+
- Use GitHub Actions for CI/CD
|
|
267
|
+
- Automate repetitive tasks
|
|
268
|
+
- Implement proper error handling
|
|
269
|
+
|
|
270
|
+
## Troubleshooting
|
|
271
|
+
|
|
272
|
+
### Common Issues
|
|
273
|
+
|
|
274
|
+
1. **Authentication Failed**
|
|
275
|
+
- Verify token is valid
|
|
276
|
+
- Check token permissions
|
|
277
|
+
- Ensure token hasn't expired
|
|
278
|
+
|
|
279
|
+
2. **Rate Limit Exceeded**
|
|
280
|
+
- Check rate limit status
|
|
281
|
+
- Implement exponential backoff
|
|
282
|
+
- Use authenticated requests
|
|
283
|
+
|
|
284
|
+
3. **Permission Denied**
|
|
285
|
+
- Verify repository access
|
|
286
|
+
- Check organization permissions
|
|
287
|
+
- Ensure proper token scopes
|
|
288
|
+
|
|
289
|
+
### Debug Mode
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Enable debug logging
|
|
293
|
+
export GITHUB_DEBUG=true
|
|
294
|
+
export NODE_DEBUG=github
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Security Considerations
|
|
298
|
+
|
|
299
|
+
1. **Token Security**
|
|
300
|
+
- Never commit tokens
|
|
301
|
+
- Use environment variables
|
|
302
|
+
- Implement token rotation
|
|
303
|
+
|
|
304
|
+
2. **Repository Access**
|
|
305
|
+
- Use least privilege principle
|
|
306
|
+
- Review collaborator permissions
|
|
307
|
+
- Enable 2FA
|
|
308
|
+
|
|
309
|
+
3. **Webhook Security**
|
|
310
|
+
- Validate webhook signatures
|
|
311
|
+
- Use HTTPS endpoints
|
|
312
|
+
- Implement IP allowlisting
|
|
313
|
+
|
|
314
|
+
## GitHub Enterprise
|
|
315
|
+
|
|
316
|
+
For GitHub Enterprise Server:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# Configure enterprise URL
|
|
320
|
+
export GITHUB_API_URL=https://github.enterprise.com/api/v3
|
|
321
|
+
export GITHUB_GRAPHQL_URL=https://github.enterprise.com/api/graphql
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Rate Limits
|
|
325
|
+
|
|
326
|
+
### API Limits
|
|
327
|
+
- Authenticated: 5,000 requests/hour
|
|
328
|
+
- Search: 30 requests/minute
|
|
329
|
+
- GraphQL: 5,000 points/hour
|
|
330
|
+
|
|
331
|
+
### Checking Rate Limit
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
github.getRateLimit()
|
|
335
|
+
// Returns: { limit, remaining, reset }
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## Version History
|
|
339
|
+
|
|
340
|
+
- **1.0.0**: Initial MCP integration
|
|
341
|
+
- **1.1.0**: Added Actions support
|
|
342
|
+
- **1.2.0**: GraphQL API integration
|
|
343
|
+
- **1.3.0**: Enterprise support
|
|
344
|
+
- **1.4.0**: Advanced search capabilities
|
|
345
|
+
|
|
346
|
+
## Related Resources
|
|
347
|
+
|
|
348
|
+
- [GitHub API Documentation](https://docs.github.com/en/rest)
|
|
349
|
+
- [GitHub Actions](https://docs.github.com/en/actions)
|
|
350
|
+
- [GitHub Operations Specialist](../agents/devops/github-operations-specialist.md)
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright-mcp
|
|
3
|
+
command: npx
|
|
4
|
+
args: ["@playwright/mcp"]
|
|
5
|
+
env:
|
|
6
|
+
PLAYWRIGHT_BROWSER: "${PLAYWRIGHT_BROWSER:-chromium}"
|
|
7
|
+
PLAYWRIGHT_HEADLESS: "${PLAYWRIGHT_HEADLESS:-true}"
|
|
8
|
+
envFile: .claude/.env
|
|
9
|
+
description: Playwright MCP server for browser automation and E2E testing
|
|
10
|
+
category: testing
|
|
11
|
+
status: active
|
|
12
|
+
version: ">=1.0.0"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Playwright MCP Server
|
|
16
|
+
|
|
17
|
+
## Description
|
|
18
|
+
|
|
19
|
+
The Playwright MCP Server enables browser automation, visual testing, and end-to-end testing capabilities through the Model Context Protocol. It provides direct browser control for testing web applications, capturing screenshots, and validating user interfaces.
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
- **Browser Automation**: Control Chromium, Firefox, and WebKit
|
|
24
|
+
- **Visual Testing**: Screenshot capture and comparison
|
|
25
|
+
- **E2E Testing**: Automated user flow testing
|
|
26
|
+
- **Accessibility Testing**: WCAG compliance checks
|
|
27
|
+
- **Performance Monitoring**: Page load metrics
|
|
28
|
+
- **Network Interception**: Mock API responses
|
|
29
|
+
- **Mobile Emulation**: Test responsive designs
|
|
30
|
+
|
|
31
|
+
## Configuration
|
|
32
|
+
|
|
33
|
+
### Environment Variables
|
|
34
|
+
|
|
35
|
+
- `PLAYWRIGHT_BROWSER`: Browser engine (chromium|firefox|webkit)
|
|
36
|
+
- `PLAYWRIGHT_HEADLESS`: Run in headless mode (true|false)
|
|
37
|
+
- `PLAYWRIGHT_SLOW_MO`: Slow down operations by ms
|
|
38
|
+
- `PLAYWRIGHT_TIMEOUT`: Default timeout in ms
|
|
39
|
+
- `PLAYWRIGHT_VIDEO`: Record videos (on|off|retain-on-failure)
|
|
40
|
+
- `PLAYWRIGHT_TRACE`: Record traces (on|off|retain-on-failure)
|
|
41
|
+
|
|
42
|
+
### Browser Options
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
browsers:
|
|
46
|
+
chromium:
|
|
47
|
+
channel: chrome # or 'msedge', 'chrome-beta'
|
|
48
|
+
args:
|
|
49
|
+
- --disable-dev-shm-usage
|
|
50
|
+
- --no-sandbox
|
|
51
|
+
firefox:
|
|
52
|
+
firefoxUserPrefs:
|
|
53
|
+
"media.navigator.streams.fake": true
|
|
54
|
+
webkit:
|
|
55
|
+
# Safari-specific options
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Usage Examples
|
|
59
|
+
|
|
60
|
+
### Basic Setup
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Enable the server
|
|
64
|
+
autopm mcp enable playwright-mcp
|
|
65
|
+
|
|
66
|
+
# Configure for headed mode during development
|
|
67
|
+
echo "PLAYWRIGHT_HEADLESS=false" >> .claude/.env
|
|
68
|
+
echo "PLAYWRIGHT_SLOW_MO=100" >> .claude/.env
|
|
69
|
+
|
|
70
|
+
# Sync configuration
|
|
71
|
+
autopm mcp sync
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Integration with Agents
|
|
75
|
+
|
|
76
|
+
Used extensively with:
|
|
77
|
+
- `e2e-test-engineer` - For E2E test creation
|
|
78
|
+
- `react-frontend-engineer` - For UI testing
|
|
79
|
+
- `ux-design-expert` - For visual regression
|
|
80
|
+
|
|
81
|
+
### Test Examples
|
|
82
|
+
|
|
83
|
+
```javascript
|
|
84
|
+
// Navigation
|
|
85
|
+
await page.goto('https://example.com');
|
|
86
|
+
|
|
87
|
+
// Interaction
|
|
88
|
+
await page.click('button#submit');
|
|
89
|
+
await page.fill('input#email', 'test@example.com');
|
|
90
|
+
|
|
91
|
+
// Assertions
|
|
92
|
+
await expect(page).toHaveTitle('Example Site');
|
|
93
|
+
await expect(page.locator('.message')).toBeVisible();
|
|
94
|
+
|
|
95
|
+
// Screenshots
|
|
96
|
+
await page.screenshot({ path: 'screenshot.png' });
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## MCP Commands
|
|
100
|
+
|
|
101
|
+
### Navigation
|
|
102
|
+
- `navigate(url)` - Go to URL
|
|
103
|
+
- `reload()` - Reload page
|
|
104
|
+
- `goBack()` - Navigate back
|
|
105
|
+
- `goForward()` - Navigate forward
|
|
106
|
+
|
|
107
|
+
### Interaction
|
|
108
|
+
- `click(selector)` - Click element
|
|
109
|
+
- `fill(selector, value)` - Fill input
|
|
110
|
+
- `select(selector, value)` - Select option
|
|
111
|
+
- `check(selector)` - Check checkbox
|
|
112
|
+
- `press(key)` - Press keyboard key
|
|
113
|
+
|
|
114
|
+
### Validation
|
|
115
|
+
- `screenshot(options)` - Capture screenshot
|
|
116
|
+
- `textContent(selector)` - Get text
|
|
117
|
+
- `isVisible(selector)` - Check visibility
|
|
118
|
+
- `waitForSelector(selector)` - Wait for element
|
|
119
|
+
|
|
120
|
+
## Visual Testing
|
|
121
|
+
|
|
122
|
+
### Screenshot Comparison
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
visual_testing:
|
|
126
|
+
baseline_dir: .playwright/baselines
|
|
127
|
+
diff_dir: .playwright/diffs
|
|
128
|
+
threshold: 0.2 # 20% difference threshold
|
|
129
|
+
ignore_areas:
|
|
130
|
+
- selector: .timestamp
|
|
131
|
+
- selector: .dynamic-content
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Full Page Screenshots
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
await page.screenshot({
|
|
138
|
+
fullPage: true,
|
|
139
|
+
animations: 'disabled',
|
|
140
|
+
mask: ['.sensitive-data']
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Mobile Testing
|
|
145
|
+
|
|
146
|
+
### Device Emulation
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
// iPhone 12
|
|
150
|
+
{
|
|
151
|
+
viewport: { width: 390, height: 844 },
|
|
152
|
+
userAgent: 'Mozilla/5.0 (iPhone...)',
|
|
153
|
+
deviceScaleFactor: 3,
|
|
154
|
+
isMobile: true,
|
|
155
|
+
hasTouch: true
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Responsive Testing
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
viewports:
|
|
163
|
+
- name: mobile
|
|
164
|
+
width: 375
|
|
165
|
+
height: 667
|
|
166
|
+
- name: tablet
|
|
167
|
+
width: 768
|
|
168
|
+
height: 1024
|
|
169
|
+
- name: desktop
|
|
170
|
+
width: 1920
|
|
171
|
+
height: 1080
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Performance Testing
|
|
175
|
+
|
|
176
|
+
### Metrics Collection
|
|
177
|
+
|
|
178
|
+
```javascript
|
|
179
|
+
const metrics = await page.metrics();
|
|
180
|
+
// Returns: JSHeapUsedSize, Timestamp, etc.
|
|
181
|
+
|
|
182
|
+
const performance = await page.evaluate(() =>
|
|
183
|
+
JSON.stringify(window.performance.timing)
|
|
184
|
+
);
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Network Monitoring
|
|
188
|
+
|
|
189
|
+
```javascript
|
|
190
|
+
// Monitor requests
|
|
191
|
+
page.on('request', request => {
|
|
192
|
+
console.log('Request:', request.url());
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// Mock responses
|
|
196
|
+
await page.route('**/api/*', route => {
|
|
197
|
+
route.fulfill({
|
|
198
|
+
status: 200,
|
|
199
|
+
body: JSON.stringify({ mocked: true })
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Accessibility Testing
|
|
205
|
+
|
|
206
|
+
### ARIA Validation
|
|
207
|
+
|
|
208
|
+
```javascript
|
|
209
|
+
const accessibilityTree = await page.accessibility.snapshot();
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Keyboard Navigation
|
|
213
|
+
|
|
214
|
+
```javascript
|
|
215
|
+
await page.keyboard.press('Tab');
|
|
216
|
+
await page.keyboard.press('Enter');
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Debugging
|
|
220
|
+
|
|
221
|
+
### Debug Mode
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# Enable debugging
|
|
225
|
+
export DEBUG=pw:api
|
|
226
|
+
export PWDEBUG=1
|
|
227
|
+
|
|
228
|
+
# Slow mode for debugging
|
|
229
|
+
export PLAYWRIGHT_SLOW_MO=1000
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Trace Viewer
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Record trace
|
|
236
|
+
npx playwright test --trace on
|
|
237
|
+
|
|
238
|
+
# View trace
|
|
239
|
+
npx playwright show-trace trace.zip
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Best Practices
|
|
243
|
+
|
|
244
|
+
1. **Selectors**
|
|
245
|
+
- Use data-testid attributes
|
|
246
|
+
- Avoid fragile CSS selectors
|
|
247
|
+
- Prefer user-facing attributes
|
|
248
|
+
|
|
249
|
+
2. **Waits**
|
|
250
|
+
- Use auto-waiting
|
|
251
|
+
- Avoid hard-coded delays
|
|
252
|
+
- Wait for specific conditions
|
|
253
|
+
|
|
254
|
+
3. **Test Isolation**
|
|
255
|
+
- Fresh browser context per test
|
|
256
|
+
- Clean up test data
|
|
257
|
+
- No test interdependencies
|
|
258
|
+
|
|
259
|
+
4. **Error Handling**
|
|
260
|
+
- Comprehensive error messages
|
|
261
|
+
- Screenshot on failure
|
|
262
|
+
- Trace on failure
|
|
263
|
+
|
|
264
|
+
## Troubleshooting
|
|
265
|
+
|
|
266
|
+
### Common Issues
|
|
267
|
+
|
|
268
|
+
1. **Browser Launch Failed**
|
|
269
|
+
- Install system dependencies
|
|
270
|
+
- Check browser binaries
|
|
271
|
+
- Verify permissions
|
|
272
|
+
|
|
273
|
+
2. **Timeout Errors**
|
|
274
|
+
- Increase timeout values
|
|
275
|
+
- Check network conditions
|
|
276
|
+
- Verify element selectors
|
|
277
|
+
|
|
278
|
+
3. **Flaky Tests**
|
|
279
|
+
- Add proper waits
|
|
280
|
+
- Mock external dependencies
|
|
281
|
+
- Use retry logic
|
|
282
|
+
|
|
283
|
+
## Security Considerations
|
|
284
|
+
|
|
285
|
+
1. **Credentials**
|
|
286
|
+
- Never hardcode passwords
|
|
287
|
+
- Use environment variables
|
|
288
|
+
- Implement secure storage
|
|
289
|
+
|
|
290
|
+
2. **Cross-Origin**
|
|
291
|
+
- Handle CORS properly
|
|
292
|
+
- Use context isolation
|
|
293
|
+
- Validate origins
|
|
294
|
+
|
|
295
|
+
3. **Data Privacy**
|
|
296
|
+
- Mask sensitive data in screenshots
|
|
297
|
+
- Clear cookies/storage
|
|
298
|
+
- Use test data only
|
|
299
|
+
|
|
300
|
+
## Version History
|
|
301
|
+
|
|
302
|
+
- **1.0.0**: Initial MCP integration
|
|
303
|
+
- **1.1.0**: Added visual testing
|
|
304
|
+
- **1.2.0**: Mobile emulation support
|
|
305
|
+
- **1.3.0**: Performance metrics
|
|
306
|
+
- **1.4.0**: Accessibility testing
|
|
307
|
+
|
|
308
|
+
## Related Resources
|
|
309
|
+
|
|
310
|
+
- [Playwright Documentation](https://playwright.dev)
|
|
311
|
+
- [MCP Browser Control](https://modelcontextprotocol.org/browser)
|
|
312
|
+
- [E2E Test Engineer Agent](../agents/frameworks/e2e-test-engineer.md)
|
package/bin/autopm.js
CHANGED
|
@@ -257,7 +257,7 @@ function main() {
|
|
|
257
257
|
🔌 MCP (Model Context Protocol) Management:
|
|
258
258
|
# List and manage MCP servers
|
|
259
259
|
autopm mcp list # List all available MCP servers
|
|
260
|
-
autopm mcp enable context7
|
|
260
|
+
autopm mcp enable context7 # Enable documentation server
|
|
261
261
|
autopm mcp sync # Sync configuration to .claude/mcp-servers.json
|
|
262
262
|
|
|
263
263
|
# Agent Analysis
|
|
@@ -269,7 +269,7 @@ function main() {
|
|
|
269
269
|
# Configuration & Diagnostics
|
|
270
270
|
autopm mcp setup # Interactive API key setup
|
|
271
271
|
autopm mcp diagnose # Run comprehensive diagnostics
|
|
272
|
-
autopm mcp test context7
|
|
272
|
+
autopm mcp test context7 # Test MCP server connection
|
|
273
273
|
autopm mcp status # Show all MCP servers status
|
|
274
274
|
|
|
275
275
|
🔑 Token Setup:
|
package/bin/commands/mcp.js
CHANGED
|
@@ -70,14 +70,14 @@ module.exports = {
|
|
|
70
70
|
.example('autopm mcp install @modelcontextprotocol/server-filesystem', 'Install MCP server from npm')
|
|
71
71
|
.example('autopm mcp install @upstash/context7-mcp --enable', 'Install and enable immediately')
|
|
72
72
|
.example('autopm mcp uninstall filesystem', 'Uninstall MCP server')
|
|
73
|
-
.example('autopm mcp enable context7
|
|
73
|
+
.example('autopm mcp enable context7', 'Enable context7 documentation server')
|
|
74
74
|
.example('autopm mcp agents', 'List all agents using MCP')
|
|
75
75
|
.example('autopm mcp agent react-frontend-engineer', 'Show MCP config for specific agent')
|
|
76
76
|
.example('autopm mcp usage', 'Show MCP usage statistics')
|
|
77
77
|
.example('autopm mcp setup', 'Interactive API key setup')
|
|
78
78
|
.example('autopm mcp check', 'Quick MCP configuration check')
|
|
79
79
|
.example('autopm mcp diagnose', 'Run MCP diagnostics')
|
|
80
|
-
.example('autopm mcp test context7
|
|
80
|
+
.example('autopm mcp test context7', 'Test MCP server connection')
|
|
81
81
|
.example('autopm mcp tree', 'Show agent-MCP dependency tree')
|
|
82
82
|
.example('autopm mcp status', 'Show MCP servers status');
|
|
83
83
|
},
|
package/package.json
CHANGED
package/scripts/mcp-handler.js
CHANGED
|
@@ -1594,8 +1594,7 @@ ${pkg.repository?.url ? `- Repository: ${pkg.repository.url}` : ''}
|
|
|
1594
1594
|
*/
|
|
1595
1595
|
_getCredentialInfo(serverName) {
|
|
1596
1596
|
const info = {
|
|
1597
|
-
'context7
|
|
1598
|
-
'context7-codebase': '→ Same credentials as context7-docs',
|
|
1597
|
+
'context7': '→ Sign up at https://context7.com and get API key from dashboard',
|
|
1599
1598
|
'github-mcp': '→ Generate token at https://github.com/settings/tokens',
|
|
1600
1599
|
'playwright-mcp': '→ No credentials needed - uses local Playwright installation'
|
|
1601
1600
|
};
|