creo-mcp-server
by kirakirapink
README.md
# creo-mcp-server セットアップ手順
Creo Parametric 用 MCP サーバー。ビルドツール (Maven 等) を入れずに、GitHub からファイルをコピーして手動で構築する場合の手順。
License: MIT
---
## クイックスタート: コンパイル不要・完全手動コピー
**javac / mvn / gradle 一切不要**。**Java Runtime 21+** (`java` コマンドが動けば OK、JDK は不要) と Python 3.11+ だけで動く最短パス。Mac でビルドした fat-jar は Windows / Linux でもそのまま動きます (Java は OS 非依存)。
### 最終的なローカル構成
```
~/creo-mcp-server/
├── creo_mcp.py (Python MCP 本体)
├── pyproject.toml (メタ情報、なくても動く)
├── LICENSE
└── jlpfc-gateway-0.1.1-shaded.jar (jlpfc_execute を使う場合のみ)
```
### 手順 (4〜6 ステップ)
**1. ディレクトリを作る**
```bash
mkdir -p ~/creo-mcp-server
cd ~/creo-mcp-server
```
Windows PowerShell:
```powershell
mkdir -Force "$HOME\creo-mcp-server"
cd "$HOME\creo-mcp-server"
```
**2. Python 側の 3 ファイルをダウンロード**
コマンドライン:
```bash
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/creo_mcp.py
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/pyproject.toml
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/LICENSE
```
またはブラウザで GitHub のファイルを開き、右上の `Raw` → 右クリック `名前を付けて保存` を 3 回。
**3. Python の依存を入れる**
```bash
pip install mcp httpx pydantic
```
これで `python creo_mcp.py` として MCP サーバーが起動できる状態になる (Creoson だけを使う場合はここで完了。手順 4 は不要)。
**4. (任意) Gateway の fat-jar をダウンロード** — `jlpfc_execute` を使う場合のみ
```bash
curl -LO https://github.com/kirakirapink/creo-mcp-server/releases/download/v0.1.1/jlpfc-gateway-0.1.1-shaded.jar
```
またはブラウザで https://github.com/kirakirapink/creo-mcp-server/releases から `.jar` を保存。
SHA-256 検証 (任意、改ざん検知したい場合):
```bash
shasum -a 256 jlpfc-gateway-0.1.1-shaded.jar
# 期待値: 3138e5cb05fbaa3148e5f49ce51ea67914724b1aab071e791b3389c2048f7e4f
```
**5. MCP クライアント (Claude Desktop 等) に登録**
Claude Desktop の場合、`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) または `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"creo": {
"command": "python",
"args": ["/absolute/path/to/creo-mcp-server/creo_mcp.py"]
}
}
}
```
**6. (任意) Gateway 起動** — `jlpfc_execute` を使う場合のみ、別ターミナルで
Creo 10 で必要な J-Link JAR は **`pfcasync.jar` の 1 個のみ** (以前の Creo 世代のような `otk_java.jar` は不要)。
Windows PowerShell (Creo が Windows 標準パスの場合):
```powershell
$JLINK = "C:\Program Files\PTC\Creo 10.0.9.0\Common Files\text\java\pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar;$JLINK" io.github.kirakirapink.jlpfc.GatewayServer
```
Linux / Unix (Creo が `/proe/...` 配下等の場合):
```bash
JLINK="/proe/proe/Creo10.0.09.0/Common Files/text/java/pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar:$JLINK" io.github.kirakirapink.jlpfc.GatewayServer
```
macOS (通常 Creo は動かないが理論上):
```bash
JLINK="/path/to/Creo 10.0.9.0/Common Files/text/java/pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar:$JLINK" io.github.kirakirapink.jlpfc.GatewayServer
```
動作確認:
```bash
curl http://localhost:9057/jlpfc/health
```
`{"ok": true, "creo_connected": true, "handles": 0}` が返れば OK (Creo 未起動時は `creo_connected: false` になるが、Gateway 起動確認としてはこの状態で問題なし)。
**これで完了。** 詳細な設定、環境変数、注意点、トラブルシューティングは以下の各セクション参照。ソースから自分でコンパイルしたい場合のみ手順 5-B。
---
## 必要環境
| ソフト | 要否 | 用途 |
| --- | --- | --- |
| Creo Parametric 10.0.9.0 (10 の最終リリース) | 必須 | J-Link async 接続を受け付ける本体。動作確認済みバージョン |
| Python 3.11 以上 | 必須 | MCP サーバー本体 |
| Creoson (2.8 以降 / Creo 10 対応版) | 既存 180 tool を使うなら必須 | J-Link JSON サーバー |
| Java Runtime 21 以上 (OpenJDK 21 で動作確認) | `jlpfc_execute` を使うなら必須 | 事前ビルド済み fat-jar は Java 21 bytecode。JDK は「ソースから自分でビルドしたい場合」のみ必要 |
---
## 手順 1: Python 側をローカルに置く
以下 3 ファイルを任意のディレクトリにコピー (GitHub の Raw ボタンから右クリック保存で OK)。
- `creo_mcp.py`
- `pyproject.toml`
- `LICENSE`
コマンドライン例:
```bash
mkdir -p ~/creo-mcp-server
cd ~/creo-mcp-server
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/creo_mcp.py
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/pyproject.toml
curl -O https://raw.githubusercontent.com/kirakirapink/creo-mcp-server/main/LICENSE
```
---
## 手順 2: Python 依存を入れる
pip の場合:
```bash
pip install mcp httpx pydantic
```
uv の場合:
```bash
uv pip install mcp httpx pydantic
```
これだけで `python creo_mcp.py` として起動可能な状態になる。
---
## 手順 3: Creoson を起動
`jlpfc_execute` だけを使う場合はスキップ可。既存 180 tool (`file_open`, `feature_set` 等) を使うなら必須。
1. https://www.simplifiedlogic.com/creoson/download から Creoson (Creo 10 対応版) を入手
2. Creo Parametric 10 を起動
3. `CreosonSetup.exe` を起動して server を Start
4. 既定で `http://localhost:9056/creoson` で待受
---
## 手順 4: MCP クライアントに登録
Claude Desktop の場合、`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) または `%APPDATA%\Claude\claude_desktop_config.json` (Windows) に追加:
```json
{
"mcpServers": {
"creo": {
"command": "python",
"args": ["/absolute/path/to/creo_mcp.py"]
}
}
}
```
環境変数を渡す必要があれば `env` フィールドで:
```json
{
"mcpServers": {
"creo": {
"command": "python",
"args": ["/absolute/path/to/creo_mcp.py"],
"env": {
"CREOSON_HOST": "localhost",
"CREOSON_PORT": "9056",
"JLPFC_URL": "http://localhost:9057/jlpfc"
}
}
}
}
```
---
## 手順 5 (任意): J-Link/PFC Gateway をセットアップ
**`jlpfc_execute` を使わないならスキップ可能**。既存 180 tool だけで運用する場合は不要。
Creoson が対応していない任意の J-Link/PFC 呼び出しを叩きたい場合のみ、以下のどちらかを実施する。
- **経路 A: 事前ビルド済み fat-jar を使う (簡単、推奨)** → 手順 5-A へ
- **経路 B: ソースからコンパイルする (JDK 必要)** → 手順 5.1 へ
---
## 手順 5-A: 事前ビルド済み fat-jar を使う (簡単)
**必要環境**: Java Runtime 17+ (`java` コマンドが動けば OK、JDK は不要)、Creo Parametric 10
### 5-A.1. fat-jar と Creo JAR パスを準備
GitHub Releases から fat-jar をダウンロード:
```bash
curl -LO https://github.com/kirakirapink/creo-mcp-server/releases/download/v0.1.1/jlpfc-gateway-0.1.1-shaded.jar
```
**SHA-256 検証** (改ざん検知):
```bash
# macOS / Linux
shasum -a 256 jlpfc-gateway-0.1.1-shaded.jar
# 期待値: 3138e5cb05fbaa3148e5f49ce51ea67914724b1aab071e791b3389c2048f7e4f
```
```powershell
# Windows PowerShell
(Get-FileHash jlpfc-gateway-0.1.1-shaded.jar -Algorithm SHA256).Hash.ToLower()
# 期待値: 3138e5cb05fbaa3148e5f49ce51ea67914724b1aab071e791b3389c2048f7e4f
```
### 5-A.2. Gateway 起動
Creo 10 で必要な J-Link JAR は **`pfcasync.jar` の 1 個のみ**。以前の Creo 世代にあった `otk_java.jar` は Creo 10 では不要。
**Windows PowerShell** (Creo が Windows 標準パスの場合):
```powershell
$JLINK = "C:\Program Files\PTC\Creo 10.0.9.0\Common Files\text\java\pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar;$JLINK" io.github.kirakirapink.jlpfc.GatewayServer --port 9057
```
**Linux / Unix** (`/proe/...` 配下等):
```bash
JLINK="/proe/proe/Creo10.0.09.0/Common Files/text/java/pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar:$JLINK" io.github.kirakirapink.jlpfc.GatewayServer --port 9057
```
**macOS** (Creo は macOS 非サポートだが理論上):
```bash
JLINK="/path/to/Creo 10.0.9.0/Common Files/text/java/pfcasync.jar"
java -cp "jlpfc-gateway-0.1.1-shaded.jar:$JLINK" io.github.kirakirapink.jlpfc.GatewayServer --port 9057
```
Jackson 3 個の JAR は fat-jar に**同梱済み**なので追加ダウンロード不要。
### 5-A.3. 動作確認
```bash
curl http://localhost:9057/jlpfc/health
```
期待レスポンス:
```json
{"ok": true, "creo_connected": true, "handles": 0}
```
**Creo が起動していない状態でも `ok: true` は返る** (`creo_connected: false` になる)。Gateway 自体の起動確認だけならこの状態で十分。
以上で完了。以降の手順 5.1 以降 (ソースからのビルド) はスキップしてよい。
---
## 手順 5-B: ソースからコンパイルする (JDK 必要)
**事前ビルド済み fat-jar (手順 5-A) を使うならこのセクションは不要**。ソースを自分で監査したい場合や、コードを改造したい場合のみ実施する。
### 5.1. Java ファイルをダウンロード
リポジトリと同じ構造で以下をコピー:
```
jlpfc-gateway/
├── pom.xml (Maven 使わない場合は参考用、なくても動く)
└── src/main/java/io/github/kirakirapink/jlpfc/
├── CallGraphExecutor.java
├── ChainRequest.java
├── ChainResponse.java
├── ClassAllowlist.java
├── GatewayServer.java
├── HandleRegistry.java
├── JLinkConnection.java
└── TypeCoercer.java
```
### 5.2. Jackson JAR を手動ダウンロード
Java は標準の JSON パーサを持たないため、Gateway では **Jackson** (FasterXML) を使用する。
- **正体**: Java 界で最も広く使われている JSON ライブラリ (Spring Boot / Elasticsearch 等の主要 OSS が採用)
- **ライセンス**: Apache 2.0
- **配布元**: Maven Central (Java 用 PyPI 相当の公式リポジトリ、Sonatype 運営)
- **ソース**: https://github.com/FasterXML/jackson-databind
Maven Central から `lib/` に直接配置 (3 個):
- https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.22.0/jackson-databind-2.22.0.jar
- https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.22.0/jackson-core-2.22.0.jar
- https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.22.0/jackson-annotations-2.22.0.jar
```
jlpfc-gateway/
└── lib/
├── jackson-databind-2.22.0.jar
├── jackson-core-2.22.0.jar
└── jackson-annotations-2.22.0.jar
```
**改ざん検知したい場合**: 各 JAR には同じ URL の末尾に `.sha256` (SHA-256) や `.sha1` (SHA-1) を付けたチェックサムファイルが公開されている。例:
```
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.22.0/jackson-databind-2.22.0.jar.sha256
```
macOS / Linux:
```bash
curl -sO https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.22.0/jackson-databind-2.22.0.jar.sha256
expected=$(cat jackson-databind-2.22.0.jar.sha256)
actual=$(shasum -a 256 jackson-databind-2.22.0.jar | awk '{print $1}')
[ "$expected" = "$actual" ] && echo OK || echo MISMATCH
```
Windows PowerShell:
```powershell
$expected = Invoke-WebRequest https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.22.0/jackson-databind-2.22.0.jar.sha256 | Select-Object -ExpandProperty Content
$actual = (Get-FileHash lib\jackson-databind-2.22.0.jar -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { "OK" } else { "MISMATCH" }
```
### 5.3. Creo の J-Link JAR を確認 (再配布不可なので参照のみ)
Creo 10 のインストール先で以下 1 個が存在することを確認 (Creo 10 は `pfcasync.jar` の 1 本で足りる。旧世代の `otk_java.jar` は不要):
- `<Creo>/Common Files/text/java/pfcasync.jar`
`<Creo>` の例:
- Windows: `C:\Program Files\PTC\Creo 10.0.9.0`
- Linux/Unix: `/proe/proe/Creo10.0.09.0`
### 5.4. コンパイル (javac)
**Windows PowerShell:**
```powershell
cd jlpfc-gateway
$JLINK = "C:\Program Files\PTC\Creo 10.0.9.0\Common Files\text\java\pfcasync.jar"
$CP = "lib\jackson-databind-2.22.0.jar;lib\jackson-core-2.22.0.jar;lib\jackson-annotations-2.22.0.jar;$JLINK"
mkdir out -Force
javac -d out -cp $CP src\main\java\io\github\kirakirapink\jlpfc\*.java
```
**Linux / macOS:**
```bash
cd jlpfc-gateway
JLINK="/proe/proe/Creo10.0.09.0/Common Files/text/java/pfcasync.jar"
CP="lib/jackson-databind-2.22.0.jar:lib/jackson-core-2.22.0.jar:lib/jackson-annotations-2.22.0.jar:$JLINK"
mkdir -p out
javac -d out -cp "$CP" src/main/java/io/github/kirakirapink/jlpfc/*.java
```
`-cp` の区切り文字は Windows は `;`、Linux/macOS は `:`。
### 5.5. Gateway 起動
**Windows PowerShell:**
```powershell
java -cp "out;$CP" io.github.kirakirapink.jlpfc.GatewayServer --port 9057
```
**macOS / Linux:**
```bash
java -cp "out:$CP" io.github.kirakirapink.jlpfc.GatewayServer --port 9057
```
`--port` を省略すると `9057` が使われる。bind は `127.0.0.1` 固定。
### 5.6. 動作確認
```bash
curl http://localhost:9057/jlpfc/health
```
期待レスポンス:
```json
{"ok": true, "creo_connected": true, "handles": 0}
```
---
## 環境変数リファレンス
MCP サーバー起動時に読まれる:
| 変数 | 既定値 | 用途 |
| --- | --- | --- |
| `CREOSON_HOST` | `localhost` | Creoson ホスト名 |
| `CREOSON_PORT` | `9056` | Creoson ポート |
| `CREOSON_URL` | `http://{HOST}:{PORT}/creoson` | Creoson URL 全上書き |
| `CREO_MCP_LOG_LEVEL` | `WARNING` | Python 側ログレベル |
| `JLPFC_URL` | `http://localhost:9057/jlpfc` | Java Gateway ベース URL |
| `JLPFC_TIMEOUT` | `300` | Gateway HTTP タイムアウト (秒) |
---
## 注意点
### 接続 owner の運用ルール
- **Creoson と Java Gateway を同時に Creo に接続してはいけない**
- J-Link async はシングルスレッド前提。同一 Creo プロセスに 2 本の async 接続を張ると容易に固まる
- 運用時はどちらか一方だけを起動しておく (両方プロセスは起動していても構わないが、実際に Creo に接続するのは片方)
### Creo の J-Link async 待受設定
- Creo Parametric 側で J-Link async 接続を受け付けるには `protk.dat` (または類似の PTC 側設定) で listener を有効化する必要がある
- 詳細は PTC 公式ドキュメント (Creo Parametric TOOLKIT / J-Link Users Guide) を参照
### PTC の JAR は同梱不可
- `pfcasync.jar` (Creo 10 で必要な唯一の J-Link JAR) は PTC ライセンスにより再配布禁止
- 本リポジトリには含まれず、Creo インストール先を参照する形でのみ利用可能
### セキュリティ
- Gateway は認証なし + `127.0.0.1` バインド固定
- LAN や外部からのアクセスは想定していない
- 同一マシン内の他プロセスからは制限なくアクセス可能なので、多ユーザー環境では別途対策が必要
### Escape hatch (`creoson_raw`)
- `creo_mcp.py` の末尾付近にコメントアウトされた `creoson_raw` tool がある
- Creoson の生 JSON コマンドを LLM から直接投げるための最終手段用
- 有効化する場合はブロック全体の `#` を外す (typed tool でカバーされない Creoson コマンドがある時のみ推奨)
### Windows パス関連
- `-cp` の区切り文字は Windows は `;`、macOS/Linux は `:`
- Creo のインストールパスにスペースが含まれる場合は必ずクォート (`"..."`) で括る
- PowerShell の場合、変数展開は `$CREO` の形で行える
### プロキシ環境
- Maven Central や GitHub Raw を curl で取得する時にプロキシが必要な環境では `curl --proxy` などで対応
---
## トラブルシューティング
| 症状 | 対処 |
| --- | --- |
| MCP サーバー起動時に `Could not connect to Creoson on startup` の warning | Creoson が未起動。手順 3 を実施。もしくは `jlpfc_execute` だけを使うなら無視して OK |
| `jlpfc_execute` 呼び出し時に接続エラー | Java Gateway が起動していない or `JLPFC_URL` が違う。手順 5.5 と環境変数を確認 |
| Gateway 起動時に `pfcAsyncConnection` 系のクラスが見つからない | Creo のインストール先の `pfcasync.jar` のパスが違う。`<Creo>/Common Files/text/java/pfcasync.jar` に実在するか確認 |
| `curl /jlpfc/health` が `creo_connected: false` を返す | Creo プロセスが起動していない or J-Link async listener が有効化されていない (Creo 側の `protk.dat` 設定を確認) |
| MCP tool が `session` 系のエラーを返す | Creoson の session_id が切れている。MCP サーバーを再起動すれば `connection.connect` を再度投げる |
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing