Regmonkey MCP:Stata专家代理系统
项目简介
Regmonkey-MCP 是一个基于 Model Context Protocol (MCP) 的 Stata 专家助手系统,通过 Elasticsearch/OpenSearch 实现智能化的 Stata 帮助文档检索与分析。本项目实现了 Stata 帮助文档的智能索引、语义搜索和文档获取功能,为 Stata 用户提供高效的技术支持。
核心功能
- 文档索引:支持将 Stata 官方帮助文档(SMCL 格式:
.sthlp/.hlp)批量索引到 Elasticsearch/OpenSearch - 智能搜索:通过 MCP Server 提供专业的 Stata 文档搜索工具(
smart_search) - 文档获取:快速检索完整的帮助文档内容(
fetch_full_doc)
项目结构
├── helpfile/ # Stata 帮助文档资源
│ ├── official_help/ # Stata 官方帮助文档
│ └── ssc_help/ # SSC (Statistical Software Components) 帮助文档
├── elasticsearch-mcp-server/ # MCP 服务器实现
│ ├── src/ # 源代码目录
│ ├── docker-compose-elasticsearch.yml # Elasticsearch 部署配置
│ └── pyproject.toml # Python 项目配置
├── smoke_e2e_local.sh # Linux/Mac 端到端测试脚本
└── smoke_e2e_windows.ps1 # Windows 端到端测试脚本快速开始
环境要求
- Python 3.8+
- Docker & Docker Compose (可选,用于快速部署 Elasticsearch)
- UV 包管理工具
部署步骤
1. 启动 Elasticsearch 服务
使用 Docker Compose 快速启动 Elasticsearch:
cd elasticsearch-mcp-server
docker-compose -f docker-compose-elasticsearch.yml up -d2. 配置环境变量
创建并配置以下环境变量:
export ELASTICSEARCH_HOSTS="https://localhost:9200"
export ELASTICSEARCH_USERNAME="elastic"
export ELASTICSEARCH_PASSWORD="test123"
export VERIFY_CERTS=false
export STATA_HELP_INDEX="stata_help"3. 索引 Stata 帮助文档
执行以下命令创建索引映射并批量导入文档:
uv --directory elasticsearch-mcp-server run stata-help-index --recreate4. 启动 MCP 服务器
uv --directory elasticsearch-mcp-server run elasticsearch-mcp-server5. 使用 API 接口
在 MCP 客户端或智能代理中调用以下工具:
- 智能搜索:
smart_search("did") - 获取文档:
fetch_full_doc("reghdfe")
端到端测试
本项目提供一键式端到端测试脚本,支持在 Docker 环境中快速验证系统功能。
Linux/Mac 系统
bash smoke_e2e_local.shWindows 系统
powershell -ExecutionPolicy Bypass -File smoke_e2e_windows.ps1集成到 Cursor
配置步骤
- 复制配置模板文件
cursor.mcp.json.example到 Cursor 配置目录 - 根据您的实际安装路径修改配置文件中的路径参数
配置文件位置示例:
- 窗户:
C:\Users\{username}\.cursor\mcp.json - Mac/Linux:
~/.cursor/mcp.json
配置内容调整:
将模板文件中的 C:\PATH\TO\REPO\... 替换为实际的仓库路径。
技术架构
- 搜索引擎:Elasticsearch/OpenSearch
- 通信协议:模型上下文协议(MCP)
- 编程语言python
- 文档格式:SMCL(Stata标记和控制语言)
许可证
本项目采用开源许可证,具体信息请查看 LICENSE 文件。
贡献指南
欢迎提交 Issue 和 Pull Request 来帮助改进本项目。
联系方式
如有问题或建议,请通过 GitHub Issues 联系我们。
