aigroup-econ-mcp 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
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.
- aigroup_econ_mcp/__init__.py +1 -1
- aigroup_econ_mcp/cli.py +37 -33
- aigroup_econ_mcp/server.py +5 -4
- {aigroup_econ_mcp-0.1.0.dist-info → aigroup_econ_mcp-0.1.1.dist-info}/METADATA +1 -1
- aigroup_econ_mcp-0.1.1.dist-info/RECORD +12 -0
- aigroup_econ_mcp-0.1.0.dist-info/RECORD +0 -12
- {aigroup_econ_mcp-0.1.0.dist-info → aigroup_econ_mcp-0.1.1.dist-info}/WHEEL +0 -0
- {aigroup_econ_mcp-0.1.0.dist-info → aigroup_econ_mcp-0.1.1.dist-info}/entry_points.txt +0 -0
- {aigroup_econ_mcp-0.1.0.dist-info → aigroup_econ_mcp-0.1.1.dist-info}/licenses/LICENSE +0 -0
aigroup_econ_mcp/__init__.py
CHANGED
aigroup_econ_mcp/cli.py
CHANGED
|
@@ -2,21 +2,32 @@
|
|
|
2
2
|
AIGroup 计量经济学 MCP 服务命令行入口
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import sys
|
|
5
6
|
import click
|
|
6
|
-
import uvicorn
|
|
7
7
|
from .server import create_mcp_server
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
@click.command()
|
|
11
11
|
@click.option('--port', default=8000, help='服务器端口')
|
|
12
12
|
@click.option('--host', default='127.0.0.1', help='服务器地址')
|
|
13
|
-
@click.option('--transport', default='
|
|
13
|
+
@click.option('--transport', default='stdio',
|
|
14
14
|
type=click.Choice(['stdio', 'streamable-http', 'sse']),
|
|
15
|
-
help='传输协议')
|
|
15
|
+
help='传输协议 (默认: stdio)')
|
|
16
16
|
@click.option('--debug', is_flag=True, help='启用调试模式')
|
|
17
17
|
@click.option('--mount-path', default=None, help='挂载路径')
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
@click.option('--version', is_flag=True, help='显示版本信息')
|
|
19
|
+
def cli(port: int, host: str, transport: str, debug: bool, mount_path: str, version: bool):
|
|
20
|
+
"""AIGroup 计量经济学 MCP 工具
|
|
21
|
+
|
|
22
|
+
默认以stdio模式启动MCP服务器,适用于MCP客户端集成。
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
# 处理版本标志
|
|
26
|
+
if version:
|
|
27
|
+
click.echo("aigroup-econ-mcp v0.1.0", err=True)
|
|
28
|
+
click.echo("Professional econometrics MCP tool", err=True)
|
|
29
|
+
click.echo("Author: AIGroup", err=True)
|
|
30
|
+
sys.exit(0)
|
|
20
31
|
|
|
21
32
|
# 创建MCP服务器
|
|
22
33
|
mcp_server = create_mcp_server()
|
|
@@ -24,29 +35,41 @@ def main(port: int, host: str, transport: str, debug: bool, mount_path: str):
|
|
|
24
35
|
# 设置调试模式
|
|
25
36
|
if debug:
|
|
26
37
|
mcp_server.settings.debug = True
|
|
27
|
-
click.echo(f"[DEBUG] 调试模式已启用")
|
|
28
|
-
|
|
29
|
-
click.echo(f"[INFO] Starting aigroup-econ-mcp server")
|
|
30
|
-
click.echo(f"[INFO] Professional econometrics MCP tool for AI data analysis")
|
|
31
|
-
click.echo(f"[INFO] Transport protocol: {transport}")
|
|
32
|
-
click.echo(f"[INFO] Service address: http://{host}:{port}")
|
|
33
|
-
if mount_path:
|
|
34
|
-
click.echo(f"[INFO] Mount path: {mount_path}")
|
|
38
|
+
click.echo(f"[DEBUG] 调试模式已启用", err=True)
|
|
35
39
|
|
|
36
40
|
# 根据传输协议启动服务器
|
|
37
41
|
if transport == 'stdio':
|
|
38
|
-
# stdio
|
|
42
|
+
# stdio模式直接运行,不输出任何日志到stdout(MCP协议通信)
|
|
43
|
+
# 所有日志输出到stderr
|
|
44
|
+
if debug:
|
|
45
|
+
click.echo(f"[DEBUG] Starting in stdio mode", err=True)
|
|
39
46
|
mcp_server.run(transport='stdio')
|
|
47
|
+
|
|
40
48
|
elif transport == 'streamable-http':
|
|
41
49
|
# Streamable HTTP模式
|
|
50
|
+
click.echo(f"[INFO] Starting aigroup-econ-mcp server", err=True)
|
|
51
|
+
click.echo(f"[INFO] Professional econometrics MCP tool for AI data analysis", err=True)
|
|
52
|
+
click.echo(f"[INFO] Transport protocol: {transport}", err=True)
|
|
53
|
+
click.echo(f"[INFO] Service address: http://{host}:{port}", err=True)
|
|
54
|
+
if mount_path:
|
|
55
|
+
click.echo(f"[INFO] Mount path: {mount_path}", err=True)
|
|
56
|
+
|
|
42
57
|
mcp_server.run(
|
|
43
58
|
transport='streamable-http',
|
|
44
59
|
host=host,
|
|
45
60
|
port=port,
|
|
46
61
|
mount_path=mount_path or '/mcp'
|
|
47
62
|
)
|
|
63
|
+
|
|
48
64
|
elif transport == 'sse':
|
|
49
65
|
# SSE模式
|
|
66
|
+
click.echo(f"[INFO] Starting aigroup-econ-mcp server", err=True)
|
|
67
|
+
click.echo(f"[INFO] Professional econometrics MCP tool for AI data analysis", err=True)
|
|
68
|
+
click.echo(f"[INFO] Transport protocol: {transport}", err=True)
|
|
69
|
+
click.echo(f"[INFO] Service address: http://{host}:{port}", err=True)
|
|
70
|
+
if mount_path:
|
|
71
|
+
click.echo(f"[INFO] Mount path: {mount_path}", err=True)
|
|
72
|
+
|
|
50
73
|
mcp_server.run(
|
|
51
74
|
transport='sse',
|
|
52
75
|
host=host,
|
|
@@ -55,24 +78,5 @@ def main(port: int, host: str, transport: str, debug: bool, mount_path: str):
|
|
|
55
78
|
)
|
|
56
79
|
|
|
57
80
|
|
|
58
|
-
@click.command()
|
|
59
|
-
def version():
|
|
60
|
-
"""Show version information"""
|
|
61
|
-
click.echo("aigroup-econ-mcp v0.1.0")
|
|
62
|
-
click.echo("Professional econometrics MCP tool")
|
|
63
|
-
click.echo("Author: AIGroup")
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
@click.group()
|
|
67
|
-
def cli():
|
|
68
|
-
"""AIGroup 计量经济学 MCP 工具"""
|
|
69
|
-
pass
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
# 添加子命令
|
|
73
|
-
cli.add_command(main)
|
|
74
|
-
cli.add_command(version)
|
|
75
|
-
|
|
76
|
-
|
|
77
81
|
if __name__ == "__main__":
|
|
78
82
|
cli()
|
aigroup_econ_mcp/server.py
CHANGED
|
@@ -11,6 +11,7 @@ from dataclasses import dataclass
|
|
|
11
11
|
import pandas as pd
|
|
12
12
|
import numpy as np
|
|
13
13
|
import statsmodels.api as sm
|
|
14
|
+
from statsmodels.tsa import stattools
|
|
14
15
|
from scipy import stats
|
|
15
16
|
from pydantic import BaseModel, Field
|
|
16
17
|
|
|
@@ -320,7 +321,7 @@ async def hypothesis_testing(
|
|
|
320
321
|
|
|
321
322
|
elif test_type == "adf":
|
|
322
323
|
# ADF单位根检验
|
|
323
|
-
result =
|
|
324
|
+
result = stattools.adfuller(data1)
|
|
324
325
|
test_result = HypothesisTestResult(
|
|
325
326
|
test_type="adf",
|
|
326
327
|
statistic=result[0],
|
|
@@ -370,11 +371,11 @@ async def time_series_analysis(
|
|
|
370
371
|
|
|
371
372
|
try:
|
|
372
373
|
# ADF单位根检验
|
|
373
|
-
adf_result =
|
|
374
|
+
adf_result = stattools.adfuller(data)
|
|
374
375
|
|
|
375
376
|
# 自相关和偏自相关函数
|
|
376
|
-
acf_values =
|
|
377
|
-
pacf_values =
|
|
377
|
+
acf_values = stattools.acf(data, nlags=min(20, len(data)-1))
|
|
378
|
+
pacf_values = stattools.pacf(data, nlags=min(20, len(data)-1))
|
|
378
379
|
|
|
379
380
|
result = TimeSeriesStatsResult(
|
|
380
381
|
adf_statistic=adf_result[0],
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
aigroup_econ_mcp/__init__.py,sha256=JX9x6D6f8r4vFb51i_kN9LmCp57GIpPG6MfiMEQ3bf0,472
|
|
2
|
+
aigroup_econ_mcp/cli.py,sha256=QEQjK6Y7TpgLHpdd8QqQhCjATkJ3-BjYjiXaB4HbJMk,2972
|
|
3
|
+
aigroup_econ_mcp/server.py,sha256=2g8qZBCu3Sed5Wlqp1IDqBBl8R_WA4H8nvLO5V8p7RM,14892
|
|
4
|
+
aigroup_econ_mcp/tools/__init__.py,sha256=o_mAyxeUVxh-xBrggUzS5Yg0uO9FjKvroLXQhFO6ezg,141
|
|
5
|
+
aigroup_econ_mcp/tools/regression.py,sha256=d-WiOSRSPIw5p7nFE6JE34ktQrBBXmZp6eQPfHXTFvA,6230
|
|
6
|
+
aigroup_econ_mcp/tools/statistics.py,sha256=arw5ahGBH4d4pS-wRHh_5z35Yf4LMpiUblR_TLZSbZ0,3415
|
|
7
|
+
aigroup_econ_mcp/tools/time_series.py,sha256=YFGBsKKA1a1FIH3x6gphw4bhVjgw8c-72ibJ4wOeDEM,8122
|
|
8
|
+
aigroup_econ_mcp-0.1.1.dist-info/METADATA,sha256=Mph1KsWcJn39HcX37cBi5ovWmsz7-FH8ClFShDUsC98,5333
|
|
9
|
+
aigroup_econ_mcp-0.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
10
|
+
aigroup_econ_mcp-0.1.1.dist-info/entry_points.txt,sha256=j5ZJYOc4lAZV-X3XkAuGhzHtIRcJtZ6Gz8ZKPY_QTrM,62
|
|
11
|
+
aigroup_econ_mcp-0.1.1.dist-info/licenses/LICENSE,sha256=x4onvmayh9xPtyeLWVwM9av5hlduofabbcq2z45BbPY,1063
|
|
12
|
+
aigroup_econ_mcp-0.1.1.dist-info/RECORD,,
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
aigroup_econ_mcp/__init__.py,sha256=z14iciYc9LvvPliqwqkOx4lOuAcJFQL9iIQeHo9JF5Y,472
|
|
2
|
-
aigroup_econ_mcp/cli.py,sha256=3Cq2W9GMMcv3lsHwQkRcNJv5GbJo8pQZylopXyQPOF4,2193
|
|
3
|
-
aigroup_econ_mcp/server.py,sha256=jBPJNUP5rAGsE0EuPBLglNaXt5eIsDjWzFMbwZSfMiQ,14918
|
|
4
|
-
aigroup_econ_mcp/tools/__init__.py,sha256=o_mAyxeUVxh-xBrggUzS5Yg0uO9FjKvroLXQhFO6ezg,141
|
|
5
|
-
aigroup_econ_mcp/tools/regression.py,sha256=d-WiOSRSPIw5p7nFE6JE34ktQrBBXmZp6eQPfHXTFvA,6230
|
|
6
|
-
aigroup_econ_mcp/tools/statistics.py,sha256=arw5ahGBH4d4pS-wRHh_5z35Yf4LMpiUblR_TLZSbZ0,3415
|
|
7
|
-
aigroup_econ_mcp/tools/time_series.py,sha256=YFGBsKKA1a1FIH3x6gphw4bhVjgw8c-72ibJ4wOeDEM,8122
|
|
8
|
-
aigroup_econ_mcp-0.1.0.dist-info/METADATA,sha256=gSaDlcS73fcUcJJcX-AVlyZkfvC4XGG-v7a0W-HGbiw,5333
|
|
9
|
-
aigroup_econ_mcp-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
10
|
-
aigroup_econ_mcp-0.1.0.dist-info/entry_points.txt,sha256=j5ZJYOc4lAZV-X3XkAuGhzHtIRcJtZ6Gz8ZKPY_QTrM,62
|
|
11
|
-
aigroup_econ_mcp-0.1.0.dist-info/licenses/LICENSE,sha256=x4onvmayh9xPtyeLWVwM9av5hlduofabbcq2z45BbPY,1063
|
|
12
|
-
aigroup_econ_mcp-0.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|