# CNHK MCP Server
[](https://badge.fury.io/py/cnhkmcp)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
A Model Context Protocol (MCP) server for quantitative research and data analysis. This package provides comprehensive tools for research, simulation, and data analysis workflows.
## Features
### ๐ Authentication & Session Management
- Secure authentication with platform API
- Automatic token refresh and session persistence
- Credential storage and management
### ๐ Research & Simulation
- **Single & Batch Simulations**: Submit individual models or batch process up to 10 models simultaneously
- **Smart Waiting**: Intelligent monitoring with automatic retry logic
- **Multi-Model Support**: Regular and advanced simulation strategies
- **Real-time Monitoring**: Track simulation progress and completion status
### ๐ Data Analysis & Export
- **Performance Analytics**: Performance analysis, statistical metrics, analytical tools
- **Portfolio Analysis**: Aggregate data from multiple models
- **Data Export**: CSV export for performance data and statistics
- **Result Archival**: JSON export for complete simulation results
### ๐ Research Tools
- **Data Discovery**: Explore available datasets, data fields, and operators
- **Validation Tools**: Correlation checks and analysis tools
- **Forum Integration**: Access community forum posts and discussions
- **Quality Assurance**: Comprehensive validation before submission
### ๐ Advanced Features
- **Batch Processing**: Parallel processing of multiple models with configurable batch sizes
- **Data Transformation**: Flatten complex nested data structures for analysis
- **Link Generation**: Create clickable links to platform resources
- **Error Handling**: Comprehensive error tracking and reporting
## Installation
### From PyPI (Recommended)
```bash
pip install cnhkmcp
```
### From Source
```bash
git clone https://github.com/cnhk/cnhkmcp.git
cd cnhkmcp
pip install -e .
```
## Quick Start
### 1. Basic Setup
First, start the MCP server:
```bash
cnhkmcp-server
```
### 2. Authentication
```python
# The server will automatically handle authentication
# You can also configure credentials in config files
```
### 3. Basic Simulation
```python
# Example simulation request
{
"tool": "create_simulation",
"arguments": {
"type": "REGULAR",
"settings": {
"instrumentType": "EQUITY",
"region": "USA",
"universe": "TOP3000",
"delay": 1,
"decay": 0,
"neutralization": "SUBUNIV",
"truncation": 0.08,
"testPeriod": "P1Y6M",
"unitHandling": "VERIFY",
"nanHandling": "ELIMINATE",
"language": "FASTEXPR",
"visualization": true
},
"regular": "close"
}
}
```
## Configuration
### Credentials Configuration
Create a `config/cnhk-config.json` file:
```json
{
"credentials": {
"email": "your-email@example.com",
"password": "your-password"
},
"defaults": {
"instrumentType": "EQUITY",
"region": "USA",
"universe": "TOP3000",
"delay": 1,
"decay": 0,
"neutralization": "SUBUNIV",
"truncation": 0.08,
"testPeriod": "P1Y6M",
"unitHandling": "VERIFY",
"nanHandling": "ELIMINATE",
"language": "FASTEXPR",
"visualization": true
}
}
```
## Available Tools
### Core Research Tools
| Tool | Description | Use Case |
|------|-------------|----------|
| `authenticate` | ๐ Authenticate with platform | Required first step |
| `create_simulation` | ๐ Submit expressions for simulation | Single model research |
| `create_multi_simulation` | ๐ Batch submit multiple models | Batch research |
| `wait_for_simulation` | โณ Smart simulation waiting | Monitor completion |
| `get_simulation_status` | โฑ๏ธ Check simulation progress | Status monitoring |
### Alpha Management
| Tool | Description | Use Case |
|------|-------------|----------|
| `get_alpha_details` | ๐ Get alpha metadata and results | Result extraction |
| `get_user_alphas` | ๐ Retrieve user's alpha list | Portfolio management |
| `submit_alpha` | โ
Submit alpha for evaluation | Production submission |
| `set_alpha_properties` | โ๏ธ Update alpha properties | Alpha organization |
### Data Analysis
| Tool | Description | Use Case |
|------|-------------|----------|
| `get_alpha_pnl` | ๐ Get PnL data | Performance analysis |
| `get_alpha_yearly_stats` | ๐ Get yearly statistics | Annual performance |
| `combine_pnl_data` | ๐ Aggregate PnL from multiple alphas | Portfolio analysis |
| `save_simulation_data` | ๐พ Export simulation results | Data archival |
| `save_pnl_data` | ๐ค Export PnL to CSV | External analysis |
### Validation & Quality
| Tool | Description | Use Case |
|------|-------------|----------|
| `check_production_correlation` | ๐ Check production correlation | Pre-submission validation |
| `check_self_correlation` | ๐ Check self-correlation | Uniqueness validation |
| `get_submission_check` | โ
Comprehensive submission check | Quality assurance |
| `get_alpha_checks` | ๐งช Detailed validation results | Debug validation issues |
### Data Discovery
| Tool | Description | Use Case |
|------|-------------|----------|
| `get_datasets` | ๐ List available datasets | Data exploration |
| `get_datafields` | ๐ Get data fields | Field discovery |
| `get_operators` | โ๏ธ Get available operators | Expression building |
| `get_instrument_options` | ๐ง Get configuration options | Setup assistance |
### Forum & Community
| Tool | Description | Use Case |
|------|-------------|----------|
| `get_forum_post` | ๐ Extract forum post content | Community research |
| `search_forum_posts` | ๐ Search forum discussions | Topic discovery |
## Usage Examples
### Example 1: Basic Alpha Research Workflow
```python
# 1. Authenticate
await authenticate({
"email": "user@example.com",
"password": "password"
})
# 2. Create simulation
simulation = await create_simulation({
"type": "REGULAR",
"settings": {
"instrumentType": "EQUITY",
"region": "USA",
"universe": "TOP3000",
"delay": 1,
"decay": 0,
"neutralization": "SUBUNIV",
"truncation": 0.08,
"testPeriod": "P1Y6M",
"unitHandling": "VERIFY",
"nanHandling": "ELIMINATE",
"language": "FASTEXPR",
"visualization": True
},
"regular": "close"
})
# 3. Wait for completion
result = await wait_for_simulation({
"simulationId": simulation["id"],
"maxWaitTime": 1800
})
# 4. Get detailed results
details = await get_alpha_details({
"alphaId": result["alpha_id"]
})
```
### Example 2: Batch Alpha Processing
```python
# Get user's alphas
alphas = await get_user_alphas({
"stage": "IS",
"limit": 50
})
# Extract alpha IDs
alpha_ids = [alpha["id"] for alpha in alphas["results"]]
# Batch process for correlations
correlations = await batch_process_alphas({
"alphaIds": alpha_ids,
"operation": "get_correlations",
"batchSize": 5
})
```
### Example 3: Multi-Simulation
```python
# Create multiple simulations
multi_sim = await create_multi_simulation({
"simulations": [
{
"type": "REGULAR",
"settings": {...},
"regular": "close"
},
{
"type": "REGULAR",
"settings": {...},
"regular": "open"
}
# ... up to 10 total
]
})
```
### Example 4: Forum Research
```python
# Get forum post content
post = await get_forum_post({
"postUrlOrId": "32995186681879-ๅธธ็จๆจกๆฟๅๆ",
"includeComments": True
})
# Search forum posts
search_results = await search_forum_posts({
"searchQuery": "ๆจกๆฟ",
"maxResults": 20
})
```
## Advanced Features
### Batch Processing
Process multiple alphas efficiently:
```python
results = await batch_process_alphas({
"alphaIds": ["alpha1", "alpha2", "alpha3"],
"operation": "get_details", # or "get_pnl", "get_stats", "get_correlations"
"batchSize": 3
})
```
### Data Export
Export results for external analysis:
```python
# Save simulation data
save_result = await save_simulation_data({
"simulationResult": simulation_data,
"folderPath": "my_results"
})
# Export PnL data to CSV
csv_result = await save_pnl_data({
"alphaId": "alpha123",
"region": "USA",
"pnlData": pnl_data,
"folderPath": "pnl_exports"
})
```
### Data Analysis
Combine and analyze multiple alphas:
```python
# Combine PnL data from multiple alphas
combined = await combine_pnl_data({
"results": [result1, result2, result3]
})
# Expand nested data structures
expanded = await expand_nested_data({
"data": complex_data,
"preserveOriginal": True
})
```
## Error Handling
The server provides comprehensive error handling:
- **Authentication Errors**: Automatic token refresh
- **Rate Limiting**: Built-in retry logic with exponential backoff
- **Network Errors**: Automatic reconnection and retry
- **Validation Errors**: Detailed error messages with suggestions
## Logging
Configure logging level in your environment:
```bash
export CNHK_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
```
## Development
### Setting up Development Environment
```bash
git clone https://github.com/cnhk/cnhkmcp.git
cd cnhkmcp
pip install -e ".[dev]"
```
### Running Tests
```bash
pytest
```
### Code Formatting
```bash
black src/
isort src/
```
## Requirements
- Python 3.8+
- Platform account access
- Chrome/Chromium browser (for forum functionality)
## Dependencies
- `mcp>=1.0.0`: Model Context Protocol SDK
- `httpx>=0.25.0`: HTTP client
- `pydantic>=2.0.0`: Data validation
- `selenium>=4.0.0`: Web automation
- `beautifulsoup4>=4.12.0`: HTML parsing
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
- ๐ [Documentation](https://github.com/cnhk/cnhkmcp/blob/main/README.md)
- ๐ [Issue Tracker](https://github.com/cnhk/cnhkmcp/issues)
- ๐ฌ [Discussions](https://github.com/cnhk/cnhkmcp/discussions)
## Changelog
### v1.0.0
- Initial release
- Core MCP server functionality
- Alpha simulation and management
- Forum integration
- Data analysis tools
- Batch processing capabilities
---
**CNHK MCP Server** - Bringing quantitative research capabilities to AI assistants through the Model Context Protocol.
Raw data
{
"_id": null,
"home_page": null,
"name": "cnhkmcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "CNHK MCP <support@example.com>",
"keywords": "api, data-analysis, mcp, model-context-protocol, quantitative, research",
"author": null,
"author_email": "CNHK MCP <support@example.com>",
"download_url": "https://files.pythonhosted.org/packages/a2/90/3e15e68c36da4828c703682beddabf39edbea14ceab33c1cf6c652fe36eb/cnhkmcp-1.0.5.tar.gz",
"platform": null,
"description": "# CNHK MCP Server\n\n[](https://badge.fury.io/py/cnhkmcp)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\nA Model Context Protocol (MCP) server for quantitative research and data analysis. This package provides comprehensive tools for research, simulation, and data analysis workflows.\n\n## Features\n\n### \ud83d\udd10 Authentication & Session Management\n- Secure authentication with platform API\n- Automatic token refresh and session persistence\n- Credential storage and management\n\n### \ud83d\ude80 Research & Simulation\n- **Single & Batch Simulations**: Submit individual models or batch process up to 10 models simultaneously\n- **Smart Waiting**: Intelligent monitoring with automatic retry logic\n- **Multi-Model Support**: Regular and advanced simulation strategies\n- **Real-time Monitoring**: Track simulation progress and completion status\n\n### \ud83d\udcca Data Analysis & Export\n- **Performance Analytics**: Performance analysis, statistical metrics, analytical tools\n- **Portfolio Analysis**: Aggregate data from multiple models\n- **Data Export**: CSV export for performance data and statistics\n- **Result Archival**: JSON export for complete simulation results\n\n### \ud83d\udd0d Research Tools\n- **Data Discovery**: Explore available datasets, data fields, and operators\n- **Validation Tools**: Correlation checks and analysis tools\n- **Forum Integration**: Access community forum posts and discussions\n- **Quality Assurance**: Comprehensive validation before submission\n\n### \ud83d\udcc8 Advanced Features\n- **Batch Processing**: Parallel processing of multiple models with configurable batch sizes\n- **Data Transformation**: Flatten complex nested data structures for analysis\n- **Link Generation**: Create clickable links to platform resources\n- **Error Handling**: Comprehensive error tracking and reporting\n\n## Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install cnhkmcp\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/cnhk/cnhkmcp.git\ncd cnhkmcp\npip install -e .\n```\n\n## Quick Start\n\n### 1. Basic Setup\n\nFirst, start the MCP server:\n\n```bash\ncnhkmcp-server\n```\n\n### 2. Authentication\n\n```python\n# The server will automatically handle authentication\n# You can also configure credentials in config files\n```\n\n### 3. Basic Simulation\n\n```python\n# Example simulation request\n{\n \"tool\": \"create_simulation\",\n \"arguments\": {\n \"type\": \"REGULAR\",\n \"settings\": {\n \"instrumentType\": \"EQUITY\",\n \"region\": \"USA\", \n \"universe\": \"TOP3000\",\n \"delay\": 1,\n \"decay\": 0,\n \"neutralization\": \"SUBUNIV\",\n \"truncation\": 0.08,\n \"testPeriod\": \"P1Y6M\",\n \"unitHandling\": \"VERIFY\",\n \"nanHandling\": \"ELIMINATE\",\n \"language\": \"FASTEXPR\",\n \"visualization\": true\n },\n \"regular\": \"close\"\n }\n}\n```\n\n## Configuration\n\n### Credentials Configuration\n\nCreate a `config/cnhk-config.json` file:\n\n```json\n{\n \"credentials\": {\n \"email\": \"your-email@example.com\",\n \"password\": \"your-password\"\n },\n \"defaults\": {\n \"instrumentType\": \"EQUITY\",\n \"region\": \"USA\",\n \"universe\": \"TOP3000\",\n \"delay\": 1,\n \"decay\": 0,\n \"neutralization\": \"SUBUNIV\",\n \"truncation\": 0.08,\n \"testPeriod\": \"P1Y6M\",\n \"unitHandling\": \"VERIFY\",\n \"nanHandling\": \"ELIMINATE\",\n \"language\": \"FASTEXPR\",\n \"visualization\": true\n }\n}\n```\n\n## Available Tools\n\n### Core Research Tools\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `authenticate` | \ud83d\udd10 Authenticate with platform | Required first step |\n| `create_simulation` | \ud83d\ude80 Submit expressions for simulation | Single model research |\n| `create_multi_simulation` | \ud83d\ude80 Batch submit multiple models | Batch research |\n| `wait_for_simulation` | \u23f3 Smart simulation waiting | Monitor completion |\n| `get_simulation_status` | \u23f1\ufe0f Check simulation progress | Status monitoring |\n\n### Alpha Management\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `get_alpha_details` | \ud83d\udcca Get alpha metadata and results | Result extraction |\n| `get_user_alphas` | \ud83d\udccb Retrieve user's alpha list | Portfolio management |\n| `submit_alpha` | \u2705 Submit alpha for evaluation | Production submission |\n| `set_alpha_properties` | \u2699\ufe0f Update alpha properties | Alpha organization |\n\n### Data Analysis\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `get_alpha_pnl` | \ud83d\udcc8 Get PnL data | Performance analysis |\n| `get_alpha_yearly_stats` | \ud83d\udcca Get yearly statistics | Annual performance |\n| `combine_pnl_data` | \ud83d\udcc8 Aggregate PnL from multiple alphas | Portfolio analysis |\n| `save_simulation_data` | \ud83d\udcbe Export simulation results | Data archival |\n| `save_pnl_data` | \ud83d\udce4 Export PnL to CSV | External analysis |\n\n### Validation & Quality\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `check_production_correlation` | \ud83d\udd0d Check production correlation | Pre-submission validation |\n| `check_self_correlation` | \ud83d\udd0d Check self-correlation | Uniqueness validation |\n| `get_submission_check` | \u2705 Comprehensive submission check | Quality assurance |\n| `get_alpha_checks` | \ud83e\uddea Detailed validation results | Debug validation issues |\n\n### Data Discovery\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `get_datasets` | \ud83d\udd0d List available datasets | Data exploration |\n| `get_datafields` | \ud83d\udcca Get data fields | Field discovery |\n| `get_operators` | \u2699\ufe0f Get available operators | Expression building |\n| `get_instrument_options` | \ud83d\udd27 Get configuration options | Setup assistance |\n\n### Forum & Community\n\n| Tool | Description | Use Case |\n|------|-------------|----------|\n| `get_forum_post` | \ud83d\udcc4 Extract forum post content | Community research |\n| `search_forum_posts` | \ud83d\udd0d Search forum discussions | Topic discovery |\n\n## Usage Examples\n\n### Example 1: Basic Alpha Research Workflow\n\n```python\n# 1. Authenticate\nawait authenticate({\n \"email\": \"user@example.com\",\n \"password\": \"password\"\n})\n\n# 2. Create simulation\nsimulation = await create_simulation({\n \"type\": \"REGULAR\",\n \"settings\": {\n \"instrumentType\": \"EQUITY\",\n \"region\": \"USA\",\n \"universe\": \"TOP3000\",\n \"delay\": 1,\n \"decay\": 0,\n \"neutralization\": \"SUBUNIV\", \n \"truncation\": 0.08,\n \"testPeriod\": \"P1Y6M\",\n \"unitHandling\": \"VERIFY\",\n \"nanHandling\": \"ELIMINATE\",\n \"language\": \"FASTEXPR\",\n \"visualization\": True\n },\n \"regular\": \"close\"\n})\n\n# 3. Wait for completion\nresult = await wait_for_simulation({\n \"simulationId\": simulation[\"id\"],\n \"maxWaitTime\": 1800\n})\n\n# 4. Get detailed results\ndetails = await get_alpha_details({\n \"alphaId\": result[\"alpha_id\"]\n})\n```\n\n### Example 2: Batch Alpha Processing\n\n```python\n# Get user's alphas\nalphas = await get_user_alphas({\n \"stage\": \"IS\",\n \"limit\": 50\n})\n\n# Extract alpha IDs\nalpha_ids = [alpha[\"id\"] for alpha in alphas[\"results\"]]\n\n# Batch process for correlations \ncorrelations = await batch_process_alphas({\n \"alphaIds\": alpha_ids,\n \"operation\": \"get_correlations\",\n \"batchSize\": 5\n})\n```\n\n### Example 3: Multi-Simulation\n\n```python\n# Create multiple simulations\nmulti_sim = await create_multi_simulation({\n \"simulations\": [\n {\n \"type\": \"REGULAR\",\n \"settings\": {...},\n \"regular\": \"close\"\n },\n {\n \"type\": \"REGULAR\", \n \"settings\": {...},\n \"regular\": \"open\"\n }\n # ... up to 10 total\n ]\n})\n```\n\n### Example 4: Forum Research\n\n```python\n# Get forum post content\npost = await get_forum_post({\n \"postUrlOrId\": \"32995186681879-\u5e38\u7528\u6a21\u677f\u5206\u6790\",\n \"includeComments\": True\n})\n\n# Search forum posts\nsearch_results = await search_forum_posts({\n \"searchQuery\": \"\u6a21\u677f\",\n \"maxResults\": 20\n})\n```\n\n## Advanced Features\n\n### Batch Processing\n\nProcess multiple alphas efficiently:\n\n```python\nresults = await batch_process_alphas({\n \"alphaIds\": [\"alpha1\", \"alpha2\", \"alpha3\"],\n \"operation\": \"get_details\", # or \"get_pnl\", \"get_stats\", \"get_correlations\"\n \"batchSize\": 3\n})\n```\n\n### Data Export\n\nExport results for external analysis:\n\n```python\n# Save simulation data\nsave_result = await save_simulation_data({\n \"simulationResult\": simulation_data,\n \"folderPath\": \"my_results\"\n})\n\n# Export PnL data to CSV\ncsv_result = await save_pnl_data({\n \"alphaId\": \"alpha123\",\n \"region\": \"USA\",\n \"pnlData\": pnl_data,\n \"folderPath\": \"pnl_exports\"\n})\n```\n\n### Data Analysis\n\nCombine and analyze multiple alphas:\n\n```python\n# Combine PnL data from multiple alphas\ncombined = await combine_pnl_data({\n \"results\": [result1, result2, result3]\n})\n\n# Expand nested data structures\nexpanded = await expand_nested_data({\n \"data\": complex_data,\n \"preserveOriginal\": True\n})\n```\n\n## Error Handling\n\nThe server provides comprehensive error handling:\n\n- **Authentication Errors**: Automatic token refresh\n- **Rate Limiting**: Built-in retry logic with exponential backoff\n- **Network Errors**: Automatic reconnection and retry\n- **Validation Errors**: Detailed error messages with suggestions\n\n## Logging\n\nConfigure logging level in your environment:\n\n```bash\nexport CNHK_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR\n```\n\n## Development\n\n### Setting up Development Environment\n\n```bash\ngit clone https://github.com/cnhk/cnhkmcp.git\ncd cnhkmcp\npip install -e \".[dev]\"\n```\n\n### Running Tests\n\n```bash\npytest\n```\n\n### Code Formatting\n\n```bash\nblack src/\nisort src/\n```\n\n## Requirements\n\n- Python 3.8+\n- Platform account access\n- Chrome/Chromium browser (for forum functionality)\n\n## Dependencies\n\n- `mcp>=1.0.0`: Model Context Protocol SDK\n- `httpx>=0.25.0`: HTTP client\n- `pydantic>=2.0.0`: Data validation\n- `selenium>=4.0.0`: Web automation\n- `beautifulsoup4>=4.12.0`: HTML parsing\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- \ud83d\udcd6 [Documentation](https://github.com/cnhk/cnhkmcp/blob/main/README.md)\n- \ud83d\udc1b [Issue Tracker](https://github.com/cnhk/cnhkmcp/issues)\n- \ud83d\udcac [Discussions](https://github.com/cnhk/cnhkmcp/discussions)\n\n## Changelog\n\n### v1.0.0\n- Initial release\n- Core MCP server functionality\n- Alpha simulation and management\n- Forum integration\n- Data analysis tools\n- Batch processing capabilities\n\n---\n\n**CNHK MCP Server** - Bringing quantitative research capabilities to AI assistants through the Model Context Protocol.\n",
"bugtrack_url": null,
"license": null,
"summary": "A Model Context Protocol server for quantitative research and data analysis",
"version": "1.0.5",
"project_urls": {
"Bug Tracker": "https://github.com/cnhk/cnhkmcp/issues",
"Documentation": "https://github.com/cnhk/cnhkmcp/blob/main/README.md",
"Homepage": "https://github.com/cnhk/cnhkmcp",
"Repository": "https://github.com/cnhk/cnhkmcp"
},
"split_keywords": [
"api",
" data-analysis",
" mcp",
" model-context-protocol",
" quantitative",
" research"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b6f9c0bfaea72c6c1c7e6a4b4908c6a6d57f57b2dce61b5f6357b7bc07a8a5ae",
"md5": "e00748319a8b2aa7956c06a17085fb1d",
"sha256": "ae0afc44b78281d6bcfe2c55d6a8def76698ca2da5dacbad08dc6c689439075d"
},
"downloads": -1,
"filename": "cnhkmcp-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e00748319a8b2aa7956c06a17085fb1d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 19642,
"upload_time": "2025-08-06T19:39:08",
"upload_time_iso_8601": "2025-08-06T19:39:08.006244Z",
"url": "https://files.pythonhosted.org/packages/b6/f9/c0bfaea72c6c1c7e6a4b4908c6a6d57f57b2dce61b5f6357b7bc07a8a5ae/cnhkmcp-1.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a2903e15e68c36da4828c703682beddabf39edbea14ceab33c1cf6c652fe36eb",
"md5": "233f4b3697b2c77c78900210bb50071c",
"sha256": "ab8213d2c6264754cf8487af9ad3b6a99a7b30dcc2c119eb1fc804998eb4a0a7"
},
"downloads": -1,
"filename": "cnhkmcp-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "233f4b3697b2c77c78900210bb50071c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 17960,
"upload_time": "2025-08-06T19:39:09",
"upload_time_iso_8601": "2025-08-06T19:39:09.305624Z",
"url": "https://files.pythonhosted.org/packages/a2/90/3e15e68c36da4828c703682beddabf39edbea14ceab33c1cf6c652fe36eb/cnhkmcp-1.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-06 19:39:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cnhk",
"github_project": "cnhkmcp",
"github_not_found": true,
"lcname": "cnhkmcp"
}