openclaw-stock-kit 0.2.0__tar.gz

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.
Files changed (23) hide show
  1. openclaw_stock_kit-0.2.0/.gitignore +79 -0
  2. openclaw_stock_kit-0.2.0/LICENSE +21 -0
  3. openclaw_stock_kit-0.2.0/PKG-INFO +175 -0
  4. openclaw_stock_kit-0.2.0/README.md +144 -0
  5. openclaw_stock_kit-0.2.0/pyproject.toml +57 -0
  6. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/__init__.py +9 -0
  7. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/__main__.py +428 -0
  8. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/.claude-plugin/plugin.json +20 -0
  9. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/.mcp.json +6 -0
  10. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/agents/stock-expert.md +204 -0
  11. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/commands/stock.md +43 -0
  12. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/hooks/hooks.json +3 -0
  13. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/claude-code/skills/stock-analysis/SKILL.md +65 -0
  14. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/extensions/openclaw/stock-expert/SKILL.md +70 -0
  15. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/kis_mcp_server.py +342 -0
  16. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/kiwoom_mcp_server.py +334 -0
  17. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/kiwoom_rest_client.py +466 -0
  18. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/news_mcp_server.py +744 -0
  19. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/premium.py +451 -0
  20. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/pykrx_mcp_server.py +1045 -0
  21. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/response.py +86 -0
  22. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/settings.html +668 -0
  23. openclaw_stock_kit-0.2.0/src/openclaw_stock_kit/setup.py +244 -0
@@ -0,0 +1,79 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ venv/
8
+ ENV/
9
+ **/venv/
10
+ **/.venv*/
11
+
12
+ # IDE
13
+ .vscode/
14
+ .idea/
15
+
16
+ # OS
17
+ .DS_Store
18
+ Thumbs.db
19
+
20
+ # 임시 파일
21
+ *.log
22
+ *.tmp
23
+ *.temp
24
+
25
+ # 큰 데이터 파일
26
+ *.csv
27
+ *.csv.gz
28
+ *.gz
29
+ *.xlsx
30
+ *.tar.gz
31
+ *.db
32
+ *.db-*
33
+
34
+ # --- Market/backtest big data (local only) ---
35
+ # 기본 원칙: 원천/대용량 데이터는 Git에 올리지 않음
36
+ /data/**
37
+
38
+ # 문서/메타는 예외로 추적 허용
39
+ !/data/**/README.md
40
+ !/data/**/_meta.json
41
+ !/data/**/_trading_days.json
42
+ !/data/**/_calendar*.json
43
+
44
+ # Generated backtest outputs that should live under reports/backtests or data/backtests
45
+ projects/readinginvestor/strategies/jongga/backtest_result_*.json
46
+ projects/readinginvestor/strategies/jongga/backtest_trades_*.csv
47
+
48
+ # 큰 JSON 파일 제외
49
+ projects/*/data/minute_bars_*.json
50
+ public/youtube_content_system/server/*.db*
51
+
52
+ # 백테스트 결과는 포함 (JSON 허용)
53
+ !projects/*/data/backtest*.json
54
+ !projects/*/data/jongga*.json
55
+ !projects/*/data/*_backtest.json
56
+ !*.json
57
+
58
+ # 민감 정보
59
+ .env
60
+ .env.local
61
+ credentials.json
62
+ token.json
63
+ */.secrets/
64
+
65
+ # Archive 백업 (Git에 포함 안 함)
66
+ archive/backups/*.tar.gz
67
+ archive/backtests/
68
+
69
+ # Node modules
70
+ node_modules/
71
+
72
+ # 중첩 Git 리포지토리
73
+ thematracker-electron/
74
+ canada/kijiji/chrome_profile/
75
+ server_logs/
76
+
77
+ # Generated public assets
78
+ /public/market_research/thumbnails/
79
+ /public/kijiji_output/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenClaw
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,175 @@
1
+ Metadata-Version: 2.4
2
+ Name: openclaw-stock-kit
3
+ Version: 0.2.0
4
+ Summary: Korean stock data MCP server — PyKRX, Kiwoom, KIS in one gateway
5
+ Project-URL: Homepage, https://github.com/juneiu012/openclaw
6
+ Project-URL: Documentation, https://docs.openclaw.ai
7
+ Project-URL: Repository, https://github.com/juneiu012/openclaw/tree/master/projects/stock-kit-free
8
+ Author-email: OpenClaw <dev@openclaw.ai>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: claude,kis,kiwoom,korea,mcp,naver,pykrx,stock,telegram
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Office/Business :: Financial :: Investment
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: fastmcp>=2.0.0
20
+ Requires-Dist: pykrx>=1.0.0
21
+ Requires-Dist: python-dotenv>=1.0.0
22
+ Requires-Dist: requests>=2.28.0
23
+ Requires-Dist: telethon>=1.36.0
24
+ Provides-Extra: all
25
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == 'all'
26
+ Provides-Extra: db
27
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == 'db'
28
+ Provides-Extra: kis
29
+ Provides-Extra: kiwoom
30
+ Description-Content-Type: text/markdown
31
+
32
+ # OpenClaw Stock Kit
33
+
34
+ Korean stock data MCP server — one command install for Claude Code, Cursor, and OpenClaw.
35
+
36
+ ```bash
37
+ uvx openclaw-stock-kit
38
+ ```
39
+
40
+ ## Install
41
+
42
+ ### One-command setup (Claude Code + OpenClaw)
43
+
44
+ ```bash
45
+ # Install Claude Code plugin + OpenClaw skill at once
46
+ uvx openclaw-stock-kit setup
47
+
48
+ # Or install individually
49
+ uvx openclaw-stock-kit setup claude-code # Claude Code plugin only
50
+ uvx openclaw-stock-kit setup openclaw # OpenClaw skill only
51
+ ```
52
+
53
+ This installs:
54
+ - **Claude Code**: Plugin files to `~/.claude/plugins/marketplaces/stock-kit/` (agent, /stock command, MCP config)
55
+ - **OpenClaw**: Skill to `~/.openclaw/workspace/skills/stock-expert/`
56
+
57
+ ### Manual setup
58
+
59
+ ```bash
60
+ # 1. Run (browser settings page opens at http://localhost:8200)
61
+ uvx openclaw-stock-kit
62
+
63
+ # 2. Enter API keys in browser → Save
64
+
65
+ # 3. Register as MCP (Claude Code)
66
+ claude mcp add stock-kit -- uvx openclaw-stock-kit --stdio
67
+ ```
68
+
69
+ ### Cursor / Claude Desktop
70
+
71
+ ```json
72
+ {
73
+ "mcpServers": {
74
+ "stock-kit": {
75
+ "command": "uvx",
76
+ "args": ["openclaw-stock-kit", "--stdio"]
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ ## Free Tools (10 MCP tools)
83
+
84
+ | Module | Tools | Source |
85
+ |--------|-------|--------|
86
+ | **Stock Data Kit** | `datakit_call` (13 functions) | PyKRX, DART, ECOS, Exchange Rate |
87
+ | **Kiwoom** | `kiwoom_call_api` (159 APIs) | Kiwoom REST API |
88
+ | **KIS** | `kis_call_tool` (68 APIs) | Korea Investment & Securities |
89
+ | **Gateway** | `gateway_status` | Status check |
90
+
91
+ > **ABI Contract**: Tool names (`datakit_call`, `kiwoom_call_api`, etc.) are stable and will never be renamed — only deprecated with 3-version notice. See [STANDARD.md](STANDARD.md).
92
+
93
+ ### API Keys (free to get)
94
+
95
+ | Key | Source | Required |
96
+ |-----|--------|----------|
97
+ | `DART_API_KEY` | [DART](https://opendart.fss.or.kr/) | For disclosures |
98
+ | `ECOS_API_KEY` | [ECOS](https://ecos.bok.or.kr/) | For macro indicators |
99
+ | `EXIM_API_KEY` | [EXIM Bank](https://www.koreaexim.go.kr/) | For exchange rates |
100
+ | Kiwoom credentials | [Kiwoom](https://www.kiwoom.com/) | For Kiwoom APIs |
101
+ | KIS credentials | [KIS](https://www.truefriend.com/) | For KIS APIs |
102
+
103
+ PyKRX (stock prices, supply/demand) works without any API key.
104
+
105
+ ### Response Format
106
+
107
+ All tools return a standardized response:
108
+
109
+ ```json
110
+ {"ok": true, "source": "datakit", "asof": "2026-02-17T09:30:00+09:00", "data": {...}, "error": null}
111
+ ```
112
+
113
+ See [STANDARD.md](STANDARD.md) for full schema and error codes.
114
+
115
+ ## Premium (license key)
116
+
117
+ | Feature | Description |
118
+ |---------|-------------|
119
+ | Morning/Afternoon Briefing | AI-generated market analysis |
120
+ | TOP30/Memo Excel | Daily stock rankings & analysis Excel |
121
+ | Backtesting | Trading strategy simulation (종가매매 etc.) |
122
+ | Trading Courses | Step-by-step trading methodology |
123
+
124
+ ```bash
125
+ # Set license key via settings page or environment variable
126
+ export OPENCLAW_LICENSE_KEY=OCKP-XXXXXX-XXXXXX-XXXXXX
127
+ ```
128
+
129
+ **Premium requires server verification.** License keys are validated against the OpenClaw license server on each session. If the server is unreachable, a 24-hour grace period applies for previously verified keys. Without prior server verification, premium features remain locked — free tools continue to work normally.
130
+
131
+ Purchase: [openclaw.ai/premium](https://openclaw.ai/premium)
132
+
133
+ ## Modes
134
+
135
+ ```bash
136
+ uvx openclaw-stock-kit # SSE + settings page (default)
137
+ uvx openclaw-stock-kit serve # same as above (explicit)
138
+ uvx openclaw-stock-kit -p 9000 # custom port
139
+ uvx openclaw-stock-kit --stdio # stdio for MCP registration
140
+ uvx openclaw-stock-kit setup # install Claude Code plugin + OpenClaw skill
141
+ ```
142
+
143
+ ## Version Pinning
144
+
145
+ For CI/production environments, pin to a specific version:
146
+
147
+ ```bash
148
+ uvx openclaw-stock-kit==1.0.3 # exact version
149
+ uvx openclaw-stock-kit>=1.0,<2.0 # compatible range
150
+ ```
151
+
152
+ ## Security
153
+
154
+ - **API key storage**: `~/.openclaw-stock-kit/api_keys.json` (directory 700, file 600 permissions)
155
+ - **License verification**: Server-side verification required (fail-closed). 24h grace for previously verified keys when server is unreachable. Local HMAC is format-check only — it does not grant premium access.
156
+ - **Network**: All external API calls use HTTPS (localhost dev excluded)
157
+ - **No telemetry**: No usage data collected
158
+
159
+ ## Data Sources
160
+
161
+ - [PyKRX](https://github.com/sharebook-kr/pykrx) — KRX public data
162
+ - [OpenDART](https://opendart.fss.or.kr/) — Electronic disclosure
163
+ - [ECOS](https://ecos.bok.or.kr/) — Bank of Korea statistics
164
+ - [EXIM Bank](https://www.koreaexim.go.kr/) — Exchange rates
165
+ - [Kiwoom](https://www.kiwoom.com/) — Kiwoom REST API (159 endpoints)
166
+ - [KIS](https://www.truefriend.com/) — Korea Investment Open API (68 endpoints)
167
+
168
+ ## Requirements
169
+
170
+ - Python 3.11+
171
+ - [uv](https://docs.astral.sh/uv/getting-started/installation/) package manager
172
+
173
+ ## License
174
+
175
+ MIT
@@ -0,0 +1,144 @@
1
+ # OpenClaw Stock Kit
2
+
3
+ Korean stock data MCP server — one command install for Claude Code, Cursor, and OpenClaw.
4
+
5
+ ```bash
6
+ uvx openclaw-stock-kit
7
+ ```
8
+
9
+ ## Install
10
+
11
+ ### One-command setup (Claude Code + OpenClaw)
12
+
13
+ ```bash
14
+ # Install Claude Code plugin + OpenClaw skill at once
15
+ uvx openclaw-stock-kit setup
16
+
17
+ # Or install individually
18
+ uvx openclaw-stock-kit setup claude-code # Claude Code plugin only
19
+ uvx openclaw-stock-kit setup openclaw # OpenClaw skill only
20
+ ```
21
+
22
+ This installs:
23
+ - **Claude Code**: Plugin files to `~/.claude/plugins/marketplaces/stock-kit/` (agent, /stock command, MCP config)
24
+ - **OpenClaw**: Skill to `~/.openclaw/workspace/skills/stock-expert/`
25
+
26
+ ### Manual setup
27
+
28
+ ```bash
29
+ # 1. Run (browser settings page opens at http://localhost:8200)
30
+ uvx openclaw-stock-kit
31
+
32
+ # 2. Enter API keys in browser → Save
33
+
34
+ # 3. Register as MCP (Claude Code)
35
+ claude mcp add stock-kit -- uvx openclaw-stock-kit --stdio
36
+ ```
37
+
38
+ ### Cursor / Claude Desktop
39
+
40
+ ```json
41
+ {
42
+ "mcpServers": {
43
+ "stock-kit": {
44
+ "command": "uvx",
45
+ "args": ["openclaw-stock-kit", "--stdio"]
46
+ }
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Free Tools (10 MCP tools)
52
+
53
+ | Module | Tools | Source |
54
+ |--------|-------|--------|
55
+ | **Stock Data Kit** | `datakit_call` (13 functions) | PyKRX, DART, ECOS, Exchange Rate |
56
+ | **Kiwoom** | `kiwoom_call_api` (159 APIs) | Kiwoom REST API |
57
+ | **KIS** | `kis_call_tool` (68 APIs) | Korea Investment & Securities |
58
+ | **Gateway** | `gateway_status` | Status check |
59
+
60
+ > **ABI Contract**: Tool names (`datakit_call`, `kiwoom_call_api`, etc.) are stable and will never be renamed — only deprecated with 3-version notice. See [STANDARD.md](STANDARD.md).
61
+
62
+ ### API Keys (free to get)
63
+
64
+ | Key | Source | Required |
65
+ |-----|--------|----------|
66
+ | `DART_API_KEY` | [DART](https://opendart.fss.or.kr/) | For disclosures |
67
+ | `ECOS_API_KEY` | [ECOS](https://ecos.bok.or.kr/) | For macro indicators |
68
+ | `EXIM_API_KEY` | [EXIM Bank](https://www.koreaexim.go.kr/) | For exchange rates |
69
+ | Kiwoom credentials | [Kiwoom](https://www.kiwoom.com/) | For Kiwoom APIs |
70
+ | KIS credentials | [KIS](https://www.truefriend.com/) | For KIS APIs |
71
+
72
+ PyKRX (stock prices, supply/demand) works without any API key.
73
+
74
+ ### Response Format
75
+
76
+ All tools return a standardized response:
77
+
78
+ ```json
79
+ {"ok": true, "source": "datakit", "asof": "2026-02-17T09:30:00+09:00", "data": {...}, "error": null}
80
+ ```
81
+
82
+ See [STANDARD.md](STANDARD.md) for full schema and error codes.
83
+
84
+ ## Premium (license key)
85
+
86
+ | Feature | Description |
87
+ |---------|-------------|
88
+ | Morning/Afternoon Briefing | AI-generated market analysis |
89
+ | TOP30/Memo Excel | Daily stock rankings & analysis Excel |
90
+ | Backtesting | Trading strategy simulation (종가매매 etc.) |
91
+ | Trading Courses | Step-by-step trading methodology |
92
+
93
+ ```bash
94
+ # Set license key via settings page or environment variable
95
+ export OPENCLAW_LICENSE_KEY=OCKP-XXXXXX-XXXXXX-XXXXXX
96
+ ```
97
+
98
+ **Premium requires server verification.** License keys are validated against the OpenClaw license server on each session. If the server is unreachable, a 24-hour grace period applies for previously verified keys. Without prior server verification, premium features remain locked — free tools continue to work normally.
99
+
100
+ Purchase: [openclaw.ai/premium](https://openclaw.ai/premium)
101
+
102
+ ## Modes
103
+
104
+ ```bash
105
+ uvx openclaw-stock-kit # SSE + settings page (default)
106
+ uvx openclaw-stock-kit serve # same as above (explicit)
107
+ uvx openclaw-stock-kit -p 9000 # custom port
108
+ uvx openclaw-stock-kit --stdio # stdio for MCP registration
109
+ uvx openclaw-stock-kit setup # install Claude Code plugin + OpenClaw skill
110
+ ```
111
+
112
+ ## Version Pinning
113
+
114
+ For CI/production environments, pin to a specific version:
115
+
116
+ ```bash
117
+ uvx openclaw-stock-kit==1.0.3 # exact version
118
+ uvx openclaw-stock-kit>=1.0,<2.0 # compatible range
119
+ ```
120
+
121
+ ## Security
122
+
123
+ - **API key storage**: `~/.openclaw-stock-kit/api_keys.json` (directory 700, file 600 permissions)
124
+ - **License verification**: Server-side verification required (fail-closed). 24h grace for previously verified keys when server is unreachable. Local HMAC is format-check only — it does not grant premium access.
125
+ - **Network**: All external API calls use HTTPS (localhost dev excluded)
126
+ - **No telemetry**: No usage data collected
127
+
128
+ ## Data Sources
129
+
130
+ - [PyKRX](https://github.com/sharebook-kr/pykrx) — KRX public data
131
+ - [OpenDART](https://opendart.fss.or.kr/) — Electronic disclosure
132
+ - [ECOS](https://ecos.bok.or.kr/) — Bank of Korea statistics
133
+ - [EXIM Bank](https://www.koreaexim.go.kr/) — Exchange rates
134
+ - [Kiwoom](https://www.kiwoom.com/) — Kiwoom REST API (159 endpoints)
135
+ - [KIS](https://www.truefriend.com/) — Korea Investment Open API (68 endpoints)
136
+
137
+ ## Requirements
138
+
139
+ - Python 3.11+
140
+ - [uv](https://docs.astral.sh/uv/getting-started/installation/) package manager
141
+
142
+ ## License
143
+
144
+ MIT
@@ -0,0 +1,57 @@
1
+ [project]
2
+ name = "openclaw-stock-kit"
3
+ version = "0.2.0"
4
+ description = "Korean stock data MCP server — PyKRX, Kiwoom, KIS in one gateway"
5
+ readme = "README.md"
6
+ license = "MIT"
7
+ requires-python = ">=3.11"
8
+ authors = [
9
+ { name = "OpenClaw", email = "dev@openclaw.ai" },
10
+ ]
11
+ keywords = ["mcp", "stock", "korea", "pykrx", "kiwoom", "kis", "naver", "telegram", "claude"]
12
+ classifiers = [
13
+ "Development Status :: 4 - Beta",
14
+ "Intended Audience :: Developers",
15
+ "Topic :: Office/Business :: Financial :: Investment",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ ]
20
+
21
+ # Core: 경량 — gateway + pykrx만
22
+ dependencies = [
23
+ "fastmcp>=2.0.0",
24
+ "python-dotenv>=1.0.0",
25
+ "pykrx>=1.0.0",
26
+ "requests>=2.28.0",
27
+ "telethon>=1.36.0",
28
+ ]
29
+
30
+ [project.optional-dependencies]
31
+ # 키움 REST API (인증 파일 필요)
32
+ kiwoom = [] # stdlib만 사용, 추가 의존성 없음
33
+ # KIS 프록시 (KIS Docker 컨테이너 필요)
34
+ kis = [] # stdlib만 사용
35
+ # DB 저장 (PostgreSQL)
36
+ db = ["psycopg2-binary>=2.9.0"]
37
+ # 전체 설치
38
+ all = ["psycopg2-binary>=2.9.0"]
39
+
40
+ [project.scripts]
41
+ openclaw-stock-kit = "openclaw_stock_kit.__main__:main"
42
+
43
+ [project.urls]
44
+ Homepage = "https://github.com/juneiu012/openclaw"
45
+ Documentation = "https://docs.openclaw.ai"
46
+ Repository = "https://github.com/juneiu012/openclaw/tree/master/projects/stock-kit-free"
47
+
48
+ [build-system]
49
+ requires = ["hatchling"]
50
+ build-backend = "hatchling.build"
51
+
52
+ [tool.hatch.build.targets.sdist]
53
+ include = ["src/openclaw_stock_kit"]
54
+
55
+ [tool.hatch.build.targets.wheel]
56
+ packages = ["src/openclaw_stock_kit"]
57
+ artifacts = ["*.html", "extensions/**/*", "extensions/**/.*", "extensions/**/.claude-plugin/*"]
@@ -0,0 +1,9 @@
1
+ """OpenClaw Stock Kit — Korean stock data MCP server.
2
+
3
+ Usage:
4
+ uvx openclaw-stock-kit # SSE + browser settings (default)
5
+ uvx openclaw-stock-kit -p 9000 # custom port
6
+ uvx openclaw-stock-kit --stdio # stdio mode (Claude Code MCP)
7
+ """
8
+
9
+ __version__ = "0.2.0"