@airmcp-dev/gateway 0.1.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/LICENSE +17 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/proxy/index.d.ts +5 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +7 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/mcp-proxy.d.ts +53 -0
- package/dist/proxy/mcp-proxy.d.ts.map +1 -0
- package/dist/proxy/mcp-proxy.js +131 -0
- package/dist/proxy/mcp-proxy.js.map +1 -0
- package/dist/proxy/protocol-adapter.d.ts +28 -0
- package/dist/proxy/protocol-adapter.d.ts.map +1 -0
- package/dist/proxy/protocol-adapter.js +56 -0
- package/dist/proxy/protocol-adapter.js.map +1 -0
- package/dist/proxy/session-pool.d.ts +39 -0
- package/dist/proxy/session-pool.d.ts.map +1 -0
- package/dist/proxy/session-pool.js +102 -0
- package/dist/proxy/session-pool.js.map +1 -0
- package/dist/registry/health-checker.d.ts +35 -0
- package/dist/registry/health-checker.d.ts.map +1 -0
- package/dist/registry/health-checker.js +121 -0
- package/dist/registry/health-checker.js.map +1 -0
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +7 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/server-registry.d.ts +37 -0
- package/dist/registry/server-registry.d.ts.map +1 -0
- package/dist/registry/server-registry.js +72 -0
- package/dist/registry/server-registry.js.map +1 -0
- package/dist/registry/tool-index.d.ts +35 -0
- package/dist/registry/tool-index.d.ts.map +1 -0
- package/dist/registry/tool-index.js +72 -0
- package/dist/registry/tool-index.js.map +1 -0
- package/dist/router/index.d.ts +3 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +6 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/load-balancer.d.ts +23 -0
- package/dist/router/load-balancer.d.ts.map +1 -0
- package/dist/router/load-balancer.js +78 -0
- package/dist/router/load-balancer.js.map +1 -0
- package/dist/router/request-router.d.ts +21 -0
- package/dist/router/request-router.d.ts.map +1 -0
- package/dist/router/request-router.js +50 -0
- package/dist/router/request-router.js.map +1 -0
- package/dist/types.d.ts +88 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +33 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** MCP 서버 등록 정보 */
|
|
2
|
+
export interface ServerEntry {
|
|
3
|
+
/** 고유 식별자 */
|
|
4
|
+
id: string;
|
|
5
|
+
/** 표시 이름 */
|
|
6
|
+
name: string;
|
|
7
|
+
/** 서버 transport 타입 */
|
|
8
|
+
transport: 'stdio' | 'http' | 'sse';
|
|
9
|
+
/** stdio: command + args, http/sse: url */
|
|
10
|
+
connection: StdioConnection | HttpConnection;
|
|
11
|
+
/** 서버가 제공하는 도구 목록 (발견 후 채워짐) */
|
|
12
|
+
tools: ToolEntry[];
|
|
13
|
+
/** 서버 상태 */
|
|
14
|
+
status: ServerStatus;
|
|
15
|
+
/** 마지막 헬스체크 시각 */
|
|
16
|
+
lastHealthCheck?: Date;
|
|
17
|
+
/** 서버 메타데이터 */
|
|
18
|
+
metadata?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export interface StdioConnection {
|
|
21
|
+
type: 'stdio';
|
|
22
|
+
command: string;
|
|
23
|
+
args?: string[];
|
|
24
|
+
cwd?: string;
|
|
25
|
+
env?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
export interface HttpConnection {
|
|
28
|
+
type: 'http' | 'sse';
|
|
29
|
+
url: string;
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
export type ServerConnection = StdioConnection | HttpConnection;
|
|
33
|
+
export type ServerStatus = 'registered' | 'connecting' | 'connected' | 'error' | 'stopped';
|
|
34
|
+
/** 도구 인덱스 엔트리 */
|
|
35
|
+
export interface ToolEntry {
|
|
36
|
+
/** 도구 이름 */
|
|
37
|
+
name: string;
|
|
38
|
+
/** 도구 설명 */
|
|
39
|
+
description?: string;
|
|
40
|
+
/** 이 도구를 제공하는 서버 ID */
|
|
41
|
+
serverId: string;
|
|
42
|
+
/** 입력 스키마 (JSON Schema) */
|
|
43
|
+
inputSchema?: Record<string, any>;
|
|
44
|
+
}
|
|
45
|
+
/** 라우팅 요청 */
|
|
46
|
+
export interface RouteRequest {
|
|
47
|
+
/** 호출할 도구 이름 */
|
|
48
|
+
toolName: string;
|
|
49
|
+
/** 도구 파라미터 */
|
|
50
|
+
params: Record<string, any>;
|
|
51
|
+
/** 요청 메타데이터 */
|
|
52
|
+
meta?: {
|
|
53
|
+
clientId?: string;
|
|
54
|
+
sessionId?: string;
|
|
55
|
+
priority?: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** 라우팅 결과 */
|
|
59
|
+
export interface RouteResult {
|
|
60
|
+
/** 라우팅된 서버 */
|
|
61
|
+
server: ServerEntry;
|
|
62
|
+
/** 도구 정보 */
|
|
63
|
+
tool: ToolEntry;
|
|
64
|
+
}
|
|
65
|
+
/** 헬스체크 결과 */
|
|
66
|
+
export interface HealthCheckResult {
|
|
67
|
+
serverId: string;
|
|
68
|
+
healthy: boolean;
|
|
69
|
+
latencyMs: number;
|
|
70
|
+
error?: string;
|
|
71
|
+
checkedAt: Date;
|
|
72
|
+
}
|
|
73
|
+
/** 로드밸런서 전략 */
|
|
74
|
+
export type BalancerStrategy = 'round-robin' | 'least-connections' | 'weighted' | 'random';
|
|
75
|
+
/** Gateway 설정 */
|
|
76
|
+
export interface GatewayConfig {
|
|
77
|
+
/** 게이트웨이 이름 */
|
|
78
|
+
name?: string;
|
|
79
|
+
/** HTTP 리스닝 포트 */
|
|
80
|
+
port?: number;
|
|
81
|
+
/** 헬스체크 주기 (ms) */
|
|
82
|
+
healthCheckInterval?: number;
|
|
83
|
+
/** 로드밸런서 전략 */
|
|
84
|
+
balancer?: BalancerStrategy;
|
|
85
|
+
/** 요청 타임아웃 (ms) */
|
|
86
|
+
requestTimeout?: number;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,mBAAmB;AACnB,MAAM,WAAW,WAAW;IAC1B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACpC,2CAA2C;IAC3C,UAAU,EAAE,eAAe,GAAG,cAAc,CAAC;IAC7C,gCAAgC;IAChC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,kBAAkB;IAClB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,cAAc,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3F,iBAAiB;AACjB,MAAM,WAAW,SAAS;IACxB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED,aAAa;AACb,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,eAAe;IACf,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,cAAc;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY;IACZ,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,eAAe;AACf,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,mBAAmB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3F,iBAAiB;AACjB,MAAM,WAAW,aAAa;IAC5B,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iCAAiC;AACjC,EAAE;AACF,oBAAoB;AACpB,qCAAqC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@airmcp-dev/gateway",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP reverse proxy, server registry, and request router",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"dev": "tsc --watch",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"lint": "tsc --noEmit"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@airmcp-dev/core": "^0.1.0",
|
|
20
|
+
"@modelcontextprotocol/sdk": "^1.12.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.5.0",
|
|
24
|
+
"vitest": "^2.0.0",
|
|
25
|
+
"@types/node": "^20.0.0"
|
|
26
|
+
},
|
|
27
|
+
"author": "CodePedia Labs",
|
|
28
|
+
"homepage": "https://airmcp.dev",
|
|
29
|
+
"bugs": { "url": "https://github.com/airmcp-dev/air/issues" },
|
|
30
|
+
"repository": { "type": "git", "url": "https://github.com/airmcp-dev/air", "directory": "packages/gateway" },
|
|
31
|
+
"keywords": ["mcp", "ai", "agent", "air"],
|
|
32
|
+
"license": "Apache-2.0"
|
|
33
|
+
}
|