# CDMN Decision MCP Server (Hybrid DMN)
하이브리드 DMN MCP 서버 - cDMN API와 표준 XML 파싱을 모두 지원하는 FastMCP 기반 의사결정 서버입니다.
## 🚀 Features
### 핵심 기능
- **🔄 하이브리드 DMN 엔진**: cDMN API와 표준 XML 파싱을 모두 지원
- **🤖 자동 엔진 선택**: cDMN 실패 시 자동으로 XML 파서로 폴백
- **📄 DMN XML 지원**: DMN 1.3 표준 XML 형식 완벽 지원
- **🎯 다양한 Hit Policy**: FIRST, UNIQUE, ANY, PRIORITY 등 지원
- **📊 의사결정 추적**: 실행 경로와 규칙 매칭 과정 상세 추적
### 고급 기능
- **완전히 제네릭한 의사결정 엔진**: 고정된 스키마 없이 key-value 형태의 유연한 입력 처리
- **자연어 → DMN 호출 자동화**: LLM 기반 자연어 파싱으로 DMN 인퍼런스를 수행하고 결과를 반환
- **Rule 관리 기능**: DMN XML을 로드, 저장, 조회 가능
- **동적 스키마 조회**: 각 규칙의 입력 요구사항을 런타임에 확인 가능
- **호출측 LLM 최적화**: 마크다운 생성은 호출측 LLM에서 처리하도록 설계
- **확장 가능한 규칙 시스템**: 새로운 규칙을 동적으로 등록하고 실행 가능
- **MCP 프로토콜 준수**: FastMCP 기반으로 LLM에서 함수 호출 및 응답 처리 가능
## 📋 Requirements
- Python 3.11+
- FastMCP
- cDMN (선택사항, 고급 DMN 기능 사용 시)
- idp-engine (cDMN 사용 시 필요)
## 🛠️ Installation
### Using pip
```bash
pip install cdmn-mcp-server
```
### With cDMN support (recommended)
```bash
pip install cdmn-mcp-server cdmn idp-engine
```
### From source
```bash
git clone https://github.com/rickjang/cdmn-mcp-server.git
cd cdmn-mcp-server
pip install -e .
```
## 🚀 Usage
### 1. Command Line
```bash
# 기본 실행
cdmn-mcp-server
# 또는 Python 모듈로 실행
python -m cdmn_mcp_server.server_fully_generic
```
### 2. MCP 설정 파일
Claude Desktop 등에서 사용하기 위한 설정:
```json
{
"mcpServers": {
"cdmn-mcp-server": {
"command": "uvx",
"args": ["cdmn-mcp-server"]
}
}
}
```
### 3. Python API
```python
from cdmn_mcp_server.server_fully_generic import DMNModel
# DMN 모델 초기화
dmn_model = DMNModel()
# 규칙 로드
await dmn_model.load_rule("insurance_premium")
# 의사결정 실행
result = await dmn_model.evaluate_decision("insurance_premium", {
"age": 65,
"smoker": True,
"health_score": 30
})
print(result.result) # {'Risk Category': 'Very High'}
print(result.engine_used) # 'cdmn' 또는 'xml'
```
## 📚 Available Tools
### 1. `load_rule(rule_name: str)`
DMN XML 규칙을 로드합니다.
### 2. `save_rule(rule_name: str, xml_content: str)`
새로운 DMN 규칙을 저장합니다.
### 3. `list_rules()`
등록된 DMN 규칙 목록을 조회합니다.
### 4. `delete_rule(rule_name: str)`
DMN 규칙을 삭제합니다.
### 5. `get_rule_schema(rule_name: str)`
규칙의 입력 스키마를 조회합니다.
### 6. `infer_decision(rule_name: str, context_input: Dict[str, Any])`
DMN 규칙을 기반으로 의사결정을 실행합니다.
### 7. `register_rule(rule_name: str, rule_config: Dict[str, Any])`
새로운 규칙을 동적으로 등록합니다.
### 8. `check_engine_status()`
하이브리드 엔진의 상태를 확인합니다.
## 🎯 Examples
### 보험료 계산
```python
# 규칙 로드
await load_rule("insurance_premium")
# 의사결정 실행
result = await infer_decision("insurance_premium", {
"age": 65,
"smoker": True,
"health_score": 30
})
# 결과:
# {
# "result": {"Risk Category": "Very High"},
# "engine_used": "xml",
# "execution_time": 0.0001,
# "trace": [...]
# }
```
### 대출 승인
```python
result = await infer_decision("loan_approval", {
"credit_score": 750,
"income": 60000,
"age": 35
})
```
## 🔧 Engine Types
### cDMN API (고급)
- ✅ 모델 확장: 모든 가능한 해를 찾을 수 있음
- ✅ 전파: 입력값을 통해 출력값을 자동 계산
- ✅ 불확실성 처리: 확정되지 않은 값들을 명시적으로 처리
- ❌ 제한사항: 일부 DMN XML 형식과 호환되지 않을 수 있음
### XML Parser (기본)
- ✅ 범용성: 대부분의 표준 DMN XML 형식 지원
- ✅ 호환성: 다양한 Hit Policy 지원
- ✅ 안정성: cDMN 실패 시 안전한 폴백
- ❌ 제한사항: 고급 기능(모델 확장 등)은 지원하지 않음
## 📝 DMN XML Format
지원되는 DMN XML 형식 예제:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/"
id="insurance-premium"
name="Insurance Premium Calculation">
<decision id="riskCategory" name="Risk Category">
<decisionTable id="riskTable" hitPolicy="FIRST">
<input id="ageInput" label="Age">
<inputExpression typeRef="number">
<text>age</text>
</inputExpression>
</input>
<output id="riskOutput" label="Risk Category" typeRef="string"/>
<rule id="rule1">
<inputEntry id="age1">
<text>age >= 60</text>
</inputEntry>
<outputEntry id="risk1">
<text>"High Risk"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
</definitions>
```
## 🐛 Troubleshooting
### cDMN API 오류
- cDMN API가 특정 XML 형식과 호환되지 않는 경우, 자동으로 XML 파서로 폴백됩니다.
- 이는 정상적인 동작이며, 대부분의 경우 XML 파서로 충분히 처리할 수 있습니다.
### XML 파싱 오류
- XML 형식이 올바른지 확인하세요.
- 네임스페이스와 태그 구조가 DMN 1.3 표준을 따르는지 확인하세요.
- `<`, `>` 같은 특수 문자는 `<`, `>`로 이스케이프해야 합니다.
## 📄 License
MIT License
## 👤 Author
rickjang
## 🔗 Links
- [GitHub Repository](https://github.com/rickjang/cdmn-mcp-server)
- [PyPI Package](https://pypi.org/project/cdmn-mcp-server/)
- [cDMN Documentation](https://cdmn.readthedocs.io/)
- [FastMCP Documentation](https://gofastmcp.com/)
## 📈 Changelog
### 2.0.0 (2025-10-18)
- ✨ 하이브리드 DMN 엔진 추가 (cDMN + XML)
- ✨ 자동 엔진 선택 및 폴백 메커니즘
- ✨ DMN 1.3 표준 XML 완벽 지원
- ✨ 다양한 Hit Policy 지원 (FIRST, UNIQUE, ANY, PRIORITY)
- ✨ 실행 엔진 정보 추적 기능
- 📚 문서 대폭 개선
### 1.3.0
- 초기 제네릭 버전 릴리스
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Raw data
{
"_id": null,
"home_page": "https://github.com/rickjang/cdmn-mcp-server",
"name": "cdmn-mcp-server",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "mcp, dmn, decision, rules, engine, fastmcp, llm, natural language",
"author": "rickjang",
"author_email": "rickjang <rickjang@example.com>",
"download_url": "https://files.pythonhosted.org/packages/60/32/d34ff35a54cc20431deafccab94ad2476ebb410092d21938899d9ff4dc79/cdmn_mcp_server-2.0.1.tar.gz",
"platform": null,
"description": "# CDMN Decision MCP Server (Hybrid DMN)\n\n\ud558\uc774\ube0c\ub9ac\ub4dc DMN MCP \uc11c\ubc84 - cDMN API\uc640 \ud45c\uc900 XML \ud30c\uc2f1\uc744 \ubaa8\ub450 \uc9c0\uc6d0\ud558\ub294 FastMCP \uae30\ubc18 \uc758\uc0ac\uacb0\uc815 \uc11c\ubc84\uc785\ub2c8\ub2e4.\n\n## \ud83d\ude80 Features\n\n### \ud575\uc2ec \uae30\ub2a5\n- **\ud83d\udd04 \ud558\uc774\ube0c\ub9ac\ub4dc DMN \uc5d4\uc9c4**: cDMN API\uc640 \ud45c\uc900 XML \ud30c\uc2f1\uc744 \ubaa8\ub450 \uc9c0\uc6d0\n- **\ud83e\udd16 \uc790\ub3d9 \uc5d4\uc9c4 \uc120\ud0dd**: cDMN \uc2e4\ud328 \uc2dc \uc790\ub3d9\uc73c\ub85c XML \ud30c\uc11c\ub85c \ud3f4\ubc31\n- **\ud83d\udcc4 DMN XML \uc9c0\uc6d0**: DMN 1.3 \ud45c\uc900 XML \ud615\uc2dd \uc644\ubcbd \uc9c0\uc6d0\n- **\ud83c\udfaf \ub2e4\uc591\ud55c Hit Policy**: FIRST, UNIQUE, ANY, PRIORITY \ub4f1 \uc9c0\uc6d0\n- **\ud83d\udcca \uc758\uc0ac\uacb0\uc815 \ucd94\uc801**: \uc2e4\ud589 \uacbd\ub85c\uc640 \uaddc\uce59 \ub9e4\uce6d \uacfc\uc815 \uc0c1\uc138 \ucd94\uc801\n\n### \uace0\uae09 \uae30\ub2a5\n- **\uc644\uc804\ud788 \uc81c\ub124\ub9ad\ud55c \uc758\uc0ac\uacb0\uc815 \uc5d4\uc9c4**: \uace0\uc815\ub41c \uc2a4\ud0a4\ub9c8 \uc5c6\uc774 key-value \ud615\ud0dc\uc758 \uc720\uc5f0\ud55c \uc785\ub825 \ucc98\ub9ac\n- **\uc790\uc5f0\uc5b4 \u2192 DMN \ud638\ucd9c \uc790\ub3d9\ud654**: LLM \uae30\ubc18 \uc790\uc5f0\uc5b4 \ud30c\uc2f1\uc73c\ub85c DMN \uc778\ud37c\ub7f0\uc2a4\ub97c \uc218\ud589\ud558\uace0 \uacb0\uacfc\ub97c \ubc18\ud658\n- **Rule \uad00\ub9ac \uae30\ub2a5**: DMN XML\uc744 \ub85c\ub4dc, \uc800\uc7a5, \uc870\ud68c \uac00\ub2a5\n- **\ub3d9\uc801 \uc2a4\ud0a4\ub9c8 \uc870\ud68c**: \uac01 \uaddc\uce59\uc758 \uc785\ub825 \uc694\uad6c\uc0ac\ud56d\uc744 \ub7f0\ud0c0\uc784\uc5d0 \ud655\uc778 \uac00\ub2a5\n- **\ud638\ucd9c\uce21 LLM \ucd5c\uc801\ud654**: \ub9c8\ud06c\ub2e4\uc6b4 \uc0dd\uc131\uc740 \ud638\ucd9c\uce21 LLM\uc5d0\uc11c \ucc98\ub9ac\ud558\ub3c4\ub85d \uc124\uacc4\n- **\ud655\uc7a5 \uac00\ub2a5\ud55c \uaddc\uce59 \uc2dc\uc2a4\ud15c**: \uc0c8\ub85c\uc6b4 \uaddc\uce59\uc744 \ub3d9\uc801\uc73c\ub85c \ub4f1\ub85d\ud558\uace0 \uc2e4\ud589 \uac00\ub2a5\n- **MCP \ud504\ub85c\ud1a0\ucf5c \uc900\uc218**: FastMCP \uae30\ubc18\uc73c\ub85c LLM\uc5d0\uc11c \ud568\uc218 \ud638\ucd9c \ubc0f \uc751\ub2f5 \ucc98\ub9ac \uac00\ub2a5\n\n## \ud83d\udccb Requirements\n\n- Python 3.11+\n- FastMCP\n- cDMN (\uc120\ud0dd\uc0ac\ud56d, \uace0\uae09 DMN \uae30\ub2a5 \uc0ac\uc6a9 \uc2dc)\n- idp-engine (cDMN \uc0ac\uc6a9 \uc2dc \ud544\uc694)\n\n## \ud83d\udee0\ufe0f Installation\n\n### Using pip\n\n```bash\npip install cdmn-mcp-server\n```\n\n### With cDMN support (recommended)\n\n```bash\npip install cdmn-mcp-server cdmn idp-engine\n```\n\n### From source\n\n```bash\ngit clone https://github.com/rickjang/cdmn-mcp-server.git\ncd cdmn-mcp-server\npip install -e .\n```\n\n## \ud83d\ude80 Usage\n\n### 1. Command Line\n\n```bash\n# \uae30\ubcf8 \uc2e4\ud589\ncdmn-mcp-server\n\n# \ub610\ub294 Python \ubaa8\ub4c8\ub85c \uc2e4\ud589\npython -m cdmn_mcp_server.server_fully_generic\n```\n\n### 2. MCP \uc124\uc815 \ud30c\uc77c\n\nClaude Desktop \ub4f1\uc5d0\uc11c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \uc124\uc815:\n\n```json\n{\n \"mcpServers\": {\n \"cdmn-mcp-server\": {\n \"command\": \"uvx\",\n \"args\": [\"cdmn-mcp-server\"]\n }\n }\n}\n```\n\n### 3. Python API\n\n```python\nfrom cdmn_mcp_server.server_fully_generic import DMNModel\n\n# DMN \ubaa8\ub378 \ucd08\uae30\ud654\ndmn_model = DMNModel()\n\n# \uaddc\uce59 \ub85c\ub4dc\nawait dmn_model.load_rule(\"insurance_premium\")\n\n# \uc758\uc0ac\uacb0\uc815 \uc2e4\ud589\nresult = await dmn_model.evaluate_decision(\"insurance_premium\", {\n \"age\": 65,\n \"smoker\": True,\n \"health_score\": 30\n})\n\nprint(result.result) # {'Risk Category': 'Very High'}\nprint(result.engine_used) # 'cdmn' \ub610\ub294 'xml'\n```\n\n## \ud83d\udcda Available Tools\n\n### 1. `load_rule(rule_name: str)`\nDMN XML \uaddc\uce59\uc744 \ub85c\ub4dc\ud569\ub2c8\ub2e4.\n\n### 2. `save_rule(rule_name: str, xml_content: str)`\n\uc0c8\ub85c\uc6b4 DMN \uaddc\uce59\uc744 \uc800\uc7a5\ud569\ub2c8\ub2e4.\n\n### 3. `list_rules()`\n\ub4f1\ub85d\ub41c DMN \uaddc\uce59 \ubaa9\ub85d\uc744 \uc870\ud68c\ud569\ub2c8\ub2e4.\n\n### 4. `delete_rule(rule_name: str)`\nDMN \uaddc\uce59\uc744 \uc0ad\uc81c\ud569\ub2c8\ub2e4.\n\n### 5. `get_rule_schema(rule_name: str)`\n\uaddc\uce59\uc758 \uc785\ub825 \uc2a4\ud0a4\ub9c8\ub97c \uc870\ud68c\ud569\ub2c8\ub2e4.\n\n### 6. `infer_decision(rule_name: str, context_input: Dict[str, Any])`\nDMN \uaddc\uce59\uc744 \uae30\ubc18\uc73c\ub85c \uc758\uc0ac\uacb0\uc815\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.\n\n### 7. `register_rule(rule_name: str, rule_config: Dict[str, Any])`\n\uc0c8\ub85c\uc6b4 \uaddc\uce59\uc744 \ub3d9\uc801\uc73c\ub85c \ub4f1\ub85d\ud569\ub2c8\ub2e4.\n\n### 8. `check_engine_status()`\n\ud558\uc774\ube0c\ub9ac\ub4dc \uc5d4\uc9c4\uc758 \uc0c1\ud0dc\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.\n\n## \ud83c\udfaf Examples\n\n### \ubcf4\ud5d8\ub8cc \uacc4\uc0b0\n\n```python\n# \uaddc\uce59 \ub85c\ub4dc\nawait load_rule(\"insurance_premium\")\n\n# \uc758\uc0ac\uacb0\uc815 \uc2e4\ud589\nresult = await infer_decision(\"insurance_premium\", {\n \"age\": 65,\n \"smoker\": True,\n \"health_score\": 30\n})\n\n# \uacb0\uacfc:\n# {\n# \"result\": {\"Risk Category\": \"Very High\"},\n# \"engine_used\": \"xml\",\n# \"execution_time\": 0.0001,\n# \"trace\": [...]\n# }\n```\n\n### \ub300\ucd9c \uc2b9\uc778\n\n```python\nresult = await infer_decision(\"loan_approval\", {\n \"credit_score\": 750,\n \"income\": 60000,\n \"age\": 35\n})\n```\n\n## \ud83d\udd27 Engine Types\n\n### cDMN API (\uace0\uae09)\n- \u2705 \ubaa8\ub378 \ud655\uc7a5: \ubaa8\ub4e0 \uac00\ub2a5\ud55c \ud574\ub97c \ucc3e\uc744 \uc218 \uc788\uc74c\n- \u2705 \uc804\ud30c: \uc785\ub825\uac12\uc744 \ud1b5\ud574 \ucd9c\ub825\uac12\uc744 \uc790\ub3d9 \uacc4\uc0b0\n- \u2705 \ubd88\ud655\uc2e4\uc131 \ucc98\ub9ac: \ud655\uc815\ub418\uc9c0 \uc54a\uc740 \uac12\ub4e4\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \ucc98\ub9ac\n- \u274c \uc81c\ud55c\uc0ac\ud56d: \uc77c\ubd80 DMN XML \ud615\uc2dd\uacfc \ud638\ud658\ub418\uc9c0 \uc54a\uc744 \uc218 \uc788\uc74c\n\n### XML Parser (\uae30\ubcf8)\n- \u2705 \ubc94\uc6a9\uc131: \ub300\ubd80\ubd84\uc758 \ud45c\uc900 DMN XML \ud615\uc2dd \uc9c0\uc6d0\n- \u2705 \ud638\ud658\uc131: \ub2e4\uc591\ud55c Hit Policy \uc9c0\uc6d0\n- \u2705 \uc548\uc815\uc131: cDMN \uc2e4\ud328 \uc2dc \uc548\uc804\ud55c \ud3f4\ubc31\n- \u274c \uc81c\ud55c\uc0ac\ud56d: \uace0\uae09 \uae30\ub2a5(\ubaa8\ub378 \ud655\uc7a5 \ub4f1)\uc740 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc74c\n\n## \ud83d\udcdd DMN XML Format\n\n\uc9c0\uc6d0\ub418\ub294 DMN XML \ud615\uc2dd \uc608\uc81c:\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions xmlns=\"https://www.omg.org/spec/DMN/20191111/MODEL/\"\n id=\"insurance-premium\"\n name=\"Insurance Premium Calculation\">\n \n <decision id=\"riskCategory\" name=\"Risk Category\">\n <decisionTable id=\"riskTable\" hitPolicy=\"FIRST\">\n <input id=\"ageInput\" label=\"Age\">\n <inputExpression typeRef=\"number\">\n <text>age</text>\n </inputExpression>\n </input>\n <output id=\"riskOutput\" label=\"Risk Category\" typeRef=\"string\"/>\n \n <rule id=\"rule1\">\n <inputEntry id=\"age1\">\n <text>age >= 60</text>\n </inputEntry>\n <outputEntry id=\"risk1\">\n <text>\"High Risk\"</text>\n </outputEntry>\n </rule>\n </decisionTable>\n </decision>\n \n</definitions>\n```\n\n## \ud83d\udc1b Troubleshooting\n\n### cDMN API \uc624\ub958\n- cDMN API\uac00 \ud2b9\uc815 XML \ud615\uc2dd\uacfc \ud638\ud658\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0, \uc790\ub3d9\uc73c\ub85c XML \ud30c\uc11c\ub85c \ud3f4\ubc31\ub429\ub2c8\ub2e4.\n- \uc774\ub294 \uc815\uc0c1\uc801\uc778 \ub3d9\uc791\uc774\uba70, \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 XML \ud30c\uc11c\ub85c \ucda9\ubd84\ud788 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n### XML \ud30c\uc2f1 \uc624\ub958\n- XML \ud615\uc2dd\uc774 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc138\uc694.\n- \ub124\uc784\uc2a4\ud398\uc774\uc2a4\uc640 \ud0dc\uadf8 \uad6c\uc870\uac00 DMN 1.3 \ud45c\uc900\uc744 \ub530\ub974\ub294\uc9c0 \ud655\uc778\ud558\uc138\uc694.\n- `<`, `>` \uac19\uc740 \ud2b9\uc218 \ubb38\uc790\ub294 `<`, `>`\ub85c \uc774\uc2a4\ucf00\uc774\ud504\ud574\uc57c \ud569\ub2c8\ub2e4.\n\n## \ud83d\udcc4 License\n\nMIT License\n\n## \ud83d\udc64 Author\n\nrickjang\n\n## \ud83d\udd17 Links\n\n- [GitHub Repository](https://github.com/rickjang/cdmn-mcp-server)\n- [PyPI Package](https://pypi.org/project/cdmn-mcp-server/)\n- [cDMN Documentation](https://cdmn.readthedocs.io/)\n- [FastMCP Documentation](https://gofastmcp.com/)\n\n## \ud83d\udcc8 Changelog\n\n### 2.0.0 (2025-10-18)\n- \u2728 \ud558\uc774\ube0c\ub9ac\ub4dc DMN \uc5d4\uc9c4 \ucd94\uac00 (cDMN + XML)\n- \u2728 \uc790\ub3d9 \uc5d4\uc9c4 \uc120\ud0dd \ubc0f \ud3f4\ubc31 \uba54\ucee4\ub2c8\uc998\n- \u2728 DMN 1.3 \ud45c\uc900 XML \uc644\ubcbd \uc9c0\uc6d0\n- \u2728 \ub2e4\uc591\ud55c Hit Policy \uc9c0\uc6d0 (FIRST, UNIQUE, ANY, PRIORITY)\n- \u2728 \uc2e4\ud589 \uc5d4\uc9c4 \uc815\ubcf4 \ucd94\uc801 \uae30\ub2a5\n- \ud83d\udcda \ubb38\uc11c \ub300\ud3ed \uac1c\uc120\n\n### 1.3.0\n- \ucd08\uae30 \uc81c\ub124\ub9ad \ubc84\uc804 \ub9b4\ub9ac\uc2a4\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\ud558\uc774\ube0c\ub9ac\ub4dc DMN MCP \uc11c\ubc84 - cDMN API\uc640 \ud45c\uc900 XML \ud30c\uc2f1\uc744 \ubaa8\ub450 \uc9c0\uc6d0\ud558\ub294 FastMCP \uae30\ubc18 \uc758\uc0ac\uacb0\uc815 \uc11c\ubc84",
"version": "2.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/rickjang/cdmn-mcp-server/issues",
"Documentation": "https://github.com/rickjang/cdmn-mcp-server#readme",
"Homepage": "https://github.com/rickjang/cdmn-mcp-server",
"Repository": "https://github.com/rickjang/cdmn-mcp-server"
},
"split_keywords": [
"mcp",
" dmn",
" decision",
" rules",
" engine",
" fastmcp",
" llm",
" natural language"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "dd1787d6d7025f1ed524d0a2892bb85f556592a63aa031ce86ed0904ac00d4a7",
"md5": "5c6e492e721131d527a53be0549eea2b",
"sha256": "69c1e3a3b7b218c8299d89f1c4360bf4ad69c8129e800b90603042f5cd91fb6f"
},
"downloads": -1,
"filename": "cdmn_mcp_server-2.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5c6e492e721131d527a53be0549eea2b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 22198,
"upload_time": "2025-10-18T11:42:41",
"upload_time_iso_8601": "2025-10-18T11:42:41.708987Z",
"url": "https://files.pythonhosted.org/packages/dd/17/87d6d7025f1ed524d0a2892bb85f556592a63aa031ce86ed0904ac00d4a7/cdmn_mcp_server-2.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6032d34ff35a54cc20431deafccab94ad2476ebb410092d21938899d9ff4dc79",
"md5": "a89fca1a4f44ac32b4620b17d7dede83",
"sha256": "102025edf00be524fdd396812929420a4c369f4b708bbf25c51c6f3e86b09a26"
},
"downloads": -1,
"filename": "cdmn_mcp_server-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "a89fca1a4f44ac32b4620b17d7dede83",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 25736,
"upload_time": "2025-10-18T11:42:42",
"upload_time_iso_8601": "2025-10-18T11:42:42.968240Z",
"url": "https://files.pythonhosted.org/packages/60/32/d34ff35a54cc20431deafccab94ad2476ebb410092d21938899d9ff4dc79/cdmn_mcp_server-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-18 11:42:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rickjang",
"github_project": "cdmn-mcp-server",
"github_not_found": true,
"lcname": "cdmn-mcp-server"
}