@oobe-protocol-labs/sap-mcp-server 0.1.0 → 0.2.0
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/CHANGELOG.md +39 -1
- package/README.md +21 -2
- package/USER_DOCS/00_START_HERE.md +130 -0
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +106 -0
- package/USER_DOCS/02_LOCAL_STDIO_MCP.md +91 -0
- package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +212 -0
- package/USER_DOCS/04_CLIENT_CONFIGS.md +73 -0
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +81 -0
- package/assets/explorer_logo.png +0 -0
- package/dist/bin/sap-mcp-remote.d.ts +3 -0
- package/dist/bin/sap-mcp-remote.d.ts.map +1 -0
- package/dist/bin/sap-mcp-remote.js +10 -0
- package/dist/bin/sap-mcp-remote.js.map +1 -0
- package/dist/bin/sap-mcp-server.d.ts +3 -0
- package/dist/bin/sap-mcp-server.d.ts.map +1 -0
- package/dist/bin/sap-mcp-server.js +9 -0
- package/dist/bin/sap-mcp-server.js.map +1 -0
- package/dist/config/env.d.ts +14 -14
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +30 -7
- package/dist/config/env.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +61 -3
- package/dist/core/logger.js.map +1 -1
- package/dist/payments/monetization-gate.d.ts +6 -1
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +25 -8
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/oobe-facilitator-server.js +2 -2
- package/dist/payments/oobe-facilitator-server.js.map +1 -1
- package/dist/payments/pay-sh-spec.d.ts.map +1 -1
- package/dist/payments/pay-sh-spec.js +2 -1
- package/dist/payments/pay-sh-spec.js.map +1 -1
- package/dist/payments/usage-ledger.d.ts +9 -1
- package/dist/payments/usage-ledger.d.ts.map +1 -1
- package/dist/payments/usage-ledger.js +29 -1
- package/dist/payments/usage-ledger.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +2 -2
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/remote/rate-limiter.d.ts +57 -0
- package/dist/remote/rate-limiter.d.ts.map +1 -0
- package/dist/remote/rate-limiter.js +127 -0
- package/dist/remote/rate-limiter.js.map +1 -0
- package/dist/remote/server.d.ts +68 -0
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +297 -19
- package/dist/remote/server.js.map +1 -1
- package/dist/resources/current/sap-current-config.resource.js +2 -2
- package/dist/resources/current/sap-current-config.resource.js.map +1 -1
- package/dist/resources/stats/sap-network-stats.resource.js +2 -2
- package/dist/resources/stats/sap-network-stats.resource.js.map +1 -1
- package/dist/runtime/module-resolution.d.ts +6 -0
- package/dist/runtime/module-resolution.d.ts.map +1 -0
- package/dist/runtime/module-resolution.js +30 -0
- package/dist/runtime/module-resolution.js.map +1 -0
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +25 -0
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/server/server-metadata.d.ts +1 -0
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +3 -2
- package/dist/server/server-metadata.js.map +1 -1
- package/dist/tools/chat-tools.d.ts +14 -0
- package/dist/tools/chat-tools.d.ts.map +1 -0
- package/dist/tools/chat-tools.js +697 -0
- package/dist/tools/chat-tools.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +178 -2
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/profile-tools.d.ts.map +1 -1
- package/dist/tools/profile-tools.js +3 -2
- package/dist/tools/profile-tools.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +3 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-network-stats.tool.js +2 -2
- package/dist/tools/sap-network-stats.tool.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +34 -1
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/transports/http.js +3 -3
- package/dist/transports/http.js.map +1 -1
- package/docs/00_README.md +4 -0
- package/docs/01_PRODUCT_OVERVIEW.md +2 -1
- package/docs/02_ARCHITECTURE_AND_REQUEST_FLOW.md +1 -1
- package/docs/05_REMOTE_VPS_DEPLOYMENT.md +13 -0
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +6 -1
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +2 -1
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +13 -2
- package/docs/11_CODE_QUALITY_AUDIT.md +1 -1
- package/docs/12_ONCHAIN_AGENT_CHAT.md +178 -0
- package/package.json +24 -21
- package/skills/README.md +1 -0
- package/skills/sap-agent-chat/SKILL.md +71 -0
- package/skills/sap-mcp/SKILL.md +3 -2
- package/vendor/bigint-buffer/LICENSE +1 -0
- package/vendor/bigint-buffer/README.md +8 -0
- package/vendor/bigint-buffer/dist/browser.js +3 -0
- package/vendor/bigint-buffer/dist/index.d.ts +35 -0
- package/vendor/bigint-buffer/dist/node.js +62 -0
- package/vendor/bigint-buffer/package.json +20 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name RemoteRateLimiter
|
|
3
|
+
* @description Per-client rolling-window limiter for hosted MCP traffic with optional Redis backing.
|
|
4
|
+
*/
|
|
5
|
+
import { Redis } from 'ioredis';
|
|
6
|
+
import { logger } from '../core/logger.js';
|
|
7
|
+
const WINDOW_SECONDS = 60;
|
|
8
|
+
const WINDOW_MS = WINDOW_SECONDS * 1000;
|
|
9
|
+
/**
|
|
10
|
+
* @name RemoteRateLimiter
|
|
11
|
+
* @description Shared Redis-backed limiter when configured, with an in-memory fallback for single-process deployments.
|
|
12
|
+
*/
|
|
13
|
+
export class RemoteRateLimiter {
|
|
14
|
+
config;
|
|
15
|
+
localEntries = new Map();
|
|
16
|
+
redis;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.config = config;
|
|
19
|
+
if (config.redisUrl) {
|
|
20
|
+
this.redis = new Redis(config.redisUrl, {
|
|
21
|
+
lazyConnect: true,
|
|
22
|
+
maxRetriesPerRequest: 2,
|
|
23
|
+
enableOfflineQueue: false,
|
|
24
|
+
});
|
|
25
|
+
this.redis.on('error', (error) => {
|
|
26
|
+
logger.warn('Remote rate limiter Redis error', { error });
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @name initialize
|
|
32
|
+
* @description Establishes the optional Redis connection before accepting traffic.
|
|
33
|
+
*/
|
|
34
|
+
async initialize() {
|
|
35
|
+
if (!this.redis) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
await this.redis.connect();
|
|
39
|
+
logger.info('Remote rate limiter using Redis backend');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* @name check
|
|
43
|
+
* @description Checks and increments the rolling counter for a caller key.
|
|
44
|
+
*/
|
|
45
|
+
async check(clientKey) {
|
|
46
|
+
if (!this.config.enabled || this.config.requestsPerMinute <= 0) {
|
|
47
|
+
return {
|
|
48
|
+
allowed: true,
|
|
49
|
+
limit: Number.POSITIVE_INFINITY,
|
|
50
|
+
remaining: Number.POSITIVE_INFINITY,
|
|
51
|
+
resetSeconds: WINDOW_SECONDS,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (this.redis) {
|
|
55
|
+
return this.checkRedis(clientKey);
|
|
56
|
+
}
|
|
57
|
+
return this.checkLocal(clientKey);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* @name close
|
|
61
|
+
* @description Closes the optional Redis connection.
|
|
62
|
+
*/
|
|
63
|
+
async close() {
|
|
64
|
+
await this.redis?.quit();
|
|
65
|
+
}
|
|
66
|
+
async checkRedis(clientKey) {
|
|
67
|
+
const key = `${this.config.keyPrefix}${clientKey}`;
|
|
68
|
+
const count = await this.redis?.incr(key) ?? 1;
|
|
69
|
+
if (count === 1) {
|
|
70
|
+
await this.redis?.expire(key, WINDOW_SECONDS);
|
|
71
|
+
}
|
|
72
|
+
const ttl = await this.redis?.ttl(key) ?? WINDOW_SECONDS;
|
|
73
|
+
const remaining = Math.max(0, this.config.requestsPerMinute - count);
|
|
74
|
+
return {
|
|
75
|
+
allowed: count <= this.config.requestsPerMinute,
|
|
76
|
+
limit: this.config.requestsPerMinute,
|
|
77
|
+
remaining,
|
|
78
|
+
resetSeconds: ttl > 0 ? ttl : WINDOW_SECONDS,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
checkLocal(clientKey) {
|
|
82
|
+
const now = Date.now();
|
|
83
|
+
const existing = this.localEntries.get(clientKey);
|
|
84
|
+
const entry = existing && now < existing.resetAt
|
|
85
|
+
? existing
|
|
86
|
+
: { count: 0, resetAt: now + WINDOW_MS };
|
|
87
|
+
entry.count += 1;
|
|
88
|
+
this.localEntries.set(clientKey, entry);
|
|
89
|
+
const resetSeconds = Math.max(1, Math.ceil((entry.resetAt - now) / 1000));
|
|
90
|
+
const remaining = Math.max(0, this.config.requestsPerMinute - entry.count);
|
|
91
|
+
return {
|
|
92
|
+
allowed: entry.count <= this.config.requestsPerMinute,
|
|
93
|
+
limit: this.config.requestsPerMinute,
|
|
94
|
+
remaining,
|
|
95
|
+
resetSeconds,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @name buildRemoteRateLimitConfigFromEnv
|
|
101
|
+
* @description Resolves hosted MCP rate-limit settings from environment variables.
|
|
102
|
+
*/
|
|
103
|
+
export function buildRemoteRateLimitConfigFromEnv(defaultPerMinute) {
|
|
104
|
+
const enabled = parseBoolean(process.env.SAP_MCP_REMOTE_RATE_LIMIT_ENABLED, true);
|
|
105
|
+
const useRedis = parseBoolean(process.env.SAP_MCP_USE_REDIS, false);
|
|
106
|
+
const redisUrl = process.env.SAP_MCP_REDIS_URL;
|
|
107
|
+
return {
|
|
108
|
+
enabled,
|
|
109
|
+
requestsPerMinute: parsePositiveInteger(process.env.SAP_MCP_REMOTE_RATE_LIMIT_PER_MINUTE, defaultPerMinute),
|
|
110
|
+
redisUrl: useRedis ? redisUrl || 'redis://127.0.0.1:6379' : undefined,
|
|
111
|
+
keyPrefix: process.env.SAP_MCP_REMOTE_RATE_LIMIT_PREFIX || 'sap-mcp:remote:rate:',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function parseBoolean(raw, fallback) {
|
|
115
|
+
if (raw === undefined) {
|
|
116
|
+
return fallback;
|
|
117
|
+
}
|
|
118
|
+
return ['true', '1', 'yes', 'on'].includes(raw.trim().toLowerCase());
|
|
119
|
+
}
|
|
120
|
+
function parsePositiveInteger(raw, fallback) {
|
|
121
|
+
if (!raw) {
|
|
122
|
+
return fallback;
|
|
123
|
+
}
|
|
124
|
+
const value = Number.parseInt(raw, 10);
|
|
125
|
+
return Number.isFinite(value) && value > 0 ? value : fallback;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/remote/rate-limiter.ts"],"names":[],"mappings":"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"}
|
package/dist/remote/server.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import * as http from 'http';
|
|
7
7
|
import { type SapMcpConfig } from '../config/env.js';
|
|
8
8
|
import { type RemoteAuthConfig } from './auth/index.js';
|
|
9
|
+
import { type RemoteRateLimitConfig } from './rate-limiter.js';
|
|
9
10
|
/**
|
|
10
11
|
* @name RemoteMCPConfig
|
|
11
12
|
* @description Resolved runtime configuration for the remote MCP HTTP server.
|
|
@@ -15,6 +16,8 @@ export interface RemoteMCPConfig {
|
|
|
15
16
|
host: string;
|
|
16
17
|
corsOrigins?: string[];
|
|
17
18
|
auth: RemoteAuthConfig;
|
|
19
|
+
stateless: boolean;
|
|
20
|
+
rateLimit: RemoteRateLimitConfig;
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* @name A2AAgentCard
|
|
@@ -80,6 +83,55 @@ export interface WizardInstallDescriptor {
|
|
|
80
83
|
signerLocation: 'user-machine-or-external-signer';
|
|
81
84
|
};
|
|
82
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* @name PublicServerInfo
|
|
88
|
+
* @description Public, secret-free metadata for the hosted SAP MCP deployment.
|
|
89
|
+
*/
|
|
90
|
+
export interface PublicServerInfo {
|
|
91
|
+
name: 'sap-mcp-server';
|
|
92
|
+
title: string;
|
|
93
|
+
description: string;
|
|
94
|
+
version: string;
|
|
95
|
+
status: 'online';
|
|
96
|
+
protocol: {
|
|
97
|
+
primary: 'mcp';
|
|
98
|
+
transport: 'streamable-http';
|
|
99
|
+
protocolVersion: '2025-06-18';
|
|
100
|
+
};
|
|
101
|
+
endpoints: {
|
|
102
|
+
landing: string;
|
|
103
|
+
mcp: string;
|
|
104
|
+
health: string;
|
|
105
|
+
serverInfo: string;
|
|
106
|
+
agentCard: string;
|
|
107
|
+
wizardDescriptor: string;
|
|
108
|
+
wizardInstallScript: string;
|
|
109
|
+
favicon: string;
|
|
110
|
+
};
|
|
111
|
+
capabilities: {
|
|
112
|
+
tools: boolean;
|
|
113
|
+
resources: boolean;
|
|
114
|
+
prompts: boolean;
|
|
115
|
+
streaming: boolean;
|
|
116
|
+
payments: readonly ['x402', 'pay.sh'];
|
|
117
|
+
userControlledSigning: true;
|
|
118
|
+
};
|
|
119
|
+
authentication: {
|
|
120
|
+
schemes: readonly ('Bearer' | 'x402' | 'none')[];
|
|
121
|
+
bearerRequired: boolean;
|
|
122
|
+
};
|
|
123
|
+
security: {
|
|
124
|
+
keypairBytesExposed: false;
|
|
125
|
+
storesUserKeypairs: false;
|
|
126
|
+
rpcSecretsExposed: false;
|
|
127
|
+
wizardConfigDirectory: '~/.config/mcp-sap';
|
|
128
|
+
};
|
|
129
|
+
docs: {
|
|
130
|
+
npm: 'https://www.npmjs.com/package/@oobe-protocol-labs/sap-mcp-server';
|
|
131
|
+
github: 'https://github.com/OOBE-PROTOCOL/sap-mcp';
|
|
132
|
+
userDocs: 'https://github.com/OOBE-PROTOCOL/sap-mcp/tree/main/USER_DOCS';
|
|
133
|
+
};
|
|
134
|
+
}
|
|
83
135
|
/**
|
|
84
136
|
* @name parseApiKeys
|
|
85
137
|
* @description Parses comma-separated `apiKey=userId` entries from environment configuration.
|
|
@@ -90,6 +142,16 @@ export declare function parseApiKeys(raw: string | undefined): Map<string, strin
|
|
|
90
142
|
* @description Builds remote-server configuration from SAP config plus remote-specific environment values.
|
|
91
143
|
*/
|
|
92
144
|
export declare function defaultRemoteConfig(appConfig: SapMcpConfig): RemoteMCPConfig;
|
|
145
|
+
/**
|
|
146
|
+
* @name buildPublicServerInfo
|
|
147
|
+
* @description Builds secret-free public metadata for humans, crawlers, and agent discovery.
|
|
148
|
+
*/
|
|
149
|
+
export declare function buildPublicServerInfo(req: http.IncomingMessage, config: RemoteMCPConfig): PublicServerInfo;
|
|
150
|
+
/**
|
|
151
|
+
* @name buildLandingHtml
|
|
152
|
+
* @description Builds professional public HTML metadata for root and `/mcp` URL previews.
|
|
153
|
+
*/
|
|
154
|
+
export declare function buildLandingHtml(req: http.IncomingMessage, config: RemoteMCPConfig, endpoint?: 'root' | 'mcp'): string;
|
|
93
155
|
/**
|
|
94
156
|
* @name buildA2AAgentCard
|
|
95
157
|
* @description Builds the public A2A-compatible agent-card document for remote discovery.
|
|
@@ -113,6 +175,7 @@ export declare class RemoteMCPServer {
|
|
|
113
175
|
private readonly config;
|
|
114
176
|
private readonly appConfig;
|
|
115
177
|
private readonly authManager;
|
|
178
|
+
private readonly rateLimiter;
|
|
116
179
|
private transport?;
|
|
117
180
|
private httpServer?;
|
|
118
181
|
constructor(config?: RemoteMCPConfig);
|
|
@@ -137,4 +200,9 @@ export declare class RemoteMCPServer {
|
|
|
137
200
|
*/
|
|
138
201
|
private applyCors;
|
|
139
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* @name startRemoteMcpServerProcess
|
|
205
|
+
* @description Starts the remote MCP HTTP server and installs process signal handlers for CLI/PM2 execution.
|
|
206
|
+
*/
|
|
207
|
+
export declare function startRemoteMcpServerProcess(): Promise<void>;
|
|
140
208
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/remote/server.ts"],"names":[],"mappings":";AACA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/remote/server.ts"],"names":[],"mappings":"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"}
|