fraim-framework 2.0.80 → 2.0.81
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 +6 -4
- package/dist/src/cli/setup/mcp-config-generator.js +23 -21
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -306,9 +306,11 @@ FRAIM uses the official Model Context Protocol (MCP) server for Jira integration
|
|
|
306
306
|
```json
|
|
307
307
|
{
|
|
308
308
|
"jira": {
|
|
309
|
-
"command": "
|
|
310
|
-
"args": ["-
|
|
309
|
+
"command": "uvx",
|
|
310
|
+
"args": ["mcp-atlassian"],
|
|
311
311
|
"env": {
|
|
312
|
+
"JIRA_URL": "https://mycompany.atlassian.net",
|
|
313
|
+
"JIRA_USERNAME": "user@mycompany.com",
|
|
312
314
|
"JIRA_API_TOKEN": "your-token-here"
|
|
313
315
|
}
|
|
314
316
|
}
|
|
@@ -316,9 +318,9 @@ FRAIM uses the official Model Context Protocol (MCP) server for Jira integration
|
|
|
316
318
|
```
|
|
317
319
|
|
|
318
320
|
**⚠️ Common Issues**:
|
|
319
|
-
- **Old
|
|
321
|
+
- **Old package name**: If you see `@modelcontextprotocol/server-jira` in your config, this package doesn't exist. Run `fraim setup --jira` to update to the correct `mcp-atlassian` package.
|
|
320
322
|
- **Token format**: Jira API tokens typically start with `ATATT3`. If your token doesn't match this format, verify you created an API token (not a personal access token).
|
|
321
|
-
- **First run slow**: The first time `
|
|
323
|
+
- **First run slow**: The first time `uvx` runs the Jira MCP server, it downloads the package. This is normal and only happens once.
|
|
322
324
|
|
|
323
325
|
**Troubleshooting**:
|
|
324
326
|
```bash
|
|
@@ -129,11 +129,11 @@ const generateStandardMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
129
129
|
}
|
|
130
130
|
if (tokens.jira && jiraConfig?.baseUrl && jiraConfig?.email) {
|
|
131
131
|
servers.jira = {
|
|
132
|
-
command: "
|
|
133
|
-
args: ["-
|
|
132
|
+
command: "uvx",
|
|
133
|
+
args: ["mcp-atlassian"],
|
|
134
134
|
env: {
|
|
135
135
|
JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
|
|
136
|
-
|
|
136
|
+
JIRA_USERNAME: jiraConfig.email,
|
|
137
137
|
JIRA_API_TOKEN: tokens.jira
|
|
138
138
|
}
|
|
139
139
|
};
|
|
@@ -184,10 +184,11 @@ const generateClaudeCodeMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
};
|
|
187
|
-
// Claude Code supports HTTPS MCP servers
|
|
187
|
+
// Claude Code supports HTTPS MCP servers (uses same format as VSCode)
|
|
188
188
|
if (tokens.github) {
|
|
189
189
|
servers.github = {
|
|
190
|
-
|
|
190
|
+
type: "http",
|
|
191
|
+
url: GITHUB_MCP_URL,
|
|
191
192
|
headers: {
|
|
192
193
|
Authorization: `Bearer ${tokens.github}`
|
|
193
194
|
}
|
|
@@ -195,7 +196,8 @@ const generateClaudeCodeMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
195
196
|
}
|
|
196
197
|
if (tokens.gitlab) {
|
|
197
198
|
servers.gitlab = {
|
|
198
|
-
|
|
199
|
+
type: "http",
|
|
200
|
+
url: GITLAB_MCP_URL,
|
|
199
201
|
headers: {
|
|
200
202
|
Authorization: `Bearer ${tokens.gitlab}`
|
|
201
203
|
}
|
|
@@ -203,11 +205,11 @@ const generateClaudeCodeMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
203
205
|
}
|
|
204
206
|
if (tokens.jira && jiraConfig?.baseUrl && jiraConfig?.email) {
|
|
205
207
|
servers.jira = {
|
|
206
|
-
command: "
|
|
207
|
-
args: ["-
|
|
208
|
+
command: "uvx",
|
|
209
|
+
args: ["mcp-atlassian"],
|
|
208
210
|
env: {
|
|
209
211
|
JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
|
|
210
|
-
|
|
212
|
+
JIRA_USERNAME: jiraConfig.email,
|
|
211
213
|
JIRA_API_TOKEN: tokens.jira
|
|
212
214
|
}
|
|
213
215
|
};
|
|
@@ -252,11 +254,11 @@ const generateKiroMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
252
254
|
}
|
|
253
255
|
if (tokens.jira && jiraConfig?.baseUrl && jiraConfig?.email) {
|
|
254
256
|
servers.jira = {
|
|
255
|
-
command: "
|
|
256
|
-
args: ["-
|
|
257
|
+
command: "uvx",
|
|
258
|
+
args: ["mcp-atlassian"],
|
|
257
259
|
env: {
|
|
258
260
|
JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
|
|
259
|
-
|
|
261
|
+
JIRA_USERNAME: jiraConfig.email,
|
|
260
262
|
JIRA_API_TOKEN: tokens.jira
|
|
261
263
|
}
|
|
262
264
|
};
|
|
@@ -294,12 +296,12 @@ http_headers = { Authorization = "Bearer ${escapedGitLabToken}" }
|
|
|
294
296
|
const escapedJiraEmail = escapeTomlString(jiraConfig.email);
|
|
295
297
|
config += `
|
|
296
298
|
[mcp_servers.jira]
|
|
297
|
-
command = "
|
|
298
|
-
args = ["-
|
|
299
|
+
command = "uvx"
|
|
300
|
+
args = ["mcp-atlassian"]
|
|
299
301
|
|
|
300
302
|
[mcp_servers.jira.env]
|
|
301
303
|
JIRA_URL = "${escapedJiraUrl}"
|
|
302
|
-
|
|
304
|
+
JIRA_USERNAME = "${escapedJiraEmail}"
|
|
303
305
|
JIRA_API_TOKEN = "${escapedJiraToken}"
|
|
304
306
|
`;
|
|
305
307
|
}
|
|
@@ -361,11 +363,11 @@ const generateVSCodeMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
361
363
|
if (tokens.jira && jiraConfig?.baseUrl && jiraConfig?.email) {
|
|
362
364
|
servers.jira = {
|
|
363
365
|
type: 'stdio',
|
|
364
|
-
command: '
|
|
365
|
-
args: ['-
|
|
366
|
+
command: 'uvx',
|
|
367
|
+
args: ['mcp-atlassian'],
|
|
366
368
|
env: {
|
|
367
369
|
JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
|
|
368
|
-
|
|
370
|
+
JIRA_USERNAME: jiraConfig.email,
|
|
369
371
|
JIRA_API_TOKEN: tokens.jira
|
|
370
372
|
}
|
|
371
373
|
};
|
|
@@ -412,11 +414,11 @@ const generateWindsurfMCPServers = (fraimKey, tokenInput, jiraConfig) => {
|
|
|
412
414
|
}
|
|
413
415
|
if (tokens.jira && jiraConfig?.baseUrl && jiraConfig?.email) {
|
|
414
416
|
servers.jira = {
|
|
415
|
-
command: '
|
|
416
|
-
args: ['-
|
|
417
|
+
command: 'uvx',
|
|
418
|
+
args: ['mcp-atlassian'],
|
|
417
419
|
env: {
|
|
418
420
|
JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
|
|
419
|
-
|
|
421
|
+
JIRA_USERNAME: jiraConfig.email,
|
|
420
422
|
JIRA_API_TOKEN: tokens.jira
|
|
421
423
|
}
|
|
422
424
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fraim-framework",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.81",
|
|
4
4
|
"description": "FRAIM v2: Framework for Rigor-based AI Management - Transform from solo developer to AI manager orchestrating production-ready code with enterprise-grade discipline",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|