Skip to main content
Glama
kirakirapink

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` を再度投げる |