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 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": "npx",
310
- "args": ["-y", "@modelcontextprotocol/server-jira"],
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 configuration format**: If you see `https://mcp.atlassian.com/v1/sse` in your config, this is incorrect. Run `fraim setup --jira` to update.
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 `npx` runs the Jira MCP server, it downloads the package. This is normal and only happens once.
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: "npx",
133
- args: ["-y", "@modelcontextprotocol/server-jira"],
132
+ command: "uvx",
133
+ args: ["mcp-atlassian"],
134
134
  env: {
135
135
  JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
136
- JIRA_EMAIL: jiraConfig.email,
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
- serverUrl: GITHUB_MCP_URL,
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
- serverUrl: GITLAB_MCP_URL,
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: "npx",
207
- args: ["-y", "@modelcontextprotocol/server-jira"],
208
+ command: "uvx",
209
+ args: ["mcp-atlassian"],
208
210
  env: {
209
211
  JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
210
- JIRA_EMAIL: jiraConfig.email,
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: "npx",
256
- args: ["-y", "@modelcontextprotocol/server-jira"],
257
+ command: "uvx",
258
+ args: ["mcp-atlassian"],
257
259
  env: {
258
260
  JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
259
- JIRA_EMAIL: jiraConfig.email,
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 = "npx"
298
- args = ["-y", "@modelcontextprotocol/server-jira"]
299
+ command = "uvx"
300
+ args = ["mcp-atlassian"]
299
301
 
300
302
  [mcp_servers.jira.env]
301
303
  JIRA_URL = "${escapedJiraUrl}"
302
- JIRA_EMAIL = "${escapedJiraEmail}"
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: 'npx',
365
- args: ['-y', '@modelcontextprotocol/server-jira'],
366
+ command: 'uvx',
367
+ args: ['mcp-atlassian'],
366
368
  env: {
367
369
  JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
368
- JIRA_EMAIL: jiraConfig.email,
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: 'npx',
416
- args: ['-y', '@modelcontextprotocol/server-jira'],
417
+ command: 'uvx',
418
+ args: ['mcp-atlassian'],
417
419
  env: {
418
420
  JIRA_URL: jiraConfig.baseUrl.startsWith('http') ? jiraConfig.baseUrl : `https://${jiraConfig.baseUrl}`,
419
- JIRA_EMAIL: jiraConfig.email,
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.80",
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": {