ragalgo-mcp-server 1.0.4 → 1.0.5
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 +119 -73
- package/dist/index.js +22 -239
- package/dist/tools/chart.d.ts +20 -35
- package/dist/tools/financials.d.ts +5 -16
- package/dist/tools/news.d.ts +14 -44
- package/dist/tools/news.js +37 -5
- package/dist/tools/research.d.ts +1 -9
- package/dist/tools/snapshots.d.ts +1 -13
- package/dist/tools/snapshots.js +1 -10
- package/dist/tools/tags.d.ts +14 -20
- package/dist/tools/trends.d.ts +1 -8
- package/package.json +40 -38
- package/.dockerignore +0 -4
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/Dockerfile +0 -23
- package/android-chrome-192x192.png +0 -0
- package/mcp-publisher.exe +0 -0
- package/server.json +0 -35
- package/smithery.yaml +0 -7
- package/src/index.ts +0 -477
- package/src/tools/chart.ts +0 -90
- package/src/tools/financials.ts +0 -67
- package/src/tools/news.ts +0 -67
- package/src/tools/research.ts +0 -40
- package/src/tools/snapshots.ts +0 -55
- package/src/tools/tags.ts +0 -61
- package/src/tools/trends.ts +0 -35
- package/src/utils/api.ts +0 -76
- package/tsconfig.json +0 -21
package/dist/tools/news.d.ts
CHANGED
|
@@ -3,65 +3,35 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
export declare const NewsParamsSchema: z.ZodObject<{
|
|
6
|
-
|
|
6
|
+
tag_code: z.ZodOptional<z.ZodString>;
|
|
7
7
|
source: z.ZodOptional<z.ZodString>;
|
|
8
8
|
search: z.ZodOptional<z.ZodString>;
|
|
9
9
|
from_date: z.ZodOptional<z.ZodString>;
|
|
10
10
|
to_date: z.ZodOptional<z.ZodString>;
|
|
11
11
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
12
|
offset: z.ZodDefault<z.ZodNumber>;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
tag?: string | undefined;
|
|
17
|
-
source?: string | undefined;
|
|
18
|
-
search?: string | undefined;
|
|
19
|
-
from_date?: string | undefined;
|
|
20
|
-
to_date?: string | undefined;
|
|
21
|
-
}, {
|
|
22
|
-
tag?: string | undefined;
|
|
23
|
-
source?: string | undefined;
|
|
24
|
-
search?: string | undefined;
|
|
25
|
-
from_date?: string | undefined;
|
|
26
|
-
to_date?: string | undefined;
|
|
27
|
-
limit?: number | undefined;
|
|
28
|
-
offset?: number | undefined;
|
|
29
|
-
}>;
|
|
13
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
14
|
+
end_date: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.core.$strip>;
|
|
30
16
|
export declare const NewsScoredParamsSchema: z.ZodObject<{
|
|
31
|
-
|
|
17
|
+
tag_code: z.ZodOptional<z.ZodString>;
|
|
32
18
|
source: z.ZodOptional<z.ZodString>;
|
|
33
19
|
search: z.ZodOptional<z.ZodString>;
|
|
34
20
|
from_date: z.ZodOptional<z.ZodString>;
|
|
35
21
|
to_date: z.ZodOptional<z.ZodString>;
|
|
36
22
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
37
23
|
offset: z.ZodDefault<z.ZodNumber>;
|
|
38
|
-
|
|
24
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
25
|
+
end_date: z.ZodOptional<z.ZodString>;
|
|
39
26
|
min_score: z.ZodOptional<z.ZodNumber>;
|
|
40
27
|
max_score: z.ZodOptional<z.ZodNumber>;
|
|
41
|
-
verdict: z.ZodOptional<z.ZodEnum<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
from_date?: string | undefined;
|
|
49
|
-
to_date?: string | undefined;
|
|
50
|
-
min_score?: number | undefined;
|
|
51
|
-
max_score?: number | undefined;
|
|
52
|
-
verdict?: "bullish" | "bearish" | "neutral" | undefined;
|
|
53
|
-
}, {
|
|
54
|
-
tag?: string | undefined;
|
|
55
|
-
source?: string | undefined;
|
|
56
|
-
search?: string | undefined;
|
|
57
|
-
from_date?: string | undefined;
|
|
58
|
-
to_date?: string | undefined;
|
|
59
|
-
limit?: number | undefined;
|
|
60
|
-
offset?: number | undefined;
|
|
61
|
-
min_score?: number | undefined;
|
|
62
|
-
max_score?: number | undefined;
|
|
63
|
-
verdict?: "bullish" | "bearish" | "neutral" | undefined;
|
|
64
|
-
}>;
|
|
28
|
+
verdict: z.ZodOptional<z.ZodEnum<{
|
|
29
|
+
bullish: "bullish";
|
|
30
|
+
bearish: "bearish";
|
|
31
|
+
neutral: "neutral";
|
|
32
|
+
}>>;
|
|
33
|
+
market: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>;
|
|
65
35
|
export type NewsParams = z.infer<typeof NewsParamsSchema>;
|
|
66
36
|
export type NewsScoredParams = z.infer<typeof NewsScoredParamsSchema>;
|
|
67
37
|
export declare function getNews(params: NewsParams): Promise<{
|
package/dist/tools/news.js
CHANGED
|
@@ -5,27 +5,59 @@ import { z } from 'zod';
|
|
|
5
5
|
import { callApi } from '../utils/api.js';
|
|
6
6
|
// 뉴스 파라미터 스키마
|
|
7
7
|
export const NewsParamsSchema = z.object({
|
|
8
|
-
|
|
8
|
+
tag_code: z.string().optional().describe('태그 코드 (search_tags 결과값, 예: STK005930, THM001)'),
|
|
9
9
|
source: z.string().optional().describe('소스 필터 (예: 한경, 매경)'),
|
|
10
10
|
search: z.string().optional().describe('제목 검색어'),
|
|
11
11
|
from_date: z.string().optional().describe('시작일 (YYYY-MM-DD)'),
|
|
12
12
|
to_date: z.string().optional().describe('종료일 (YYYY-MM-DD)'),
|
|
13
13
|
limit: z.number().min(1).max(100).default(20).describe('결과 수 (기본: 20, 최대: 100)'),
|
|
14
14
|
offset: z.number().min(0).default(0).describe('페이지네이션 오프셋'),
|
|
15
|
-
|
|
15
|
+
start_date: z.string().optional().describe('시작일 alias'),
|
|
16
|
+
end_date: z.string().optional().describe('종료일 alias'),
|
|
17
|
+
}); // [MOD] Removed .strict()
|
|
16
18
|
// 점수 포함 뉴스 파라미터 스키마
|
|
17
19
|
export const NewsScoredParamsSchema = NewsParamsSchema.extend({
|
|
18
20
|
min_score: z.number().min(-10).max(10).optional().describe('최소 감정 점수 (-10~10)'),
|
|
19
21
|
max_score: z.number().min(-10).max(10).optional().describe('최대 감정 점수 (-10~10)'),
|
|
20
22
|
verdict: z.enum(['bullish', 'bearish', 'neutral']).optional().describe('판정 필터'),
|
|
21
|
-
|
|
23
|
+
market: z.string().optional().describe('시장 필터 (KR, US, JP, UK)'),
|
|
24
|
+
}); // [MOD] Removed .strict()
|
|
22
25
|
// 뉴스 조회 (점수 제외)
|
|
23
26
|
export async function getNews(params) {
|
|
24
|
-
const
|
|
27
|
+
const { tag_code, start_date, end_date, ...rest } = params;
|
|
28
|
+
const apiParams = { ...rest, tag: tag_code };
|
|
29
|
+
if (start_date && !apiParams.from_date)
|
|
30
|
+
apiParams.from_date = start_date;
|
|
31
|
+
if (end_date && !apiParams.to_date)
|
|
32
|
+
apiParams.to_date = end_date;
|
|
33
|
+
const result = await callApi('news', apiParams);
|
|
25
34
|
return result;
|
|
26
35
|
}
|
|
27
36
|
// 뉴스 조회 (점수 포함)
|
|
28
37
|
export async function getNewsScored(params) {
|
|
29
|
-
const
|
|
38
|
+
const { tag_code, start_date, end_date, ...rest } = params;
|
|
39
|
+
const apiParams = { ...rest, tag: tag_code };
|
|
40
|
+
if (start_date && !apiParams.from_date)
|
|
41
|
+
apiParams.from_date = start_date;
|
|
42
|
+
if (end_date && !apiParams.to_date)
|
|
43
|
+
apiParams.to_date = end_date;
|
|
44
|
+
// [FIX] JP/UK Fallback: 'news-scored' endpoint only supports scored news (news_final).
|
|
45
|
+
// Raw markets (JP/UK) are in raw tables accessed via 'news' endpoint.
|
|
46
|
+
// We hijack the call to 'news' and polyfill the score fields.
|
|
47
|
+
const market = apiParams.market?.toUpperCase();
|
|
48
|
+
if (market === 'JP' || market === 'UK') {
|
|
49
|
+
const result = await callApi('news', apiParams);
|
|
50
|
+
return {
|
|
51
|
+
...result,
|
|
52
|
+
data: (result.data || []).map(item => ({
|
|
53
|
+
...item,
|
|
54
|
+
sentiment_score: 0,
|
|
55
|
+
verdict: 'neutral',
|
|
56
|
+
tag_codes: item.tags || [] // 'news' endpoint returns tags as strings or codes? check 'news' return type.
|
|
57
|
+
// Actually 'news' endpoint handles mapping too.
|
|
58
|
+
}))
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const result = await callApi('news-scored', apiParams);
|
|
30
62
|
return result;
|
|
31
63
|
}
|
package/dist/tools/research.d.ts
CHANGED
|
@@ -6,15 +6,7 @@ export declare const ResearchParamsSchema: z.ZodObject<{
|
|
|
6
6
|
tag_code: z.ZodString;
|
|
7
7
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
8
8
|
source: z.ZodOptional<z.ZodString>;
|
|
9
|
-
},
|
|
10
|
-
limit: number;
|
|
11
|
-
tag_code: string;
|
|
12
|
-
source?: string | undefined;
|
|
13
|
-
}, {
|
|
14
|
-
tag_code: string;
|
|
15
|
-
source?: string | undefined;
|
|
16
|
-
limit?: number | undefined;
|
|
17
|
-
}>;
|
|
9
|
+
}, z.core.$strip>;
|
|
18
10
|
export type ResearchParams = z.infer<typeof ResearchParamsSchema>;
|
|
19
11
|
export declare function getResearch(params: ResearchParams): Promise<{
|
|
20
12
|
tag_code: string;
|
|
@@ -8,19 +8,7 @@ export declare const SnapshotsParamsSchema: z.ZodObject<{
|
|
|
8
8
|
days: z.ZodDefault<z.ZodNumber>;
|
|
9
9
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
10
10
|
offset: z.ZodDefault<z.ZodNumber>;
|
|
11
|
-
},
|
|
12
|
-
limit: number;
|
|
13
|
-
offset: number;
|
|
14
|
-
days: number;
|
|
15
|
-
tag_code?: string | undefined;
|
|
16
|
-
date?: string | undefined;
|
|
17
|
-
}, {
|
|
18
|
-
limit?: number | undefined;
|
|
19
|
-
offset?: number | undefined;
|
|
20
|
-
tag_code?: string | undefined;
|
|
21
|
-
date?: string | undefined;
|
|
22
|
-
days?: number | undefined;
|
|
23
|
-
}>;
|
|
11
|
+
}, z.core.$strip>;
|
|
24
12
|
export type SnapshotsParams = z.infer<typeof SnapshotsParamsSchema>;
|
|
25
13
|
export declare function getSnapshots(params: SnapshotsParams): Promise<{
|
|
26
14
|
success: boolean;
|
package/dist/tools/snapshots.js
CHANGED
|
@@ -12,18 +12,9 @@ export const SnapshotsParamsSchema = z.object({
|
|
|
12
12
|
offset: z.number().min(0).default(0).describe('페이지네이션 오프셋'),
|
|
13
13
|
});
|
|
14
14
|
// 스냅샷 조회
|
|
15
|
-
// [IMPORTANT] Snapshots are generated daily at 17:00 KST (market close).
|
|
16
|
-
// If you request 'today' and get no results (because it's morning in KST),
|
|
17
|
-
// you MUST:
|
|
18
|
-
// 1. Fetch 'yesterday's snapshot for context.
|
|
19
|
-
// 2. Call 'get_news_scored' to get REAL-TIME news for the current day.
|
|
20
15
|
export async function getSnapshots(params) {
|
|
21
|
-
const endpoint = 'snapshots';
|
|
16
|
+
const endpoint = params.tag_code ? `snapshots/${params.tag_code}` : 'snapshots';
|
|
22
17
|
const { tag_code, ...queryParams } = params;
|
|
23
|
-
// 태그 코드가 있으면 쿼리 파라미터에 추가
|
|
24
|
-
if (tag_code) {
|
|
25
|
-
queryParams.tag_code = tag_code;
|
|
26
|
-
}
|
|
27
18
|
const result = await callApi(endpoint, queryParams);
|
|
28
19
|
return result;
|
|
29
20
|
}
|
package/dist/tools/tags.d.ts
CHANGED
|
@@ -4,30 +4,24 @@
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
export declare const TagsSearchParamsSchema: z.ZodObject<{
|
|
6
6
|
q: z.ZodString;
|
|
7
|
-
type: z.ZodOptional<z.ZodEnum<
|
|
7
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
8
|
+
STOCK: "STOCK";
|
|
9
|
+
SECTOR: "SECTOR";
|
|
10
|
+
THEME: "THEME";
|
|
11
|
+
CRYPTO: "CRYPTO";
|
|
12
|
+
}>>;
|
|
8
13
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
9
|
-
},
|
|
10
|
-
limit: number;
|
|
11
|
-
q: string;
|
|
12
|
-
type?: "STOCK" | "SECTOR" | "THEME" | "CRYPTO" | undefined;
|
|
13
|
-
}, {
|
|
14
|
-
q: string;
|
|
15
|
-
limit?: number | undefined;
|
|
16
|
-
type?: "STOCK" | "SECTOR" | "THEME" | "CRYPTO" | undefined;
|
|
17
|
-
}>;
|
|
14
|
+
}, z.core.$strip>;
|
|
18
15
|
export declare const TagsMatchParamsSchema: z.ZodObject<{
|
|
19
16
|
text: z.ZodString;
|
|
20
|
-
types: z.ZodOptional<z.ZodArray<z.ZodEnum<
|
|
17
|
+
types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
18
|
+
STOCK: "STOCK";
|
|
19
|
+
SECTOR: "SECTOR";
|
|
20
|
+
THEME: "THEME";
|
|
21
|
+
CRYPTO: "CRYPTO";
|
|
22
|
+
}>>>;
|
|
21
23
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
22
|
-
},
|
|
23
|
-
limit: number;
|
|
24
|
-
text: string;
|
|
25
|
-
types?: ("STOCK" | "SECTOR" | "THEME" | "CRYPTO")[] | undefined;
|
|
26
|
-
}, {
|
|
27
|
-
text: string;
|
|
28
|
-
limit?: number | undefined;
|
|
29
|
-
types?: ("STOCK" | "SECTOR" | "THEME" | "CRYPTO")[] | undefined;
|
|
30
|
-
}>;
|
|
24
|
+
}, z.core.$strip>;
|
|
31
25
|
export type TagsSearchParams = z.infer<typeof TagsSearchParamsSchema>;
|
|
32
26
|
export type TagsMatchParams = z.infer<typeof TagsMatchParamsSchema>;
|
|
33
27
|
export declare function searchTags(params: TagsSearchParams): Promise<{
|
package/dist/tools/trends.d.ts
CHANGED
|
@@ -5,13 +5,7 @@ import { z } from 'zod';
|
|
|
5
5
|
export declare const TrendsParamsSchema: z.ZodObject<{
|
|
6
6
|
tag_code: z.ZodString;
|
|
7
7
|
days: z.ZodDefault<z.ZodNumber>;
|
|
8
|
-
},
|
|
9
|
-
tag_code: string;
|
|
10
|
-
days: number;
|
|
11
|
-
}, {
|
|
12
|
-
tag_code: string;
|
|
13
|
-
days?: number | undefined;
|
|
14
|
-
}>;
|
|
8
|
+
}, z.core.$strip>;
|
|
15
9
|
export type TrendsParams = z.infer<typeof TrendsParamsSchema>;
|
|
16
10
|
export declare function getTrends(params: TrendsParams): Promise<{
|
|
17
11
|
success: boolean;
|
|
@@ -19,7 +13,6 @@ export declare function getTrends(params: TrendsParams): Promise<{
|
|
|
19
13
|
code: string;
|
|
20
14
|
name: string;
|
|
21
15
|
type: string;
|
|
22
|
-
name_en?: string;
|
|
23
16
|
};
|
|
24
17
|
trend: Array<{
|
|
25
18
|
date: string;
|
package/package.json
CHANGED
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
2
|
+
"name": "ragalgo-mcp-server",
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"files": [
|
|
5
|
+
"dist"
|
|
6
|
+
],
|
|
7
|
+
"description": "Dynamic RAG Engine for AI Reliability. We provide mathematically scored context & sanitized data to prevent hallucinations in both static & volatile domains (starting with Korean Finance).",
|
|
8
|
+
"author": "",
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"bin": {
|
|
11
|
+
"ragalgo-mcp-server": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "npx tsc",
|
|
16
|
+
"start": "node dist/index.js",
|
|
17
|
+
"dev": "npx tsx src/index.ts"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"mcp",
|
|
21
|
+
"ragalgo",
|
|
22
|
+
"finance",
|
|
23
|
+
"news",
|
|
24
|
+
"ai"
|
|
25
|
+
],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
29
|
+
"cors": "^2.8.5",
|
|
30
|
+
"express": "^5.2.1",
|
|
31
|
+
"zod": "^4.3.5",
|
|
32
|
+
"zod-to-json-schema": "^3.25.1"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/cors": "^2.8.19",
|
|
36
|
+
"@types/express": "^5.0.6",
|
|
37
|
+
"@types/node": "^20.19.26",
|
|
38
|
+
"tsx": "^4.21.0",
|
|
39
|
+
"typescript": "^5.9.3"
|
|
40
|
+
}
|
|
41
|
+
}
|
package/.dockerignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ghu_Safy78H3Zvt7BUuP8NfXi5r2gCVRjy1qBA0C
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"token":"eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJtY3AtcmVnaXN0cnkiLCJleHAiOjE3NjYyMTQ0MTAsIm5iZiI6MTc2NjIxNDExMCwiaWF0IjoxNzY2MjE0MTEwLCJhdXRoX21ldGhvZCI6ImdpdGh1Yi1hdCIsImF1dGhfbWV0aG9kX3N1YiI6Imtva29nbzEwMCIsInBlcm1pc3Npb25zIjpbeyJhY3Rpb24iOiJwdWJsaXNoIiwicmVzb3VyY2UiOiJpby5naXRodWIua29rb2dvMTAwLyoifV19.hflQzpb2k9_IJXL0_60d2yIiTkn-279aMAwLU601Zrw2sD76mOukJ6iY4psRv3RR2IygAwaMhYqezwoZZECoDw","expires_at":1766214410}
|
package/Dockerfile
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Build stage
|
|
2
|
-
FROM node:18-alpine AS builder
|
|
3
|
-
|
|
4
|
-
WORKDIR /app
|
|
5
|
-
COPY package*.json ./
|
|
6
|
-
RUN npm install
|
|
7
|
-
COPY . .
|
|
8
|
-
RUN npm run build
|
|
9
|
-
|
|
10
|
-
# Production stage
|
|
11
|
-
FROM node:18-alpine
|
|
12
|
-
|
|
13
|
-
WORKDIR /app
|
|
14
|
-
COPY package*.json ./
|
|
15
|
-
# Install only production dependencies
|
|
16
|
-
RUN npm install --only=production
|
|
17
|
-
|
|
18
|
-
COPY --from=builder /app/dist ./dist
|
|
19
|
-
|
|
20
|
-
ENV PORT=8080
|
|
21
|
-
EXPOSE 8080
|
|
22
|
-
|
|
23
|
-
CMD ["npm", "start"]
|
|
Binary file
|
package/mcp-publisher.exe
DELETED
|
Binary file
|
package/server.json
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://modelcontextprotocol.io/schema/server.schema.json",
|
|
3
|
-
"name": "io.github.kokogo100/ragalgo",
|
|
4
|
-
"displayName": "RagAlgo",
|
|
5
|
-
"description": "Dynamic RAG Engine for AI Reliability. Prevents hallucinations in Korean Finance and Crypto markets with mathematically scored context.",
|
|
6
|
-
"version": "1.0.0",
|
|
7
|
-
"homepage": "https://ragalgo.com",
|
|
8
|
-
"license": "MIT",
|
|
9
|
-
"packages": [
|
|
10
|
-
{
|
|
11
|
-
"registry_type": "npm",
|
|
12
|
-
"identifier": "ragalgo-mcp-server",
|
|
13
|
-
"version": "1.0.4",
|
|
14
|
-
"transport": {
|
|
15
|
-
"type": "stdio"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"categories": [
|
|
20
|
-
"Finance",
|
|
21
|
-
"Data",
|
|
22
|
-
"Analysis"
|
|
23
|
-
],
|
|
24
|
-
"keywords": [
|
|
25
|
-
"finance",
|
|
26
|
-
"korea",
|
|
27
|
-
"rag",
|
|
28
|
-
"stock",
|
|
29
|
-
"crypto",
|
|
30
|
-
"analysis",
|
|
31
|
-
"sentiment",
|
|
32
|
-
"korean-market"
|
|
33
|
-
],
|
|
34
|
-
"icon": "https://raw.githubusercontent.com/kokogo100/ragalgo-mcp-server/main/android-chrome-192x192.png"
|
|
35
|
-
}
|