@smartbear/mcp 0.1.0 → 0.1.1

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
@@ -10,30 +10,26 @@
10
10
 
11
11
  An [MCP](https://modelcontextprotocol.io) server for SmartBear's API Hub, Test Hub and Insight Hub.
12
12
 
13
- ## Build
14
-
15
- Checkout this repository and run the following to build the server:
16
-
17
- ```bash
18
- npm run build
19
- ```
20
-
21
13
  ## Usage
22
14
 
23
15
  The server is started with the API key or auth token that you use with your product(s). They are optional and can be removed from your configuration if you aren't using the product.
24
16
 
25
17
  ### VS Code
26
18
 
27
- Add the following configuration to `.vscode/mcp.json`, replacing `<PATH_TO_SMARTBEAR_MCP>` with the location of this repo on your filesystem:
19
+ Add the [`@smartbear/mcp`](https://www.npmjs.com/package/@smartbear/mcp) package to your project via NPM or via the "MCP: Add server…" command in VS Code.
20
+
21
+ If setting up manually, add the following configuration to `.vscode/mcp.json`:
28
22
 
29
23
  ```json
30
24
  {
31
25
  "servers": {
32
26
  "smartbear": {
33
27
  "type": "stdio",
34
- "command": "node",
35
- "args": ["<PATH_TO_SMARTBEAR_MCP>/dist/index.js"],
36
-
28
+ "command": "npx",
29
+ "args": [
30
+ "-y",
31
+ "@smartbear/mcp@latest"
32
+ ],
37
33
  "env": {
38
34
  "INSIGHT_HUB_AUTH_TOKEN": "${input:insight_hub_auth_token}",
39
35
  "REFLECT_API_TOKEN": "${input:reflect_api_token}",
@@ -66,10 +62,10 @@ Add the following configuration to `.vscode/mcp.json`, replacing `<PATH_TO_SMART
66
62
 
67
63
  ### MCP Inspector
68
64
 
69
- To test the MCP server locally, you can use the following command (assuming a local build of the MCP server in the same location):
65
+ To test the MCP server using the npm package, run:
70
66
 
71
67
  ```bash
72
- REFLECT_API_TOKEN=your_reflect_token INSIGHT_HUB_AUTH_TOKEN=your_insight_hub_token API_HUB_API_KEY=your_api_hub_api_key npx @modelcontextprotocol/inspector node dist/index.js
68
+ REFLECT_API_TOKEN=your_reflect_token INSIGHT_HUB_AUTH_TOKEN=your_insight_hub_token API_HUB_API_KEY=your_api_hub_api_key npx @smartbear/mcp
73
69
  ```
74
70
 
75
71
  This will open an inspector window in your browser, where you can test the tools.
@@ -90,6 +86,49 @@ See individual guides for suggested prompts and supported tools and resources:
90
86
  - [Reflect](./reflect/README.md)
91
87
  - [API Hub](./api-hub/README.md)
92
88
 
89
+ ## Local Development
90
+
91
+ If you want to build and run the MCP server from source (for development or contribution):
92
+
93
+ ### Build
94
+
95
+ Clone this repository and run:
96
+
97
+ ```bash
98
+ npm install
99
+ npm run build
100
+ ```
101
+
102
+ ### Usage (Local Build)
103
+
104
+ Update your `.vscode/mcp.json` to point to your local build:
105
+
106
+ ```json
107
+ {
108
+ "servers": {
109
+ "smartbear": {
110
+ "type": "stdio",
111
+ "command": "node",
112
+ "args": ["<PATH_TO_SMARTBEAR_MCP>/dist/index.js"],
113
+ "env": {
114
+ "INSIGHT_HUB_AUTH_TOKEN": "${input:insight_hub_auth_token}",
115
+ "REFLECT_API_TOKEN": "${input:reflect_api_token}",
116
+ "API_HUB_API_KEY": "${input:api_hub_api_key}"
117
+ }
118
+ }
119
+ },
120
+ "inputs": [
121
+ // ...same as above...
122
+ ]
123
+ }
124
+ ```
125
+
126
+ Or run the server directly:
127
+
128
+ ```bash
129
+ REFLECT_API_TOKEN=your_reflect_token INSIGHT_HUB_AUTH_TOKEN=your_insight_hub_token API_HUB_API_KEY=your_api_hub_api_key node dist/index.js
130
+ ```
131
+
93
132
  ## License
94
133
 
95
134
  This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
@@ -0,0 +1,29 @@
1
+ # API Hub
2
+
3
+ ## Environment Variables
4
+
5
+ - `API_HUB_API_KEY`: Required. The API key for API Hub MCP tools.
6
+ - `MCP_SERVER_INSIGHT_HUB_API_KEY`: Optional. If set, enables error reporting of the _MCP_server_ code via the BugSnag SDK. This is useful for debugging and monitoring of the MCP server itself and shouldn't be set to the same API key as your app.
7
+
8
+ ## Tools
9
+
10
+ 1. `list_portals`
11
+ - Search for available portals within API Hub. Only portals where you have at least a designer role, either at the product level or organization level, are returned.
12
+ 2. `create_portal`
13
+ - Create a new portal within API Hub.
14
+ 3. `get_portal`
15
+ - Retrieve information about a specific portal.
16
+ 4. `delete_portal`
17
+ - Delete a portal.
18
+ 5. `update_portal`
19
+ - Update a specific portal's configuration.
20
+ 6. `list_portal_products`
21
+ - Get products for a specific portal matching your criteria.
22
+ 7. `create_portal_product`
23
+ - Create a new product within a specific portal.
24
+ 8. `get_portal_product`
25
+ - Retrieve information about a specific product resource.
26
+ 9. `delete_portal_product`
27
+ - Delete a product from a specific portal.
28
+ 10. `update_portal_product`
29
+ - Update a product's settings within a specific portal.
@@ -0,0 +1,17 @@
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="253.9" height="179.21" viewBox="0 0 253.9 179.21">
2
+ <title>SB_Logo_Vertical_BLK_RGB</title>
3
+ <g>
4
+ <path d="M146,115.56H108l-6.75,20.79h51.55Zm102,20.79-20-61.43L241,35.24,193,0.4,159.26,24.94H94.7L60.93,0.4,13,35.24,25.87,74.92l-20,61.43h63L64,121.28l63-45.76,63,45.76-4.89,15.07h63ZM108,115.56l-6.75,20.79h51.55L146,115.56H108Zm38.05,0H108l-6.75,20.79h51.55Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
5
+ <g>
6
+ <path d="M17.86,156.7s-5.4-.62-7.64-0.62c-3.24,0-4.9,1.16-4.9,3.43,0,2.47,1.39,3,5.9,4.28,5.55,1.54,7.56,3,7.56,7.52,0,5.78-3.62,8.29-8.83,8.29a56.2,56.2,0,0,1-8.64-1l0.42-3.43s5.21,0.69,7.94.69c3.28,0,4.78-1.47,4.78-4.24,0-2.24-1.2-3-5.24-4C3.52,166.14,1,164.41,1,159.82c0-5.32,3.51-7.52,8.79-7.52a58.55,58.55,0,0,1,8.37.92Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
7
+ <path d="M29.06,152.76H36.5l5.9,20.63,5.9-20.63h7.48v26.42H51.46V156.35H51.24l-6.6,21.75H40.16l-6.6-21.75H33.34v22.83H29.06V152.76Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
8
+ <path d="M122.08,152.76h19.28v3.82h-7.44v22.6H129.6v-22.6h-7.52v-3.82Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
9
+ <path d="M160,152.76c5.24,0,8.06,2,8.06,6.86,0,3.2-1,4.78-3.12,5.94,2.28,0.89,3.78,2.51,3.78,6.13,0,5.4-3.28,7.48-8.41,7.48H150V152.76h10Zm-5.75,3.7V164h5.67c2.62,0,3.78-1.31,3.78-3.9s-1.31-3.66-3.93-3.66h-5.52Zm0,11.18v7.83h5.82c2.66,0,4.24-.85,4.24-4,0-3-2.24-3.82-4.32-3.82h-5.75Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
10
+ <path d="M179.32,152.76H196v3.74H183.6V164h10.07v3.66H183.6v7.75H196v3.78H179.32V152.76Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
11
+ <path d="M211.33,152.76h8.52l6.56,26.42h-4.32l-2-7.75H211l-2,7.75h-4.28Zm0.57,14.89h7.41l-2.73-11.3h-1.93Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
12
+ <path d="M240.22,171.35v7.83h-4.28V152.76h10c5.82,0,8.95,3.34,8.95,9.2,0,3.74-1.5,7.12-4.32,8.43l4.36,8.79h-4.71l-3.82-7.83h-6.21ZM246,156.46h-5.75v11.18H246c3.24,0,4.47-2.91,4.47-5.65C250.51,159,249,156.46,246,156.46Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
13
+ <path d="M71.64,152.76h8.52l6.56,26.42H82.39l-2-7.75h-9.1l-2,7.75H65.12Zm0.57,14.89h7.41l-2.73-11.3H75Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
14
+ <path d="M100.52,171.35v7.83H96.24V152.76h10c5.82,0,8.95,3.34,8.95,9.2,0,3.74-1.5,7.12-4.32,8.43l4.36,8.79h-4.71l-3.82-7.83h-6.21Zm5.75-14.89h-5.75v11.18h5.82c3.24,0,4.47-2.91,4.47-5.65C110.82,159,109.35,156.46,106.27,156.46Z" transform="translate(-1.05 -0.4)" fill="#2c282c"/>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="253.9" height="179.21" viewBox="0 0 253.9 179.21">
2
+ <title>SB_Logo_Vertical_WT_RGB</title>
3
+ <g>
4
+ <path d="M146,115.56H108l-6.75,20.79h51.55Zm102,20.79-20-61.43L241,35.24,193,0.4,159.26,24.94H94.7L60.93,0.4,13,35.24,25.87,74.92l-20,61.43h63L64,121.28l63-45.76,63,45.76-4.89,15.07h63ZM108,115.56l-6.75,20.79h51.55L146,115.56H108Zm38.05,0H108l-6.75,20.79h51.55Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
5
+ <g>
6
+ <path d="M17.86,156.7s-5.4-.62-7.64-0.62c-3.24,0-4.9,1.16-4.9,3.43,0,2.47,1.39,3,5.9,4.28,5.55,1.54,7.56,3,7.56,7.52,0,5.78-3.62,8.29-8.83,8.29a56.2,56.2,0,0,1-8.64-1l0.42-3.43s5.21,0.69,7.94.69c3.28,0,4.78-1.47,4.78-4.24,0-2.24-1.2-3-5.24-4C3.52,166.14,1,164.41,1,159.82c0-5.32,3.51-7.52,8.79-7.52a58.55,58.55,0,0,1,8.37.92Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
7
+ <path d="M29.06,152.76H36.5l5.9,20.63,5.9-20.63h7.48v26.42H51.46V156.35H51.24l-6.6,21.75H40.16l-6.6-21.75H33.34v22.83H29.06V152.76Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
8
+ <path d="M122.08,152.76h19.28v3.82h-7.44v22.6H129.6v-22.6h-7.52v-3.82Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
9
+ <path d="M160,152.76c5.24,0,8.06,2,8.06,6.86,0,3.2-1,4.78-3.12,5.94,2.28,0.89,3.78,2.51,3.78,6.13,0,5.4-3.28,7.48-8.41,7.48H150V152.76h10Zm-5.75,3.7V164h5.67c2.62,0,3.78-1.31,3.78-3.9s-1.31-3.66-3.93-3.66h-5.52Zm0,11.18v7.83h5.82c2.66,0,4.24-.85,4.24-4,0-3-2.24-3.82-4.32-3.82h-5.75Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
10
+ <path d="M179.32,152.76H196v3.74H183.6V164h10.07v3.66H183.6v7.75H196v3.78H179.32V152.76Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
11
+ <path d="M211.33,152.76h8.52l6.56,26.42h-4.32l-2-7.75H211l-2,7.75h-4.28Zm0.57,14.89h7.41l-2.73-11.3h-1.93Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
12
+ <path d="M240.22,171.35v7.83h-4.28V152.76h10c5.82,0,8.95,3.34,8.95,9.2,0,3.74-1.5,7.12-4.32,8.43l4.36,8.79h-4.71l-3.82-7.83h-6.21ZM246,156.46h-5.75v11.18H246c3.24,0,4.47-2.91,4.47-5.65C250.51,159,249,156.46,246,156.46Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
13
+ <path d="M71.64,152.76h8.52l6.56,26.42H82.39l-2-7.75h-9.1l-2,7.75H65.12Zm0.57,14.89h7.41l-2.73-11.3H75Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
14
+ <path d="M100.52,171.35v7.83H96.24V152.76h10c5.82,0,8.95,3.34,8.95,9.2,0,3.74-1.5,7.12-4.32,8.43l4.36,8.79h-4.71l-3.82-7.83h-6.21Zm5.75-14.89h-5.75v11.18h5.82c3.24,0,4.47-2.91,4.47-5.65C110.82,159,109.35,156.46,106.27,156.46Z" transform="translate(-1.05 -0.4)" fill="#fff"/>
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -114,7 +114,7 @@ export class ApiHubClient {
114
114
  content: [{ type: "text", text: "Portal deleted successfully." }],
115
115
  };
116
116
  });
117
- server.tool("update_portal", "Update a specifc portal's configuration", {
117
+ server.tool("update_portal", "Update a specific portal's configuration", {
118
118
  portalId: z.string().describe("Portal UUID or subdomain."),
119
119
  name: z.string().optional().describe("The portal name."),
120
120
  subdomain: z.string().optional().describe("The portal subdomain."),
package/dist/package.json CHANGED
@@ -1,14 +1,28 @@
1
1
  {
2
2
  "name": "@smartbear/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MCP server for interacting SmartBear Products",
5
+ "keywords": [
6
+ "smartbear",
7
+ "mcp",
8
+ "insight-hub",
9
+ "reflect",
10
+ "api-hub"
11
+ ],
12
+ "homepage": "https://developer.smartbear.com/smartbear-mcp",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git@github.com:SmartBear/smartbear-mcp.git"
16
+ },
5
17
  "license": "MIT",
6
18
  "type": "module",
7
19
  "bin": {
8
- "mcp-server-smartbear": "dist/index.js"
20
+ "mcp": "dist/index.js"
9
21
  },
10
22
  "files": [
11
- "dist"
23
+ "dist",
24
+ "assets",
25
+ "**/README.md"
12
26
  ],
13
27
  "config": {
14
28
  "mcpServerName": "SmartBear MCP Server"
@@ -8,7 +8,7 @@ export class ReflectClient {
8
8
  "Content-Type": "application/json",
9
9
  };
10
10
  }
11
- async listReflectSuits() {
11
+ async listReflectSuites() {
12
12
  const response = await fetch("https://api.reflect.run/v1/suites", {
13
13
  method: "GET",
14
14
  headers: this.headers,
@@ -66,7 +66,7 @@ export class ReflectClient {
66
66
  }
67
67
  registerTools(server) {
68
68
  server.tool("list_reflect_suites", "List all reflect suites", {}, async (_args, _extra) => {
69
- const response = await this.listReflectSuits();
69
+ const response = await this.listReflectSuites();
70
70
  return {
71
71
  content: [{ type: "text", text: JSON.stringify(response) }],
72
72
  };
@@ -0,0 +1,36 @@
1
+ # Insight Hub
2
+
3
+ Fetch details of your app crashes and errors from your [Insight Hub](https://www.smartbear.com/insight-hub) dashboard for your LLM to help you diagnose and fix.
4
+
5
+ ## Example prompts
6
+
7
+ - "Help me fix this crash from Insight Hub: https://app.bugsnag.com/my-org/my-project/errors/1a2b3c4d5e6f7g8h9i0j1k2l?&event_id=1a2b3c4d5e6f7g8h9i0j1k2l"
8
+ - "What are my top events for the 'example' project in insight hub?"
9
+
10
+ ## Environment Variables
11
+
12
+ - `INSIGHT_HUB_AUTH_TOKEN`: Required for this client. The auth token for your account from your Insight Hub dashboard, under **Personal auth tokens** in user settings.
13
+ - `MCP_SERVER_INSIGHT_HUB_API_KEY`: Optional. If set, enables error reporting of the _MCP_server_ code via the BugSnag SDK. This is useful for debugging and monitoring of the MCP server itself and shouldn't be set to the same API key as your app.
14
+
15
+ ## Tools
16
+
17
+ 1. `list_insight_hub_projects`
18
+ - List all projects in an organization.
19
+ 2. `get_insight_hub_error`
20
+ - Get error details from a project.
21
+ 3. `get_insight_hub_error_latest_event`
22
+ - Get the latest event for an error.
23
+ 4. `get_insight_hub_event_details`
24
+ - Get details of a specific event on Insight Hub.
25
+
26
+ ## Resources
27
+
28
+ - **insight_hub_orgs**
29
+ - URI: `insighthub://orgs`
30
+ - Description: Lists all organizations available to your Insight Hub account in JSON format.
31
+ - Example usage: Retrieve a list of all organizations to get their IDs for use with other tools.
32
+
33
+ - **insight_hub_event**
34
+ - URI Template: `insighthub://event/{id}`
35
+ - Description: Fetches details for a specific event by its event ID. Returns the event details in JSON format.
36
+ - Example usage: Retrieve event details for debugging or analysis by referencing the event ID.
package/package.json CHANGED
@@ -1,14 +1,28 @@
1
1
  {
2
2
  "name": "@smartbear/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MCP server for interacting SmartBear Products",
5
+ "keywords": [
6
+ "smartbear",
7
+ "mcp",
8
+ "insight-hub",
9
+ "reflect",
10
+ "api-hub"
11
+ ],
12
+ "homepage": "https://developer.smartbear.com/smartbear-mcp",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git@github.com:SmartBear/smartbear-mcp.git"
16
+ },
5
17
  "license": "MIT",
6
18
  "type": "module",
7
19
  "bin": {
8
- "mcp-server-smartbear": "dist/index.js"
20
+ "mcp": "dist/index.js"
9
21
  },
10
22
  "files": [
11
- "dist"
23
+ "dist",
24
+ "assets",
25
+ "**/README.md"
12
26
  ],
13
27
  "config": {
14
28
  "mcpServerName": "SmartBear MCP Server"
@@ -0,0 +1,25 @@
1
+ # Reflect
2
+
3
+ ## Environment Variables
4
+
5
+ - `REFLECT_API_TOKEN`: Required. The Reflect Account API Key.
6
+ - `MCP_SERVER_INSIGHT_HUB_API_KEY`: Optional. If set, enables error reporting of the _MCP_server_ code via the BugSnag SDK. This is useful for debugging and monitoring of the MCP server itself and shouldn't be set to the same API key as your app.
7
+
8
+ ## Tools
9
+
10
+ 1. `list_reflect_suites`
11
+ - List all Reflect suites for your account.
12
+ 2. `list_reflect_suite_executions`
13
+ - List all executions for a given Reflect suite.
14
+ 3. `reflect_suite_execution_status`
15
+ - Get the status of a Reflect suite execution.
16
+ 4. `reflect_suite_execution`
17
+ - Execute a Reflect suite.
18
+ 5. `cancel_reflect_suite_execution`
19
+ - Cancel a Reflect suite execution.
20
+ 6. `list_reflect_tests`
21
+ - List all Reflect tests.
22
+ 7. `run_reflect_test`
23
+ - Run a Reflect test.
24
+ 8. `reflect_test_status`
25
+ - Get the status of a Reflect test execution.