cnhkmcp 2.0__tar.gz → 2.0.2__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 (103) hide show
  1. {cnhkmcp-2.0/cnhkmcp.egg-info → cnhkmcp-2.0.2}/PKG-INFO +1 -1
  2. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/ace.log +2 -0
  3. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +1 -0
  4. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/inspiration.js +39 -8
  5. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP//350/277/220/350/241/214/346/211/223/345/274/200/346/210/221.py +2 -2
  6. {cnhkmcp-2.0 → cnhkmcp-2.0.2/cnhkmcp.egg-info}/PKG-INFO +1 -1
  7. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/setup.py +1 -1
  8. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/LICENSE +0 -0
  9. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/MANIFEST.in +0 -0
  10. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/README.md +0 -0
  11. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/__init__.py +0 -0
  12. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/.gitignore +0 -0
  13. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -0
  14. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/README.md +0 -0
  15. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -0
  16. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
  17. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -0
  18. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -0
  19. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -0
  20. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/347/244/272/344/276/213.json" +0 -0
  21. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -0
  22. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -0
  23. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_/347/244/272/344/276/213/345/217/257/347/233/264/346/216/245/350/275/275/345/205/245Machine_lib.json" +0 -0
  24. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -0
  25. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -0
  26. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -0
  27. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/Tranformer/validator.py +0 -0
  28. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/ace_lib.py +0 -0
  29. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/blueprints/__init__.py +0 -0
  30. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -0
  31. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -0
  32. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -0
  33. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -0
  34. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/custom_templates/templates.json +0 -0
  35. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -0
  36. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -0
  37. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -0
  38. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -0
  39. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/helpful_functions.py +0 -0
  40. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/ace.log +0 -0
  41. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -0
  42. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/autosim_20251205_145240.log +0 -0
  43. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/autosim_20251215_030103.log +0 -0
  44. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -0
  45. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -0
  46. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/mirror_config.txt +0 -0
  47. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/operaters.csv +0 -0
  48. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/requirements.txt +0 -0
  49. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/run_app.bat +0 -0
  50. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/run_app.sh +0 -0
  51. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -0
  52. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -0
  53. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -0
  54. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -0
  55. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/ssrn-3332513.pdf +0 -0
  56. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/brain.js +0 -0
  57. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/decoder.js +0 -0
  58. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/feature_engineering.js +0 -0
  59. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/idea_house.js +0 -0
  60. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/inspiration_house.js +0 -0
  61. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/paper_analysis.js +0 -0
  62. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/script.js +0 -0
  63. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/simulator.js +0 -0
  64. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/styles.css +0 -0
  65. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/static/usage_widget.js +0 -0
  66. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -0
  67. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -0
  68. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/idea_house.html +0 -0
  69. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/index.html +0 -0
  70. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -0
  71. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -0
  72. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/simulator.html +0 -0
  73. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/templates/transformer_web.html +0 -0
  74. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP/usage.md +0 -0
  75. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/ace_lib.py" +0 -0
  76. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/brain_alpha_inspector.py" +0 -0
  77. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/helpful_functions.py" +0 -0
  78. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -0
  79. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/arxiv_api.py +0 -0
  80. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/forum_functions.py +0 -0
  81. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/forum_functions.py" +0 -0
  82. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/platform_functions.py" +0 -0
  83. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/user_config.json" +0 -0
  84. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252//350/256/251AI/350/257/273/350/277/231/344/270/252/346/226/207/346/241/243/346/235/245/345/255/246/344/274/232/344/270/213/350/275/275/346/265/217/350/247/210/345/231/250.md" +0 -0
  85. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py" +0 -0
  86. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/platform_functions.py +0 -0
  87. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/sample_mcp_config.json +0 -0
  88. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked/user_config.json +0 -0
  89. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/217/202/350/200/203/346/226/207/346/241/243_BRAIN_Alpha_Test_Requirements_and_Tips.md" +0 -0
  90. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Alpha_explaination_workflow.md" +0 -0
  91. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_6_Tips_Datafield_Exploration_Guide.md" +0 -0
  92. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_Alpha_Improvement_Workflow.md" +0 -0
  93. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Dataset_Exploration_Expert_Manual.md" +0 -0
  94. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_daily_report_workflow.md" +0 -0
  95. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp/untracked//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py" +0 -0
  96. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/SOURCES.txt +0 -0
  97. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/dependency_links.txt +0 -0
  98. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/entry_points.txt +0 -0
  99. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/not-zip-safe +0 -0
  100. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/requires.txt +0 -0
  101. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/cnhkmcp.egg-info/top_level.txt +0 -0
  102. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/requirements.txt +0 -0
  103. {cnhkmcp-2.0 → cnhkmcp-2.0.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.0
3
+ Version: 2.0.2
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -63,3 +63,5 @@ Incorrect email or password
63
63
 
64
64
  2025-12-18 02:51:54,799 - ace - WARNING - No fields found: region=CHN, delay=1, universe=TOP2000U, type=MATRIX, dataset.id=analyst45
65
65
  2025-12-18 02:52:11,310 - ace - WARNING - No fields found: region=CHN, delay=1, universe=TOP2000U, type=MATRIX, dataset.id=analyst45
66
+ 2025-12-18 13:17:02,856 - ace - WARNING - No fields found: region=USA, delay=1, universe=TOP3000, type=MATRIX, dataset.id=shortinterest3
67
+ 2025-12-18 13:24:08,699 - ace - WARNING - No fields found: region=USA, delay=1, universe=TOP3000, type=MATRIX, dataset.id=shortinterest3
@@ -207,6 +207,7 @@ def main():
207
207
  region=region,
208
208
  delay=delay,
209
209
  universe=universe,
210
+ data_type="ALL",
210
211
  dataset_id=dataset_id
211
212
  )
212
213
  print(f"Retrieved {len(datafields_df)} datafields.")
@@ -40,6 +40,14 @@ document.addEventListener('DOMContentLoaded', function() {
40
40
  genBtn.title = "Please test LLM connection first";
41
41
  }
42
42
 
43
+ // Initially disable new task button
44
+ const newTaskBtn = document.getElementById('inspire-new-task');
45
+ if (newTaskBtn) {
46
+ newTaskBtn.disabled = true;
47
+ newTaskBtn.style.opacity = '0.5';
48
+ newTaskBtn.style.cursor = 'not-allowed';
49
+ }
50
+
43
51
  // Check login status periodically or on load to update button state
44
52
  checkLoginAndUpdateButton();
45
53
  });
@@ -329,6 +337,13 @@ function generateAlphaTemplates() {
329
337
  inspirationState.lastResult = data.result;
330
338
  const dlBtn = document.getElementById('inspire-download');
331
339
  if (dlBtn) dlBtn.style.display = 'inline-block';
340
+
341
+ const newTaskBtn = document.getElementById('inspire-new-task');
342
+ if (newTaskBtn) {
343
+ newTaskBtn.disabled = false;
344
+ newTaskBtn.style.opacity = '1';
345
+ newTaskBtn.style.cursor = 'pointer';
346
+ }
332
347
  }
333
348
  })
334
349
  .catch(err => {
@@ -337,17 +352,26 @@ function generateAlphaTemplates() {
337
352
  }
338
353
 
339
354
  function formatMarkdown(text) {
340
- // Escape HTML tags to prevent browser from hiding them or interpreting them
341
- // specifically for Brain expressions like <field_name>
342
- // We only escape < and > if they look like tags, but for simplicity and safety with this specific content,
343
- // escaping all is usually safer before markdown parsing, as markdown doesn't use < > for syntax
344
- // (except for raw HTML, which we don't need here).
345
- const escapedText = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
346
-
347
355
  if (typeof marked !== 'undefined') {
348
- return marked.parse(escapedText);
356
+ // Split text by code blocks (triple backticks or single backticks)
357
+ // We want to escape < and > in normal text, but NOT in code blocks
358
+ const parts = text.split(/(```[\s\S]*?```|`[^`]*`)/g);
359
+
360
+ const escapedParts = parts.map(part => {
361
+ // If it starts with backtick, it's a code block -> return as is
362
+ if (part.startsWith('`')) {
363
+ return part;
364
+ }
365
+ // Otherwise, escape < and >
366
+ return part.replace(/</g, '&lt;').replace(/>/g, '&gt;');
367
+ });
368
+
369
+ return marked.parse(escapedParts.join(''));
349
370
  }
371
+
350
372
  // Fallback simple formatter
373
+ // Here we DO need to escape because we are building HTML manually
374
+ const escapedText = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
351
375
  let html = escapedText
352
376
  .replace(/```([\s\S]*?)```/g, '<pre><code>$1</code></pre>')
353
377
  .replace(/\n/g, '<br>');
@@ -423,6 +447,13 @@ function resetInspirationTask() {
423
447
 
424
448
  const dlBtn = document.getElementById('inspire-download');
425
449
  if (dlBtn) dlBtn.style.display = 'none';
450
+
451
+ const newTaskBtn = document.getElementById('inspire-new-task');
452
+ if (newTaskBtn) {
453
+ newTaskBtn.disabled = true;
454
+ newTaskBtn.style.opacity = '0.5';
455
+ newTaskBtn.style.cursor = 'not-allowed';
456
+ }
426
457
  // Keep LLM config and Region/Universe selections
427
458
  }
428
459
 
@@ -2316,7 +2316,7 @@ def inspiration_generate():
2316
2316
  operators_df = get_operators(s)
2317
2317
  operators_df = operators_df[operators_df['scope'] == 'REGULAR']
2318
2318
 
2319
- datafields_df = get_datafields(s, region=region, delay=int(delay), universe=universe, dataset_id=dataset_id)
2319
+ datafields_df = get_datafields(s, region=region, delay=int(delay), universe=universe, dataset_id=dataset_id, data_type="ALL")
2320
2320
 
2321
2321
  script_dir = os.path.dirname(os.path.abspath(__file__))
2322
2322
  prompt_path = os.path.join(script_dir, "give_me_idea", "what_is_Alpha_template.md")
@@ -2390,4 +2390,4 @@ if __name__ == '__main__':
2390
2390
 
2391
2391
  print(f"Application will run on http://{bind_host}:5000")
2392
2392
  print("BRAIN API integration included - no separate proxy needed!")
2393
- app.run(debug=True, host=bind_host, port=5000)
2393
+ app.run(debug=False, host=bind_host, port=5000)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.0
3
+ Version: 2.0.2
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -13,7 +13,7 @@ def read_requirements():
13
13
 
14
14
  setup(
15
15
  name="cnhkmcp",
16
- version="2.0",
16
+ version="2.0.2",
17
17
  author="CNHK",
18
18
  author_email="cnhk@example.com",
19
19
  description="A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes