lit-forge-mcp 0.2.0 → 0.3.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/README.md +23 -4
- package/dist/index.js +1 -1
- package/dist/lib/economic-events.d.ts +9 -0
- package/dist/lib/economic-events.js +146 -0
- package/dist/lib/economic-events.js.map +1 -0
- package/dist/lib/indicators.d.ts +2 -0
- package/dist/lib/indicators.js +14 -0
- package/dist/lib/indicators.js.map +1 -0
- package/dist/lib/market-types.d.ts +41 -0
- package/dist/lib/market-types.js +4 -0
- package/dist/lib/market-types.js.map +1 -0
- package/dist/lib/yahoo.d.ts +9 -0
- package/dist/lib/yahoo.js +110 -0
- package/dist/lib/yahoo.js.map +1 -0
- package/dist/tools/get-economic-events.d.ts +2 -0
- package/dist/tools/get-economic-events.js +42 -0
- package/dist/tools/get-economic-events.js.map +1 -0
- package/dist/tools/get-market-snapshot.d.ts +2 -0
- package/dist/tools/get-market-snapshot.js +27 -0
- package/dist/tools/get-market-snapshot.js.map +1 -0
- package/dist/tools/get-quote.d.ts +2 -0
- package/dist/tools/get-quote.js +31 -0
- package/dist/tools/get-quote.js.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -8,9 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
Claude Desktop / Claude Code / Cursor など、MCP に対応した任意の AI クライアントで動作します。
|
|
10
10
|
|
|
11
|
-
> **v0.2.0
|
|
11
|
+
> **v0.2.0 で「金融・個人投資家特化」にピボット**、**v0.3.0 で「毎朝の市況チェック」系 3 ツールを追加**しました。
|
|
12
12
|
|
|
13
|
-
## 提供ツール(
|
|
13
|
+
## 提供ツール(7 種)
|
|
14
|
+
|
|
15
|
+
### 個人資産形成プランナー(純関数、外部 API 不要)
|
|
14
16
|
|
|
15
17
|
| ツール名 | 説明 |
|
|
16
18
|
|---|---|
|
|
@@ -19,7 +21,17 @@ Claude Desktop / Claude Code / Cursor など、MCP に対応した任意の AI
|
|
|
19
21
|
| `calculate_required_monthly` | 目標金額・現在の貯蓄・年利・年数から、達成に必要な毎月の積立額を逆算 |
|
|
20
22
|
| `calculate_compound_interest` | 元本(一括)と月次積立を月次複利で評価する汎用複利計算ツール |
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
### 市況・経済イベント(v0.3.0 新規。**HTTP 通信あり**)
|
|
25
|
+
|
|
26
|
+
| ツール名 | 説明 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `get_market_snapshot` | USD/JPY・EUR/JPY・日経平均・TOPIX・S&P 500・NASDAQ 100・米10年金利・金・原油 WTI の現在値・前日比を一括取得([lit-forge.com/today](https://lit-forge.com/today) と同等情報) |
|
|
29
|
+
| `get_economic_events_today` | 当日 or 今週の経済イベント(FOMC・日銀金融政策決定会合・米雇用統計・CPI・GDP・中国 PMI 等)を重要度付きで返す。半年分を手動キュレーション |
|
|
30
|
+
| `get_quote` | 任意の Yahoo Finance ティッカー(株・為替・指数・コモディティ・暗号資産)の現在値・前日比を取得。例: `AAPL` / `^DJI` / `BTC-USD` |
|
|
31
|
+
|
|
32
|
+
> ⚠ **HTTP 通信について**: v0.3.0 から、`get_market_snapshot` / `get_quote` は **Yahoo Finance API(query1.finance.yahoo.com)** へ HTTPS リクエストを送信します。実行 PC のネットワークから外部に出る通信が発生する点にご留意ください。データは Yahoo Finance より取得(約 1 時間遅れ)、**投資助言ではなく情報集約**として提供しています。
|
|
33
|
+
|
|
34
|
+
Claude / GPT / Cursor との対話の中で「老後資金大丈夫?」「月いくら積み立てれば?」「今日の市況を要約して」「FOMC は今週いつ?」を即座に試算・確認できます。
|
|
23
35
|
|
|
24
36
|
## インストール / 設定
|
|
25
37
|
|
|
@@ -70,17 +82,24 @@ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":
|
|
|
70
82
|
{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | node dist/index.js
|
|
71
83
|
```
|
|
72
84
|
|
|
73
|
-
`tools/list` のレスポンスに
|
|
85
|
+
`tools/list` のレスポンスに 7 ツールが並べば成功です。
|
|
74
86
|
|
|
75
87
|
## 使用例
|
|
76
88
|
|
|
77
89
|
Claude にこんな依頼ができます:
|
|
78
90
|
|
|
91
|
+
**資産形成プランニング**
|
|
79
92
|
- 「私は35歳で月3万を積立中。現在の貯蓄500万、退職65歳、月の希望生活費25万。老後資金足りる?」
|
|
80
93
|
- 「20年で2000万作りたい。今500万あって年利4%なら毎月いくら積み立てればいい?」
|
|
81
94
|
- 「100万円を年利5%で30年複利運用したらいくらになる?」
|
|
82
95
|
- 「月3万円を年利6%で20年積み立てたら?」
|
|
83
96
|
|
|
97
|
+
**市況・経済イベント(v0.3.0)**
|
|
98
|
+
- 「今日の市況を要約して」「主要指標の前日比を表で見せて」
|
|
99
|
+
- 「今週の経済イベントは?特に FOMC や日銀の予定を教えて」
|
|
100
|
+
- 「米10年金利と日経平均の動きから、今のリスクオン度合いをコメントして」
|
|
101
|
+
- 「BTC-USD の今の値は?」「ポンド円(GBPJPY=X)を教えて」
|
|
102
|
+
|
|
84
103
|
## 投資判断の免責
|
|
85
104
|
|
|
86
105
|
本ツールの試算はすべて月次複利による参考値です。実際の運用結果(市場変動・税金・手数料・為替)を保証するものではありません。個別の金融商品の推奨ではなく、**投資判断はご自身の責任**でお願いします。
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
6
6
|
import { tools } from "./tools/index.js";
|
|
7
7
|
const server = new McpServer({
|
|
8
8
|
name: "lit-forge",
|
|
9
|
-
version: "0.
|
|
9
|
+
version: "0.3.0",
|
|
10
10
|
});
|
|
11
11
|
for (const tool of tools) {
|
|
12
12
|
server.registerTool(tool.name, {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EconomicEvent } from "./market-types.js";
|
|
2
|
+
export declare const LAST_UPDATED = "2026-05-01";
|
|
3
|
+
export declare const ECONOMIC_EVENTS: readonly EconomicEvent[];
|
|
4
|
+
export declare function jstDateKey(now?: Date): string;
|
|
5
|
+
export declare function getEventsForDate(date: string, events?: readonly EconomicEvent[]): EconomicEvent[];
|
|
6
|
+
export declare function getEventsForWeek(fromDate: string, events?: readonly EconomicEvent[]): EconomicEvent[];
|
|
7
|
+
export declare function filterByImportance(events: readonly EconomicEvent[], minImportance: 1 | 2 | 3): EconomicEvent[];
|
|
8
|
+
export declare const COUNTRY_LABEL: Record<EconomicEvent["country"], string>;
|
|
9
|
+
export declare const IMPORTANCE_STARS: Record<EconomicEvent["importance"], string>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
// 主要経済イベントカレンダー(2026 年 5 月〜10 月)。
|
|
2
|
+
// FOMC・日銀会合・米雇用統計・CPI・GDP・中国 PMI など、相場に影響大きいイベントのみ収録。
|
|
3
|
+
// 第三者 API に依存しない自前データ → AdSense YMYL 配慮 + スクレイピング先 DOM 変更で死なない。
|
|
4
|
+
// 半年に 1 回 PR で追加運用、`scripts/check-events-freshness.mjs` で 90 日前から CI 警告。
|
|
5
|
+
//
|
|
6
|
+
// 重要度: 1=★(参考)/ 2=★★(重要)/ 3=★★★(必読)。
|
|
7
|
+
// 日付は JST、時刻が示す場合は HH:MM JST。終日イベント(FOMC 結果等)は time 省略。
|
|
8
|
+
export const LAST_UPDATED = "2026-05-01";
|
|
9
|
+
export const ECONOMIC_EVENTS = [
|
|
10
|
+
// ============ 2026 年 5 月 ============
|
|
11
|
+
{ date: "2026-05-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(4 月)", importance: 2 },
|
|
12
|
+
{ date: "2026-05-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(4 月)", importance: 3 },
|
|
13
|
+
{ date: "2026-05-02", time: "21:30", country: "US", name: "米 雇用統計(4 月)", importance: 3, note: "非農業部門雇用者数・失業率・平均時給" },
|
|
14
|
+
{ date: "2026-05-05", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(4 月)", importance: 2 },
|
|
15
|
+
{ date: "2026-05-09", time: "08:50", country: "JP", name: "日銀 金融政策決定会合 議事要旨", importance: 2 },
|
|
16
|
+
{ date: "2026-05-13", time: "21:30", country: "US", name: "米 CPI(4 月)", importance: 3, note: "総合・コア前年比" },
|
|
17
|
+
{ date: "2026-05-14", time: "21:30", country: "US", name: "米 PPI(4 月)", importance: 2 },
|
|
18
|
+
{ date: "2026-05-15", time: "21:30", country: "US", name: "米 小売売上高(4 月)", importance: 2 },
|
|
19
|
+
{ date: "2026-05-15", country: "JP", name: "日 GDP 一次速報(1-3 月期)", importance: 3 },
|
|
20
|
+
{ date: "2026-05-22", time: "08:30", country: "JP", name: "日 CPI(4 月)", importance: 2 },
|
|
21
|
+
{ date: "2026-05-29", time: "21:30", country: "US", name: "米 PCE 価格指数(4 月)", importance: 3, note: "FRB が重視するインフレ指標" },
|
|
22
|
+
// ============ 2026 年 6 月 ============
|
|
23
|
+
{ date: "2026-06-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(5 月)", importance: 2 },
|
|
24
|
+
{ date: "2026-06-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(5 月)", importance: 3 },
|
|
25
|
+
{ date: "2026-06-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(5 月)", importance: 2 },
|
|
26
|
+
{ date: "2026-06-05", time: "21:30", country: "US", name: "米 雇用統計(5 月)", importance: 3 },
|
|
27
|
+
{ date: "2026-06-10", time: "21:30", country: "US", name: "米 CPI(5 月)", importance: 3 },
|
|
28
|
+
{ date: "2026-06-11", time: "21:30", country: "US", name: "米 PPI(5 月)", importance: 2 },
|
|
29
|
+
{ date: "2026-06-12", country: "JP", name: "日 SQ(先物・オプション特別清算指数)", importance: 1 },
|
|
30
|
+
{ date: "2026-06-15", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
31
|
+
{ date: "2026-06-16", country: "JP", name: "日銀 金融政策決定会合(結果発表)", importance: 3, note: "総裁会見あり" },
|
|
32
|
+
{ date: "2026-06-16", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
33
|
+
{ date: "2026-06-17", time: "27:00", country: "US", name: "FOMC 結果発表 + 経済予測", importance: 3, note: "ドットチャート更新月" },
|
|
34
|
+
{ date: "2026-06-17", time: "27:30", country: "US", name: "FRB 議長記者会見", importance: 3 },
|
|
35
|
+
{ date: "2026-06-26", time: "21:30", country: "US", name: "米 PCE 価格指数(5 月)", importance: 3 },
|
|
36
|
+
// ============ 2026 年 7 月 ============
|
|
37
|
+
{ date: "2026-07-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(6 月)", importance: 2 },
|
|
38
|
+
{ date: "2026-07-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(6 月)", importance: 3 },
|
|
39
|
+
{ date: "2026-07-01", time: "08:50", country: "JP", name: "日銀短観(4-6 月期)", importance: 3, note: "大企業製造業 DI 等" },
|
|
40
|
+
{ date: "2026-07-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(6 月)", importance: 2 },
|
|
41
|
+
{ date: "2026-07-04", country: "US", name: "米 独立記念日(市場休場)", importance: 1 },
|
|
42
|
+
{ date: "2026-07-04", time: "21:30", country: "US", name: "米 雇用統計(6 月)", importance: 3, note: "祝日繰り上げ発表の可能性" },
|
|
43
|
+
{ date: "2026-07-10", country: "JP", name: "日 SQ", importance: 1 },
|
|
44
|
+
{ date: "2026-07-15", time: "21:30", country: "US", name: "米 CPI(6 月)", importance: 3 },
|
|
45
|
+
{ date: "2026-07-15", time: "11:00", country: "CN", name: "中国 GDP(4-6 月期)", importance: 3 },
|
|
46
|
+
{ date: "2026-07-16", time: "21:30", country: "US", name: "米 PPI(6 月)", importance: 2 },
|
|
47
|
+
{ date: "2026-07-17", time: "21:30", country: "US", name: "米 小売売上高(6 月)", importance: 2 },
|
|
48
|
+
{ date: "2026-07-30", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
49
|
+
{ date: "2026-07-31", country: "JP", name: "日銀 金融政策決定会合(結果 + 展望レポート)", importance: 3, note: "総裁会見あり" },
|
|
50
|
+
{ date: "2026-07-28", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
51
|
+
{ date: "2026-07-29", time: "27:00", country: "US", name: "FOMC 結果発表", importance: 3 },
|
|
52
|
+
{ date: "2026-07-30", time: "21:30", country: "US", name: "米 GDP 速報値(4-6 月期)", importance: 3 },
|
|
53
|
+
{ date: "2026-07-31", time: "21:30", country: "US", name: "米 PCE 価格指数(6 月)", importance: 3 },
|
|
54
|
+
// ============ 2026 年 8 月 ============
|
|
55
|
+
{ date: "2026-08-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(7 月)", importance: 2 },
|
|
56
|
+
{ date: "2026-08-03", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(7 月)", importance: 3 },
|
|
57
|
+
{ date: "2026-08-05", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(7 月)", importance: 2 },
|
|
58
|
+
{ date: "2026-08-07", time: "21:30", country: "US", name: "米 雇用統計(7 月)", importance: 3 },
|
|
59
|
+
{ date: "2026-08-12", time: "21:30", country: "US", name: "米 CPI(7 月)", importance: 3 },
|
|
60
|
+
{ date: "2026-08-13", time: "21:30", country: "US", name: "米 PPI(7 月)", importance: 2 },
|
|
61
|
+
{ date: "2026-08-14", time: "21:30", country: "US", name: "米 小売売上高(7 月)", importance: 2 },
|
|
62
|
+
{ date: "2026-08-14", country: "JP", name: "日 SQ", importance: 1 },
|
|
63
|
+
{ date: "2026-08-17", time: "08:50", country: "JP", name: "日 GDP 一次速報(4-6 月期)", importance: 3 },
|
|
64
|
+
{ date: "2026-08-21", time: "08:30", country: "JP", name: "日 CPI(7 月)", importance: 2 },
|
|
65
|
+
{ date: "2026-08-27", country: "US", name: "ジャクソンホール会議(〜29)", importance: 3, note: "FRB 議長講演に注目" },
|
|
66
|
+
{ date: "2026-08-28", time: "21:30", country: "US", name: "米 PCE 価格指数(7 月)", importance: 3 },
|
|
67
|
+
// ============ 2026 年 9 月 ============
|
|
68
|
+
{ date: "2026-09-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(8 月)", importance: 2 },
|
|
69
|
+
{ date: "2026-09-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(8 月)", importance: 3 },
|
|
70
|
+
{ date: "2026-09-03", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(8 月)", importance: 2 },
|
|
71
|
+
{ date: "2026-09-04", time: "21:30", country: "US", name: "米 雇用統計(8 月)", importance: 3 },
|
|
72
|
+
{ date: "2026-09-11", time: "21:30", country: "US", name: "米 CPI(8 月)", importance: 3 },
|
|
73
|
+
{ date: "2026-09-11", country: "JP", name: "日 SQ", importance: 1 },
|
|
74
|
+
{ date: "2026-09-15", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
75
|
+
{ date: "2026-09-16", time: "27:00", country: "US", name: "FOMC 結果発表 + 経済予測", importance: 3, note: "ドットチャート更新月" },
|
|
76
|
+
{ date: "2026-09-17", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
77
|
+
{ date: "2026-09-18", country: "JP", name: "日銀 金融政策決定会合(結果発表)", importance: 3, note: "総裁会見あり" },
|
|
78
|
+
{ date: "2026-09-25", time: "08:30", country: "JP", name: "日 CPI(8 月)", importance: 2 },
|
|
79
|
+
{ date: "2026-09-26", time: "21:30", country: "US", name: "米 PCE 価格指数(8 月)", importance: 3 },
|
|
80
|
+
// ============ 2026 年 10 月 ============
|
|
81
|
+
{ date: "2026-10-01", time: "08:50", country: "JP", name: "日銀短観(7-9 月期)", importance: 3 },
|
|
82
|
+
{ date: "2026-10-01", time: "10:30", country: "CN", name: "中国 製造業 PMI(9 月)", importance: 2 },
|
|
83
|
+
{ date: "2026-10-01", time: "23:00", country: "US", name: "米 ISM 製造業 PMI(9 月)", importance: 3 },
|
|
84
|
+
{ date: "2026-10-02", time: "23:00", country: "US", name: "米 ISM 非製造業 PMI(9 月)", importance: 2 },
|
|
85
|
+
{ date: "2026-10-02", time: "21:30", country: "US", name: "米 雇用統計(9 月)", importance: 3 },
|
|
86
|
+
{ date: "2026-10-09", country: "JP", name: "日 SQ", importance: 1 },
|
|
87
|
+
{ date: "2026-10-13", time: "21:30", country: "US", name: "米 CPI(9 月)", importance: 3 },
|
|
88
|
+
{ date: "2026-10-14", time: "21:30", country: "US", name: "米 PPI(9 月)", importance: 2 },
|
|
89
|
+
{ date: "2026-10-19", time: "11:00", country: "CN", name: "中国 GDP(7-9 月期)", importance: 3 },
|
|
90
|
+
{ date: "2026-10-27", country: "US", name: "FOMC(1 日目)", importance: 3 },
|
|
91
|
+
{ date: "2026-10-28", time: "27:00", country: "US", name: "FOMC 結果発表", importance: 3 },
|
|
92
|
+
{ date: "2026-10-29", country: "JP", name: "日銀 金融政策決定会合(1 日目)", importance: 3 },
|
|
93
|
+
{ date: "2026-10-30", country: "JP", name: "日銀 金融政策決定会合(結果 + 展望レポート)", importance: 3, note: "総裁会見あり" },
|
|
94
|
+
{ date: "2026-10-30", time: "21:30", country: "US", name: "米 GDP 速報値(7-9 月期)", importance: 3 },
|
|
95
|
+
{ date: "2026-10-30", time: "21:30", country: "US", name: "米 PCE 価格指数(9 月)", importance: 3 },
|
|
96
|
+
];
|
|
97
|
+
// JST の年月日を yyyy-mm-dd 形式で返す(leaderboard/keys.ts と同一ロジック)。
|
|
98
|
+
export function jstDateKey(now = new Date()) {
|
|
99
|
+
const jstMs = now.getTime() + 9 * 3600 * 1000;
|
|
100
|
+
const d = new Date(jstMs);
|
|
101
|
+
const y = d.getUTCFullYear();
|
|
102
|
+
const m = String(d.getUTCMonth() + 1).padStart(2, "0");
|
|
103
|
+
const day = String(d.getUTCDate()).padStart(2, "0");
|
|
104
|
+
return `${y}-${m}-${day}`;
|
|
105
|
+
}
|
|
106
|
+
// JST 当日のイベントを返す(重要度降順)。
|
|
107
|
+
export function getEventsForDate(date, events = ECONOMIC_EVENTS) {
|
|
108
|
+
return events
|
|
109
|
+
.filter((e) => e.date === date)
|
|
110
|
+
.sort((a, b) => b.importance - a.importance ||
|
|
111
|
+
(a.time ?? "00:00").localeCompare(b.time ?? "00:00"));
|
|
112
|
+
}
|
|
113
|
+
// 当日を含む 7 日間(今日〜+6 日)のイベントを返す。
|
|
114
|
+
export function getEventsForWeek(fromDate, events = ECONOMIC_EVENTS) {
|
|
115
|
+
const start = new Date(fromDate + "T00:00:00+09:00");
|
|
116
|
+
const dates = [];
|
|
117
|
+
for (let i = 0; i < 7; i++) {
|
|
118
|
+
const d = new Date(start);
|
|
119
|
+
d.setDate(d.getDate() + i);
|
|
120
|
+
dates.push(jstDateKey(d));
|
|
121
|
+
}
|
|
122
|
+
const set = new Set(dates);
|
|
123
|
+
return events
|
|
124
|
+
.filter((e) => set.has(e.date))
|
|
125
|
+
.sort((a, b) => a.date.localeCompare(b.date) ||
|
|
126
|
+
b.importance - a.importance ||
|
|
127
|
+
(a.time ?? "00:00").localeCompare(b.time ?? "00:00"));
|
|
128
|
+
}
|
|
129
|
+
// 重要度フィルタ(最低重要度)。例: minImportance=2 で ★★ 以上のみ。
|
|
130
|
+
export function filterByImportance(events, minImportance) {
|
|
131
|
+
return events.filter((e) => e.importance >= minImportance);
|
|
132
|
+
}
|
|
133
|
+
export const COUNTRY_LABEL = {
|
|
134
|
+
JP: "🇯🇵 日本",
|
|
135
|
+
US: "🇺🇸 米国",
|
|
136
|
+
CN: "🇨🇳 中国",
|
|
137
|
+
EU: "🇪🇺 欧州",
|
|
138
|
+
GB: "🇬🇧 英国",
|
|
139
|
+
OTHER: "🌏 その他",
|
|
140
|
+
};
|
|
141
|
+
export const IMPORTANCE_STARS = {
|
|
142
|
+
1: "★",
|
|
143
|
+
2: "★★",
|
|
144
|
+
3: "★★★",
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=economic-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economic-events.js","sourceRoot":"","sources":["../../src/lib/economic-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// MCP server で扱うマクロ指標 9 銘柄。
|
|
2
|
+
// Web 側 (lit-forge/app/lib/market/indicators.ts) と同期管理。
|
|
3
|
+
export const INDICATORS = [
|
|
4
|
+
{ symbol: "JPY=X", displayName: "USD/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
5
|
+
{ symbol: "EURJPY=X", displayName: "EUR/JPY", category: "fx", unit: "円", decimals: 2, changeStyle: "ratio" },
|
|
6
|
+
{ symbol: "^N225", displayName: "日経平均", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
7
|
+
{ symbol: "^TPX", fallback: "1305.T", displayName: "TOPIX", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
8
|
+
{ symbol: "^GSPC", displayName: "S&P 500", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
9
|
+
{ symbol: "^NDX", displayName: "NASDAQ 100", category: "equity", unit: "", decimals: 2, changeStyle: "ratio" },
|
|
10
|
+
{ symbol: "^TNX", displayName: "米10年債利回り", category: "bond", unit: "%", decimals: 3, changeStyle: "bp" },
|
|
11
|
+
{ symbol: "GC=F", displayName: "金(先物)", category: "commodity", unit: "USD/oz", decimals: 2, changeStyle: "ratio" },
|
|
12
|
+
{ symbol: "CL=F", displayName: "原油 WTI", category: "commodity", unit: "USD/bbl", decimals: 2, changeStyle: "ratio" },
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=indicators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indicators.js","sourceRoot":"","sources":["../../src/lib/indicators.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,wDAAwD;AAIxD,MAAM,CAAC,MAAM,UAAU,GAAyB;IAC9C,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IACzG,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IAC5G,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IACzG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IAC7H,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IAC5G,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IAC9G,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IACxG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;IAClH,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE;CACrH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type IndicatorCategory = "fx" | "equity" | "bond" | "commodity";
|
|
2
|
+
export type ChangeStyle = "ratio" | "bp";
|
|
3
|
+
export type Indicator = {
|
|
4
|
+
symbol: string;
|
|
5
|
+
fallback?: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
category: IndicatorCategory;
|
|
8
|
+
unit: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
changeStyle: ChangeStyle;
|
|
11
|
+
};
|
|
12
|
+
export type Quote = {
|
|
13
|
+
symbol: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
category: IndicatorCategory;
|
|
16
|
+
price: number;
|
|
17
|
+
previousClose: number;
|
|
18
|
+
change: number;
|
|
19
|
+
changePercent: number;
|
|
20
|
+
changeBp: number;
|
|
21
|
+
unit: string;
|
|
22
|
+
fetchedAt: string;
|
|
23
|
+
};
|
|
24
|
+
export type QuoteResult = Quote | {
|
|
25
|
+
symbol: string;
|
|
26
|
+
error: string;
|
|
27
|
+
};
|
|
28
|
+
export type Snapshot = {
|
|
29
|
+
fetchedAt: string;
|
|
30
|
+
quotes: QuoteResult[];
|
|
31
|
+
};
|
|
32
|
+
export type EventImportance = 1 | 2 | 3;
|
|
33
|
+
export type Country = "JP" | "US" | "CN" | "EU" | "GB" | "OTHER";
|
|
34
|
+
export type EconomicEvent = {
|
|
35
|
+
date: string;
|
|
36
|
+
time?: string;
|
|
37
|
+
country: Country;
|
|
38
|
+
name: string;
|
|
39
|
+
importance: EventImportance;
|
|
40
|
+
note?: string;
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-types.js","sourceRoot":"","sources":["../../src/lib/market-types.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,uDAAuD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Indicator, Quote, QuoteResult, Snapshot } from "./market-types.js";
|
|
2
|
+
export declare class YahooFinanceError extends Error {
|
|
3
|
+
readonly symbol: string;
|
|
4
|
+
readonly status: number;
|
|
5
|
+
constructor(symbol: string, status: number, message?: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function fetchQuoteForIndicator(indicator: Indicator): Promise<QuoteResult>;
|
|
8
|
+
export declare function fetchQuoteBySymbol(symbol: string): Promise<Quote>;
|
|
9
|
+
export declare function fetchSnapshot(): Promise<Snapshot>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Yahoo Finance v8 chart API ラッパー(MCP server 用)。
|
|
2
|
+
// Web 側の app/lib/market/yahoo.ts と同期管理。
|
|
3
|
+
// Node 18+ の global fetch を使用、依存追加なし。
|
|
4
|
+
import { INDICATORS } from "./indicators.js";
|
|
5
|
+
const UA = "Mozilla/5.0 (compatible; lit-forge-mcp/0.3; +https://lit-forge.com/)";
|
|
6
|
+
const TIMEOUT_MS = 4000;
|
|
7
|
+
export class YahooFinanceError extends Error {
|
|
8
|
+
symbol;
|
|
9
|
+
status;
|
|
10
|
+
constructor(symbol, status, message) {
|
|
11
|
+
super(message ?? `Yahoo Finance API ${symbol}: HTTP ${status}`);
|
|
12
|
+
this.symbol = symbol;
|
|
13
|
+
this.status = status;
|
|
14
|
+
this.name = "YahooFinanceError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function fetchRaw(symbol) {
|
|
18
|
+
const url = `https://query1.finance.yahoo.com/v8/finance/chart/${encodeURIComponent(symbol)}` +
|
|
19
|
+
`?range=1d&interval=15m`;
|
|
20
|
+
let res;
|
|
21
|
+
try {
|
|
22
|
+
res = await fetch(url, {
|
|
23
|
+
headers: { "User-Agent": UA, Accept: "application/json" },
|
|
24
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
const msg = e instanceof Error ? e.message : "fetch failed";
|
|
29
|
+
throw new YahooFinanceError(symbol, 0, `Yahoo Finance ${symbol}: ${msg}`);
|
|
30
|
+
}
|
|
31
|
+
if (!res.ok)
|
|
32
|
+
throw new YahooFinanceError(symbol, res.status);
|
|
33
|
+
const data = (await res.json());
|
|
34
|
+
const result = data.chart.result?.[0];
|
|
35
|
+
if (!result) {
|
|
36
|
+
const desc = data.chart.error?.description ?? "empty result";
|
|
37
|
+
throw new YahooFinanceError(symbol, 0, `Yahoo Finance ${symbol}: ${desc}`);
|
|
38
|
+
}
|
|
39
|
+
const meta = result.meta;
|
|
40
|
+
const price = meta.regularMarketPrice;
|
|
41
|
+
const previousClose = meta.chartPreviousClose ?? meta.previousClose;
|
|
42
|
+
if (typeof price !== "number" || typeof previousClose !== "number") {
|
|
43
|
+
throw new YahooFinanceError(symbol, 0, `Yahoo Finance ${symbol}: missing price/previousClose`);
|
|
44
|
+
}
|
|
45
|
+
const change = price - previousClose;
|
|
46
|
+
const changePercent = previousClose !== 0 ? (change / previousClose) * 100 : 0;
|
|
47
|
+
const changeBp = change * 100;
|
|
48
|
+
const fetchedAt = new Date(meta.regularMarketTime ? meta.regularMarketTime * 1000 : Date.now()).toISOString();
|
|
49
|
+
return {
|
|
50
|
+
symbol,
|
|
51
|
+
displayName: symbol,
|
|
52
|
+
category: "fx",
|
|
53
|
+
price,
|
|
54
|
+
previousClose,
|
|
55
|
+
change,
|
|
56
|
+
changePercent,
|
|
57
|
+
changeBp,
|
|
58
|
+
unit: "",
|
|
59
|
+
fetchedAt,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// indicator のメタを Quote に上書きして返す。
|
|
63
|
+
function applyMeta(quote, indicator) {
|
|
64
|
+
return {
|
|
65
|
+
...quote,
|
|
66
|
+
displayName: indicator.displayName,
|
|
67
|
+
category: indicator.category,
|
|
68
|
+
unit: indicator.unit,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// indicator から fetch、失敗時は fallback を試す。
|
|
72
|
+
export async function fetchQuoteForIndicator(indicator) {
|
|
73
|
+
try {
|
|
74
|
+
const quote = await fetchRaw(indicator.symbol);
|
|
75
|
+
return applyMeta(quote, indicator);
|
|
76
|
+
}
|
|
77
|
+
catch (primaryErr) {
|
|
78
|
+
if (!indicator.fallback) {
|
|
79
|
+
const m = primaryErr instanceof Error ? primaryErr.message : "unknown";
|
|
80
|
+
return { symbol: indicator.symbol, error: m };
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const quote = await fetchRaw(indicator.fallback);
|
|
84
|
+
return applyMeta(quote, indicator);
|
|
85
|
+
}
|
|
86
|
+
catch (fallbackErr) {
|
|
87
|
+
const m1 = primaryErr instanceof Error ? primaryErr.message : "primary";
|
|
88
|
+
const m2 = fallbackErr instanceof Error ? fallbackErr.message : "fallback";
|
|
89
|
+
return { symbol: indicator.symbol, error: `${m1} / ${m2}` };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// 任意の symbol を 1 件取得(get_quote ツール用)。
|
|
94
|
+
export async function fetchQuoteBySymbol(symbol) {
|
|
95
|
+
return fetchRaw(symbol);
|
|
96
|
+
}
|
|
97
|
+
// 9 銘柄を並列取得して Snapshot を返す。
|
|
98
|
+
export async function fetchSnapshot() {
|
|
99
|
+
const results = await Promise.allSettled(INDICATORS.map((ind) => fetchQuoteForIndicator(ind)));
|
|
100
|
+
const quotes = results.map((r, i) => {
|
|
101
|
+
if (r.status === "fulfilled")
|
|
102
|
+
return r.value;
|
|
103
|
+
return {
|
|
104
|
+
symbol: INDICATORS[i].symbol,
|
|
105
|
+
error: r.reason instanceof Error ? r.reason.message : "unknown",
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
return { fetchedAt: new Date().toISOString(), quotes };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=yahoo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yahoo.js","sourceRoot":"","sources":["../../src/lib/yahoo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// 当日 or 今週の経済イベント(FOMC・日銀・雇用統計・CPI 等)を返す。
|
|
2
|
+
// データは自前ハードコード(economic-events.ts、半年分)。
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { COUNTRY_LABEL, IMPORTANCE_STARS, LAST_UPDATED, filterByImportance, getEventsForDate, getEventsForWeek, jstDateKey, } from "../lib/economic-events.js";
|
|
5
|
+
import { jsonReply } from "./types.js";
|
|
6
|
+
const inputSchema = {
|
|
7
|
+
range: z
|
|
8
|
+
.enum(["today", "week"])
|
|
9
|
+
.optional()
|
|
10
|
+
.describe("期間: today=本日のみ / week=今日含む 7 日間。既定 today"),
|
|
11
|
+
minImportance: z
|
|
12
|
+
.union([z.literal(1), z.literal(2), z.literal(3)])
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("最低重要度フィルタ: 1=★以上 / 2=★★以上 / 3=★★★のみ。既定 1"),
|
|
15
|
+
};
|
|
16
|
+
export const getEconomicEventsTodayTool = {
|
|
17
|
+
name: "get_economic_events_today",
|
|
18
|
+
title: "本日・今週の経済イベント",
|
|
19
|
+
description: "本日(または今週)の主要経済イベント(FOMC・日銀金融政策決定会合・米雇用統計・CPI・GDP・中国 PMI など)を返します。データは lit-forge 運営者が手動キュレーションした半年分のスケジュール。",
|
|
20
|
+
inputSchema,
|
|
21
|
+
handler: ({ range, minImportance }) => {
|
|
22
|
+
const today = jstDateKey();
|
|
23
|
+
const events = range === "week" ? getEventsForWeek(today) : getEventsForDate(today);
|
|
24
|
+
const filtered = filterByImportance(events, minImportance ?? 1);
|
|
25
|
+
return jsonReply({
|
|
26
|
+
today,
|
|
27
|
+
range: range ?? "today",
|
|
28
|
+
lastUpdated: LAST_UPDATED,
|
|
29
|
+
count: filtered.length,
|
|
30
|
+
events: filtered.map((e) => ({
|
|
31
|
+
date: e.date,
|
|
32
|
+
time: e.time ?? "終日",
|
|
33
|
+
country: COUNTRY_LABEL[e.country],
|
|
34
|
+
name: e.name,
|
|
35
|
+
importance: IMPORTANCE_STARS[e.importance],
|
|
36
|
+
note: e.note,
|
|
37
|
+
})),
|
|
38
|
+
note: "経済イベントは半年に 1 回手動更新。急な発表変更や中銀緊急会合は反映されない場合があります。",
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=get-economic-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-economic-events.js","sourceRoot":"","sources":["../../src/tools/get-economic-events.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wCAAwC;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,CAAC;SACL,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACvB,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACjD,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAiB;IACtD,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,cAAc;IACrB,WAAW,EACT,4GAA4G;IAC9G,WAAW;IACX,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC;YACf,KAAK;YACL,KAAK,EAAE,KAAK,IAAI,OAAO;YACvB,WAAW,EAAE,YAAY;YACzB,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;gBACpB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC1C,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YACH,IAAI,EACF,iDAAiD;SACpD,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// 主要マクロ指標 9 銘柄(為替・株・金利・コモディティ)の現在値・前日比を一括取得。
|
|
2
|
+
// /today ページと同等情報を Claude Desktop / Cursor から呼べる。
|
|
3
|
+
import { fetchSnapshot } from "../lib/yahoo.js";
|
|
4
|
+
import { errorReply, jsonReply } from "./types.js";
|
|
5
|
+
export const getMarketSnapshotTool = {
|
|
6
|
+
name: "get_market_snapshot",
|
|
7
|
+
title: "主要マクロ指標スナップショット",
|
|
8
|
+
description: "USD/JPY・EUR/JPY・日経平均・TOPIX・S&P 500・NASDAQ 100・米10年債利回り・金・原油 WTI の現在値と前日比を Yahoo Finance から取得します。lit-forge.com/today と同等の情報。約 1 時間遅れの参考値で、投資助言ではありません。",
|
|
9
|
+
inputSchema: {},
|
|
10
|
+
handler: async () => {
|
|
11
|
+
try {
|
|
12
|
+
const snapshot = await fetchSnapshot();
|
|
13
|
+
const successCount = snapshot.quotes.filter((q) => !("error" in q)).length;
|
|
14
|
+
return jsonReply({
|
|
15
|
+
fetchedAt: snapshot.fetchedAt,
|
|
16
|
+
successCount,
|
|
17
|
+
totalCount: snapshot.quotes.length,
|
|
18
|
+
quotes: snapshot.quotes,
|
|
19
|
+
note: "データは Yahoo Finance より取得(約 1 時間遅れ)。投資助言ではなく情報集約。",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
return errorReply(`Yahoo Finance API への接続に失敗しました: ${e instanceof Error ? e.message : "unknown"}`);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=get-market-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-market-snapshot.js","sourceRoot":"","sources":["../../src/tools/get-market-snapshot.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,kDAAkD;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAEtE,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,uJAAuJ;IACzJ,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3E,OAAO,SAAS,CAAC;gBACf,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,YAAY;gBACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;gBAClC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,iDAAiD;aACxD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,UAAU,CACf,kCACE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SACnC,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// 任意の Yahoo Finance ティッカーで単発の現在値・前日比を取得する。
|
|
2
|
+
// 9 主要指標以外(個別株・他通貨ペア・他コモディティ等)を確認したいケース用の拡張点。
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { fetchQuoteBySymbol } from "../lib/yahoo.js";
|
|
5
|
+
import { errorReply, jsonReply } from "./types.js";
|
|
6
|
+
const inputSchema = {
|
|
7
|
+
symbol: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(20)
|
|
11
|
+
.describe("Yahoo Finance ティッカー。例: AAPL(アップル株)/ ^DJI(NY ダウ)/ BTC-USD(ビットコイン)/ GBPJPY=X(ポンド円)"),
|
|
12
|
+
};
|
|
13
|
+
export const getQuoteTool = {
|
|
14
|
+
name: "get_quote",
|
|
15
|
+
title: "任意ティッカーの現在値取得",
|
|
16
|
+
description: "Yahoo Finance の任意ティッカー(株・為替・指数・コモディティ・暗号資産)の現在値・前日比・スパークラインを取得します。get_market_snapshot で扱う 9 指標以外を確認したいときに使用。投資助言ではありません。",
|
|
17
|
+
inputSchema,
|
|
18
|
+
handler: async ({ symbol }) => {
|
|
19
|
+
try {
|
|
20
|
+
const quote = await fetchQuoteBySymbol(symbol);
|
|
21
|
+
return jsonReply({
|
|
22
|
+
...quote,
|
|
23
|
+
note: "Yahoo Finance より取得(約 1 時間遅れ)。投資助言ではなく情報集約。",
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
return errorReply(`${symbol} の取得に失敗しました: ${e instanceof Error ? e.message : "unknown"}。Yahoo Finance のティッカーが正しいか確認してください(例: AAPL / ^DJI / BTC-USD)`);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=get-quote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-quote.js","sourceRoot":"","sources":["../../src/tools/get-quote.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,8CAA8C;AAE9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAqB,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CACP,kFAAkF,CACnF;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,0HAA0H;IAC5H,WAAW;IACX,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,SAAS,CAAC;gBACf,GAAG,KAAK;gBACR,IAAI,EAAE,4CAA4C;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,UAAU,CACf,GAAG,MAAM,gBACP,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SACnC,8DAA8D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -2,14 +2,22 @@
|
|
|
2
2
|
//
|
|
3
3
|
// v0.2.0 で「金融・個人投資家特化」にピボット。旧 dev utility 10 ツールを廃止し、
|
|
4
4
|
// つみたて NISA・iDeCo を中心とした資産形成プランナー系 4 ツールに刷新。
|
|
5
|
+
// v0.3.0 で「毎朝の市況チェック」系 3 ツール(市況スナップショット・経済イベント・任意ティッカー取得)を追加。
|
|
6
|
+
// 初の HTTP fetch 導入(Yahoo Finance)— ローカル PC からインターネットに出ます。
|
|
5
7
|
import { simulateNisaTool } from "./simulate-nisa.js";
|
|
6
8
|
import { planRetirementTool } from "./plan-retirement.js";
|
|
7
9
|
import { calculateRequiredMonthlyTool } from "./calculate-required-monthly.js";
|
|
8
10
|
import { calculateCompoundInterestTool } from "./calculate-compound-interest.js";
|
|
11
|
+
import { getMarketSnapshotTool } from "./get-market-snapshot.js";
|
|
12
|
+
import { getEconomicEventsTodayTool } from "./get-economic-events.js";
|
|
13
|
+
import { getQuoteTool } from "./get-quote.js";
|
|
9
14
|
export const tools = [
|
|
10
15
|
simulateNisaTool,
|
|
11
16
|
planRetirementTool,
|
|
12
17
|
calculateRequiredMonthlyTool,
|
|
13
18
|
calculateCompoundInterestTool,
|
|
19
|
+
getMarketSnapshotTool,
|
|
20
|
+
getEconomicEventsTodayTool,
|
|
21
|
+
getQuoteTool,
|
|
14
22
|
];
|
|
15
23
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,sDAAsD;AACtD,6CAA6C;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,sDAAsD;AACtD,6CAA6C;AAC7C,8DAA8D;AAC9D,0DAA0D;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,4BAA4B;IAC5B,6BAA6B;IAC7B,qBAAqB;IACrB,0BAA0B;IAC1B,YAAY;CACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lit-forge-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"mcpName": "io.github.noblabs/lit-forge-mcp",
|
|
5
|
-
"description": "MCP server for personal asset planning: NISA / iDeCo simulation, retirement planning,
|
|
5
|
+
"description": "MCP server for personal asset planning + daily market check: NISA / iDeCo simulation, retirement planning, market snapshot (USD/JPY, Nikkei, S&P 500, etc.), economic event calendar.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"homepage": "https://lit-forge.com",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"ideco",
|
|
24
24
|
"retirement",
|
|
25
25
|
"compound-interest",
|
|
26
|
+
"market-data",
|
|
27
|
+
"stock-quote",
|
|
28
|
+
"forex",
|
|
29
|
+
"economic-calendar",
|
|
26
30
|
"japan"
|
|
27
31
|
],
|
|
28
32
|
"bin": {
|