Mahjong Calculator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mahjong Calculator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude ProjectsやClaude Desktopから麻雀の点数計算ができるMCPサーバーです。
123m456p789s11z)0で表現、例: 50m = 赤5萬)MCP (Model Context Protocol) は、Claude DesktopとAIツール間の通信プロトコルです。MCPサーバーを作成することで、Claudeに新しい機能(ツール)を追加できます。
このプロジェクトでは、麻雀の点数計算をClaudeから呼び出せるようにしています。
MCPサーバーには2つの接続方式があります:
このプロジェクトでは、安定性と管理の容易さから stdio方式 を推奨しています。
uv sync設定ファイルの場所:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json#### Linux/macOS(ネイティブ環境)の場合
{
"mcpServers": {
"mahjong-calculator": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/mahjong_calculator",
"run",
"python",
"-m",
"src.server"
]
}
}
}注意: /absolute/path/to/mahjong_calculator の部分は、このプロジェクトの絶対パスに置き換えてください。
#### Windows + WSL環境の場合(推奨設定)
Windows上のClaude DesktopからWSL内のMCPサーバーを起動する場合:
{
"mcpServers": {
"mahjong-calculator": {
"command": "wsl",
"args": [
"-e",
"bash",
"-c",
"export PATH=$HOME/.local/bin:$PATH && cd /home/your-username/projects/mahjong_calculator && exec uv run python -m src.server"
]
}
}
}重要:
/home/your-username/projects/mahjong_calculator をWSL内の実際のプロジェクトパスに置き換えてくださいyour-username をWSLのユーザー名に置き換えてください設定を反映させるため、Claude Desktopを完全に終了してから再起動してください。
Claude DesktopやClaude Projectsで以下のように質問してください:
手牌: 234m345p456s6677z
和了牌: 7z
の点数を教えて注意: 手牌(13枚)と和了牌(1枚)の合計14枚が正しい和了形(4面子1雀頭)である必要があります。
手牌: 234m234p234s555z
和了牌: 5z
でツモ和了、立直ありの場合の点数を計算して手牌: 234m456p678s3344s
和了牌: 5s
でロン和了、ドラ表示牌が1mの場合の点数は?1-9m(例: 123m)1-9p(例: 456p)1-9s(例: 789s)1-7z1z = 東2z = 南3z = 西4z = 北5z = 白6z = 發7z = 中0で表現(例: 50m = 赤5萬)| 牌姿 | 説明 |
|---|---|
123m456p789s1122z | 一萬二萬三萬四筒五筒六筒七索八索九索東東南南 |
1230m456p789s11z | 一萬二萬三萬赤五萬四筒五筒六筒七索八索九索東東 |
234m234p234s55z | 二萬三萬四萬二筒三筒四筒二索三索四索白白 |
MCPツール calculate_mahjong_score は以下のパラメータを受け付けます:
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
tiles | string | ✓ | - | 手牌 |
win_tile | string | ✓ | - | 和了牌 |
dora_indicators | string | "" | ドラ表示牌(カンマ区切り) | |
player_wind | string | "east" | 自風(east/south/west/north) | |
round_wind | string | "east" | 場風(east/south/west/north) | |
is_tsumo | boolean | true | ツモ和了かどうか | |
is_riichi | boolean | false | 立直しているか | |
is_ippatsu | boolean | false | 一発か | |
is_rinshan | boolean | false | 嶺上開花か | |
is_chankan | boolean | false | 搶槓か | |
is_haitei | boolean | false | 海底摸月か | |
is_houtei | boolean | false | 河底撈魚か |
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json/home/username/... 形式uv コマンドが正しくインストールされているか確認: which uv
uv --version wsl -e bash -c "export PATH=$HOME/.local/bin:$PATH && cd /home/username/projects/mahjong_calculator && uv run python -m src.server"問題: ローカルでSSE形式のサーバーを起動した場合、再起動後にClaude Desktopから接続できなくなる
解決策: stdio形式を使用する(上記の「Windows + WSL環境の場合」の設定)
stdio形式の利点:
どうしてもSSE形式を使いたい場合は、以下の手順で起動:
bash /home/miz/projects/mahjong_calculator/start_http_server.sh設定ファイル:
{
"mcpServers": {
"mahjong-calculator": {
"url": "http://localhost:8000/sse"
}
}
}注意: SSE形式は手動でサーバーを起動・停止する必要があり、管理が煩雑です。
m, 筒子: p, 索子: s, 字牌: z123m456p789s1122zMCPサーバーのログは標準エラー出力に出力されます。Claude Desktopのログで詳細を確認できます:
~/Library/Logs/Claude/%APPDATA%\Claude\logs\ログで以下を確認:
MCPサーバーとして起動せずに、直接Pythonスクリプトとして動作確認できます:
# JSON出力のテスト
uv run python test_json_output.py
# エラーケースのテスト
uv run python test_error_cases.pystdio形式で手動テスト:
bash start_stdio_server.shSSE形式で手動テスト(別ターミナルで実行):
# サーバー起動
bash start_http_server.sh
# 別ターミナルでアクセスを確認
curl http://localhost:8000/sseuv run pytestuv run mypy src/uv run ruff check src/# 依存関係を追加
uv add package-name
# 依存関係を更新
uv sync --upgrademahjong_calculator/
├── pyproject.toml # プロジェクト設定・依存関係
├── uv.lock # 依存関係のロックファイル
├── README.md # このファイル
├── main.py # スタンドアロン実行用(MCP不使用)
├── start_http_server.sh # SSE形式でのサーバー起動スクリプト
├── start_stdio_server.sh # stdio形式でのサーバー起動スクリプト
├── test_json_output.py # JSON出力のテスト
├── test_error_cases.py # エラーケースのテスト
└── src/
├── __init__.py # パッケージ初期化
├── constants.py # 定数定義
├── tile_parser.py # 入力解析(テキスト→内部形式)
├── calculator.py # 点数計算ロジック
└── server.py # MCPサーバー(エントリーポイント)#### コアモジュール
calculate_mahjong_score(): MCPツールとして公開される関数calculate_hand(): 手牌と和了牌から点数を計算GameContext: 対局状況(自風、場風、リーチなど)を管理123m456p789s11z のような入力をmahjongライブラリの形式に変換0)の処理に対応#### 起動スクリプト
#### テスト
Claude Desktop
↓ (MCP stdio/SSE)
server.py (FastMCP)
↓
calculator.py (計算ロジック)
↓
tile_parser.py (入力解析)
↓
mahjong-python (外部ライブラリ)calculate_mahjong_score ツールとしてリクエストを受信このプロジェクトは個人用です。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.