ElectoMCP
用于选举计算和分析的模型上下文协议(MCP)服务器。
概述
ElectoMCP是一个MCP服务器,提供计算选举系统中席位分配、分析投票失真和计算有效政党数量的工具。它支持各种选举方法,包括比例代表制和基于配额的方法。
特性
- 座位分布计算:计算如何使用不同的选举方法在候选人之间分配席位
- 投票失真分析:使用Loosemore Handby方法计算投票失真
- 有效缔约方数量:使用Laakso-Taagepera或Golosov公式计算ENP
支持的选举方法
除数方法
- 德洪特:最常见的比例代表法
- 圣拉古:修改了除数法,以获得更均衡的结果
- 亚当斯:有利于小党派的除数法
- 帝国:意大利风格除数法
- 亨廷顿山:用于美国众议院分配
- 丹麦语:丹麦式除数法
配额方法
- 野兔:简单配额法
- 下垂:STV系统中最常见的配额
- 哈根巴赫-比肖夫:替代配额方法
- 帝国 配额:Imperiali方法的配额变体
安装
# Clone the repository
git clone
cd electomcp
# Install dependencies
uv sync
# Run the MCP server
uv run electomcp用法
这是一个设计用于MCP兼容客户端的MCP服务器。运行后,它提供以下工具:
compute_method
根据指定的选举方法计算候选人之间的席位分配。
参数:
candidates:候选人名单及其计票结果seats:要分配的席位总数method:要使用的选举方法(默认值:“dhondt”)
vote_distorsion_loosemore_handby
使用Loosemore Handby方法计算投票失真。
参数:
candidates:获得选票和分配席位的候选人名单
effective_number_of_parties
计算参与方的有效数量。
参数:
votes_or_seats:计票或席位清点清单version:“laakso.taagepera”(默认)或“golosov”
示例
# Example candidate data
candidates = [
{"name": "Party A", "votes": 45000, "seats": 0},
{"name": "Party B", "votes": 35000, "seats": 0},
{"name": "Party C", "votes": 20000, "seats": 0}
]
# Calculate seat distribution using D'Hondt method
result = compute_method(candidates, seats=10, method="dhondt")需求
- Python≥3.13
- FastMCP≥2.13.0.1
发展
# Install development dependencies
uv sync --group dev
# Run type checking
uv run pyright