@qubiton/mcp-server 0.2.0-dev.1608
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 +205 -0
- package/build/index.d.ts +19 -0
- package/build/index.js +191 -0
- package/build/index.js.map +1 -0
- package/package.json +42 -0
package/README.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# @qubiton/mcp-server
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for the [QubitOn API](https://www.qubiton.com) by QubitOn. Provides Claude Desktop with access to 37 tools, 20 prompts, and 7 resources via stdio.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
Add to your `claude_desktop_config.json`:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"qubiton": {
|
|
13
|
+
"command": "npx",
|
|
14
|
+
"args": ["-y", "@qubiton/mcp-server"],
|
|
15
|
+
"env": {
|
|
16
|
+
"QUBITON_API_KEY": "svm..."
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Then restart Claude Desktop. The tools, prompts, and resources will appear automatically.
|
|
24
|
+
|
|
25
|
+
## Client Configurations
|
|
26
|
+
|
|
27
|
+
### Cursor
|
|
28
|
+
|
|
29
|
+
Add to `~/.cursor/mcp.json`:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"mcpServers": {
|
|
34
|
+
"qubiton": {
|
|
35
|
+
"command": "npx",
|
|
36
|
+
"args": ["-y", "@qubiton/mcp-server"],
|
|
37
|
+
"env": {
|
|
38
|
+
"QUBITON_API_KEY": "svm..."
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### VS Code
|
|
46
|
+
|
|
47
|
+
Add to `.vscode/mcp.json` in your project root:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcp": {
|
|
52
|
+
"servers": {
|
|
53
|
+
"qubiton": {
|
|
54
|
+
"command": "npx",
|
|
55
|
+
"args": ["-y", "@qubiton/mcp-server"],
|
|
56
|
+
"env": {
|
|
57
|
+
"QUBITON_API_KEY": "svm..."
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Windsurf
|
|
66
|
+
|
|
67
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"qubiton": {
|
|
73
|
+
"command": "npx",
|
|
74
|
+
"args": ["-y", "@qubiton/mcp-server"],
|
|
75
|
+
"env": {
|
|
76
|
+
"QUBITON_API_KEY": "svm..."
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Cline
|
|
84
|
+
|
|
85
|
+
Add to VS Code settings under `cline.mcpServers`:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"mcpServers": {
|
|
90
|
+
"qubiton": {
|
|
91
|
+
"command": "npx",
|
|
92
|
+
"args": ["-y", "@qubiton/mcp-server"],
|
|
93
|
+
"env": {
|
|
94
|
+
"QUBITON_API_KEY": "svm..."
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## How It Works
|
|
102
|
+
|
|
103
|
+
This package is a lightweight stdio-to-HTTP bridge. It connects to the QubitOn MCP server at `https://mcp.qubiton.com/mcp`, discovers available tools, prompts, and resources, and re-exposes them locally via stdio for Claude Desktop.
|
|
104
|
+
|
|
105
|
+
## Authentication
|
|
106
|
+
|
|
107
|
+
Two authentication methods are supported:
|
|
108
|
+
|
|
109
|
+
### API Key (recommended)
|
|
110
|
+
|
|
111
|
+
Set the `QUBITON_API_KEY` environment variable with your API key (starts with `svm`). The key is sent via the `apikey` header on every request.
|
|
112
|
+
|
|
113
|
+
### OAuth2 Bearer Token
|
|
114
|
+
|
|
115
|
+
If you have an OAuth2 token from `POST /api/oauth/token` (client_credentials grant), set `QUBITON_TOKEN`. The token is sent via the `Authorization: Bearer` header. Both can be set simultaneously — the API key is always required, and the Bearer token provides additional identity context.
|
|
116
|
+
|
|
117
|
+
## Environment Variables
|
|
118
|
+
|
|
119
|
+
| Variable | Required | Default | Description |
|
|
120
|
+
|----------|----------|---------|-------------|
|
|
121
|
+
| `QUBITON_API_KEY` | Yes | — | Your API key (starts with `svm`) |
|
|
122
|
+
| `QUBITON_TOKEN` | No | — | OAuth2 Bearer token for additional auth |
|
|
123
|
+
| `QUBITON_BASE_URL` | No | `https://mcp.qubiton.com` | Override the MCP server base URL |
|
|
124
|
+
|
|
125
|
+
## Available Tools (37)
|
|
126
|
+
|
|
127
|
+
The server exposes all tools from the QubitOn API across 9 categories:
|
|
128
|
+
|
|
129
|
+
- **Core Validation** — Address, tax ID, bank account, email, phone, business registration
|
|
130
|
+
- **Compliance** — Sanctions (OFAC/EU/UN), PEP screening, disqualified directors, EPA prosecution, healthcare exclusion
|
|
131
|
+
- **Risk & Financial** — Bankruptcy risk, credit score, fail rate, entity risk, credit analysis
|
|
132
|
+
- **ESG & Cybersecurity** — ESG scores, domain security, IP quality
|
|
133
|
+
- **Corporate Structure** — Beneficial ownership, corporate hierarchy, DUNS number, parent-child hierarchy
|
|
134
|
+
- **Industry Specific** — NPI, Medpass, DOT carrier, India identity, certifications, business classification
|
|
135
|
+
- **Financial Operations** — Payment terms analysis, currency exchange rates
|
|
136
|
+
- **Ariba** — Supplier profile lookup, supplier profile validation
|
|
137
|
+
- **Other** — Gender identification
|
|
138
|
+
|
|
139
|
+
## Available Prompts (20)
|
|
140
|
+
|
|
141
|
+
Pre-built prompt templates for common business workflows:
|
|
142
|
+
|
|
143
|
+
- **Onboarding** (5) — New third-party onboarding, quick identity check, international entity verification, India entity verification, master data cleansing
|
|
144
|
+
- **Compliance** (5) — Sanctions screening, anti-corruption check, healthcare compliance, director due diligence, supplier diversity check
|
|
145
|
+
- **Risk** (5) — Comprehensive due diligence, financial stability assessment, ESG assessment, cybersecurity assessment, corporate structure analysis
|
|
146
|
+
- **Payment** (5) — Bank fraud prevention, pre-payment verification, payment optimization, periodic revalidation, transportation carrier check
|
|
147
|
+
|
|
148
|
+
## Available Resources (7)
|
|
149
|
+
|
|
150
|
+
Reference datasets accessible to AI models:
|
|
151
|
+
|
|
152
|
+
- **tool_inventory** — Complete tool catalog organized by category
|
|
153
|
+
- **entity_risk_categories** — Risk category definitions
|
|
154
|
+
- **healthcare_types** — HCO/HCP entity types
|
|
155
|
+
- **india_identity_types** — PAN, Aadhaar, GSTIN, TAN, CIN formats
|
|
156
|
+
- **certification_types** — Diversity and small business certifications
|
|
157
|
+
- **supported_countries** — Country coverage by validation type
|
|
158
|
+
- **about** — API and company overview
|
|
159
|
+
|
|
160
|
+
## MCP Protocol Support
|
|
161
|
+
|
|
162
|
+
This server implements the full [Model Context Protocol](https://modelcontextprotocol.io) specification, exposing the QubitOn API as 37 tools, 20 prompts, and 7 resources via stdio.
|
|
163
|
+
|
|
164
|
+
### Summary
|
|
165
|
+
|
|
166
|
+
| Category | Count | Description |
|
|
167
|
+
|----------|-------|-------------|
|
|
168
|
+
| MCP Tools | 37 | 1:1 mapped to API endpoints — same auth, rate limits, and plan access |
|
|
169
|
+
| MCP Prompts | 20 | Multi-tool workflow templates (onboarding, compliance, risk, payment) |
|
|
170
|
+
| MCP Resources | 7 | Reference datasets (tool inventory, risk categories, country coverage) |
|
|
171
|
+
|
|
172
|
+
Prompts may be plan-gated. See [Pricing](https://www.qubiton.com/pricing) for details.
|
|
173
|
+
|
|
174
|
+
### Discovery Endpoints
|
|
175
|
+
|
|
176
|
+
- [MCP Manifest](https://mcp.qubiton.com/.well-known/mcp.json) -- machine-readable server metadata
|
|
177
|
+
- [Resource Content](https://mcp.qubiton.com/api/portal/mcp/resources/{name}) -- fetch any resource by name
|
|
178
|
+
|
|
179
|
+
### Accessing Resource Content
|
|
180
|
+
|
|
181
|
+
Resources are also available over plain HTTP for non-MCP clients:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
curl https://mcp.qubiton.com/api/portal/mcp/resources/tool_inventory
|
|
185
|
+
curl https://mcp.qubiton.com/api/portal/mcp/resources/supported_countries
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Available resources: `tool_inventory`, `entity_risk_categories`, `healthcare_types`, `india_identity_types`, `certification_types`, `supported_countries`, `about`.
|
|
189
|
+
|
|
190
|
+
## Getting an API Key
|
|
191
|
+
|
|
192
|
+
1. Sign up for a free account at [www.qubiton.com](https://www.qubiton.com/auth/register)
|
|
193
|
+
2. Navigate to Dashboard > API Keys
|
|
194
|
+
3. Copy your API key
|
|
195
|
+
|
|
196
|
+
## Development
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
npm install
|
|
200
|
+
npm run build
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
MIT
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* QubitOn MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Stdio-to-HTTP bridge that proxies MCP requests from Claude Desktop
|
|
6
|
+
* to the QubitOn MCP server at mcp.qubiton.com/mcp.
|
|
7
|
+
*
|
|
8
|
+
* Install in claude_desktop_config.json:
|
|
9
|
+
* {
|
|
10
|
+
* "mcpServers": {
|
|
11
|
+
* "qubiton": {
|
|
12
|
+
* "command": "npx",
|
|
13
|
+
* "args": ["-y", "@qubiton/mcp-server"],
|
|
14
|
+
* "env": { "QUBITON_API_KEY": "svm..." }
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
package/build/index.js
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* QubitOn MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Stdio-to-HTTP bridge that proxies MCP requests from Claude Desktop
|
|
6
|
+
* to the QubitOn MCP server at mcp.qubiton.com/mcp.
|
|
7
|
+
*
|
|
8
|
+
* Install in claude_desktop_config.json:
|
|
9
|
+
* {
|
|
10
|
+
* "mcpServers": {
|
|
11
|
+
* "qubiton": {
|
|
12
|
+
* "command": "npx",
|
|
13
|
+
* "args": ["-y", "@qubiton/mcp-server"],
|
|
14
|
+
* "env": { "QUBITON_API_KEY": "svm..." }
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
20
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
21
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
22
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
23
|
+
const DEFAULT_BASE_URL = "https://mcp.qubiton.com";
|
|
24
|
+
// Reconnect config
|
|
25
|
+
const INITIAL_DELAY_MS = 1000;
|
|
26
|
+
const MAX_DELAY_MS = 60_000;
|
|
27
|
+
const BACKOFF_MULTIPLIER = 2;
|
|
28
|
+
const JITTER_FACTOR = 0.2;
|
|
29
|
+
const HEALTH_CHECK_INTERVAL_MS = 30_000;
|
|
30
|
+
function log(message) {
|
|
31
|
+
process.stderr.write(`[qubiton-mcp] ${message}\n`);
|
|
32
|
+
}
|
|
33
|
+
let remoteClient;
|
|
34
|
+
let reconnecting = false;
|
|
35
|
+
let healthCheckTimer;
|
|
36
|
+
function createTransport(mcpUrl, apiKey, bearerToken) {
|
|
37
|
+
const headers = { apikey: apiKey };
|
|
38
|
+
if (bearerToken) {
|
|
39
|
+
headers["Authorization"] = `Bearer ${bearerToken}`;
|
|
40
|
+
}
|
|
41
|
+
return new StreamableHTTPClientTransport(mcpUrl, {
|
|
42
|
+
requestInit: { headers },
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function connectWithRetry(mcpUrl, apiKey, bearerToken) {
|
|
46
|
+
let delay = INITIAL_DELAY_MS;
|
|
47
|
+
for (;;) {
|
|
48
|
+
try {
|
|
49
|
+
const transport = createTransport(mcpUrl, apiKey, bearerToken);
|
|
50
|
+
const client = new Client({
|
|
51
|
+
name: "qubiton-mcp-bridge",
|
|
52
|
+
version: "0.2.0",
|
|
53
|
+
});
|
|
54
|
+
await client.connect(transport);
|
|
55
|
+
return client;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
log(`Connection failed: ${message}. Retrying in ${Math.round(delay / 1000)}s...`);
|
|
60
|
+
// Apply jitter: delay ± 20%
|
|
61
|
+
const jitter = delay * JITTER_FACTOR * (2 * Math.random() - 1);
|
|
62
|
+
await new Promise((resolve) => setTimeout(resolve, delay + jitter));
|
|
63
|
+
delay = Math.min(delay * BACKOFF_MULTIPLIER, MAX_DELAY_MS);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function startHealthCheck(mcpUrl, apiKey, bearerToken) {
|
|
68
|
+
if (healthCheckTimer)
|
|
69
|
+
clearInterval(healthCheckTimer);
|
|
70
|
+
healthCheckTimer = setInterval(async () => {
|
|
71
|
+
try {
|
|
72
|
+
await remoteClient.listTools();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
log("Health check failed — remote server unreachable, reconnecting...");
|
|
76
|
+
reconnecting = true;
|
|
77
|
+
try {
|
|
78
|
+
remoteClient = await connectWithRetry(mcpUrl, apiKey, bearerToken);
|
|
79
|
+
reconnecting = false;
|
|
80
|
+
log("Reconnected to remote MCP server");
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
84
|
+
log(`Reconnection failed: ${message}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}, HEALTH_CHECK_INTERVAL_MS);
|
|
88
|
+
}
|
|
89
|
+
async function main() {
|
|
90
|
+
const apiKey = process.env.QUBITON_API_KEY;
|
|
91
|
+
const bearerToken = process.env.QUBITON_TOKEN;
|
|
92
|
+
if (!apiKey) {
|
|
93
|
+
log("ERROR: QUBITON_API_KEY environment variable is required");
|
|
94
|
+
log("Get your API key at https://www.qubiton.com/dashboard/api-keys");
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
const baseUrl = process.env.QUBITON_BASE_URL ?? DEFAULT_BASE_URL;
|
|
98
|
+
const mcpUrl = new URL("/mcp", baseUrl);
|
|
99
|
+
log(`Connecting to ${mcpUrl.toString()}`);
|
|
100
|
+
// Connect to the remote MCP server with retry
|
|
101
|
+
remoteClient = await connectWithRetry(mcpUrl, apiKey, bearerToken);
|
|
102
|
+
log("Connected to remote MCP server");
|
|
103
|
+
// List available tools from the remote server
|
|
104
|
+
const { tools: remoteTools } = await remoteClient.listTools();
|
|
105
|
+
log(`Discovered ${remoteTools.length} tools from remote server`);
|
|
106
|
+
// Create local MCP server that re-exposes the remote tools
|
|
107
|
+
const localServer = new McpServer({
|
|
108
|
+
name: "qubiton",
|
|
109
|
+
version: "0.2.0",
|
|
110
|
+
});
|
|
111
|
+
// Register each remote tool locally
|
|
112
|
+
for (const tool of remoteTools) {
|
|
113
|
+
const inputSchema = tool.inputSchema;
|
|
114
|
+
localServer.tool(tool.name, tool.description ?? "", inputSchema.properties
|
|
115
|
+
? Object.fromEntries(Object.entries(inputSchema.properties).map(([key, schema]) => [
|
|
116
|
+
key,
|
|
117
|
+
schema,
|
|
118
|
+
]))
|
|
119
|
+
: {}, async (args) => {
|
|
120
|
+
if (reconnecting) {
|
|
121
|
+
return {
|
|
122
|
+
content: [{ type: "text", text: "Error: Server is reconnecting. Please try again shortly." }],
|
|
123
|
+
isError: true,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const result = await remoteClient.callTool({
|
|
128
|
+
name: tool.name,
|
|
129
|
+
arguments: args,
|
|
130
|
+
});
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
135
|
+
return {
|
|
136
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
137
|
+
isError: true,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Discover and bridge prompts
|
|
143
|
+
try {
|
|
144
|
+
const { prompts: remotePrompts } = await remoteClient.listPrompts();
|
|
145
|
+
log(`Discovered ${remotePrompts.length} prompts from remote server`);
|
|
146
|
+
for (const prompt of remotePrompts) {
|
|
147
|
+
localServer.prompt(prompt.name, prompt.description ?? "", async () => {
|
|
148
|
+
if (reconnecting) {
|
|
149
|
+
return { messages: [{ role: "user", content: { type: "text", text: "Error: Server is reconnecting. Please try again shortly." } }] };
|
|
150
|
+
}
|
|
151
|
+
const result = await remoteClient.getPrompt({
|
|
152
|
+
name: prompt.name,
|
|
153
|
+
});
|
|
154
|
+
return result;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
log("Remote server does not support prompts, skipping");
|
|
160
|
+
}
|
|
161
|
+
// Discover and bridge resources
|
|
162
|
+
try {
|
|
163
|
+
const { resources: remoteResources } = await remoteClient.listResources();
|
|
164
|
+
log(`Discovered ${remoteResources.length} resources from remote server`);
|
|
165
|
+
for (const resource of remoteResources) {
|
|
166
|
+
localServer.resource(resource.name, resource.uri, async (uri) => {
|
|
167
|
+
if (reconnecting) {
|
|
168
|
+
return { contents: [{ text: "Error: Server is reconnecting. Please try again shortly.", uri: uri.href, mimeType: "text/plain" }] };
|
|
169
|
+
}
|
|
170
|
+
const result = await remoteClient.readResource({
|
|
171
|
+
uri: uri.href,
|
|
172
|
+
});
|
|
173
|
+
return result;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
log("Remote server does not support resources, skipping");
|
|
179
|
+
}
|
|
180
|
+
// Start health check
|
|
181
|
+
startHealthCheck(mcpUrl, apiKey, bearerToken);
|
|
182
|
+
// Start the local stdio transport
|
|
183
|
+
const stdioTransport = new StdioServerTransport();
|
|
184
|
+
await localServer.connect(stdioTransport);
|
|
185
|
+
log("MCP server running on stdio");
|
|
186
|
+
}
|
|
187
|
+
main().catch((err) => {
|
|
188
|
+
log(`Fatal error: ${err instanceof Error ? err.message : String(err)}`);
|
|
189
|
+
process.exit(1);
|
|
190
|
+
});
|
|
191
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qubiton/mcp-server",
|
|
3
|
+
"version": "0.2.0-dev.1608",
|
|
4
|
+
"description": "MCP server for the QubitOn API by QubitOn — stdio proxy to the production MCP endpoint",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"qubiton-mcp": "./build/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"build"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"typecheck": "tsc --noEmit"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"mcp",
|
|
21
|
+
"model-context-protocol",
|
|
22
|
+
"claude",
|
|
23
|
+
"qubiton",
|
|
24
|
+
"QubitOn",
|
|
25
|
+
"validation",
|
|
26
|
+
"enrichment"
|
|
27
|
+
],
|
|
28
|
+
"author": "QubitOn <support@qubiton.com>",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/qubitonhq/qubiton-mcp"
|
|
33
|
+
},
|
|
34
|
+
"homepage": "https://www.qubiton.com",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@modelcontextprotocol/sdk": "^1.12.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"typescript": "~5.7.0",
|
|
40
|
+
"@types/node": "^22.0.0"
|
|
41
|
+
}
|
|
42
|
+
}
|