CHANGELOG.md•4.18 kB
# 開発ログ
## 2025-11-03: HTTPモード・OpenAI対応追加
### 実施内容
1. **HTTPモード実装**
- `src/http-server.ts` 新規作成
- Express + SSE (Server-Sent Events) 実装
- CORS対応
- APIキー認証(オプション)
2. **マルチモード対応**
- `src/index-multimode.ts` 新規作成
- 環境変数によるモード切替(stdio/http)
- 両モードで同じMCPサーバーコアを使用
3. **エンドポイント実装**
- `GET /health` - ヘルスチェック
- `GET /info` - サーバー情報
- `GET /sse` - SSE接続(MCP通信)
- `POST /message` - メッセージ送信
4. **依存関係追加**
- `express` - HTTPサーバー
- `cors` - CORS対応
- `@types/express`, `@types/cors` - 型定義
5. **ドキュメント整備**
- `NGROK.md` - ngrok設定ガイド
- `OPENAI.md` - OpenAI統合ガイド
- `QUICKSTART.md` - クイックスタート
- `.env.example` - 環境設定例
6. **スクリプト追加**
- `start-http.sh` - HTTPモード起動
- `test-http.sh` - HTTPモードテスト
- `quick-test.sh` - 統合テスト
7. **package.json更新**
- `dev:http` - HTTPモード開発
- `start:http` - HTTPモード本番起動
- `start:http:auth` - 認証付きHTTPモード
### 新機能
#### STDIOモード(従来通り)
- Claude Desktop統合
- 標準入出力ベースの通信
- ローカル専用
#### HTTPモード(新規)
- OpenAI統合可能
- ngrok経由で外部公開可能
- SSE (Server-Sent Events) 使用
- APIキー認証対応
- CORS対応
- 複数クライアント対応
### 環境変数
| 変数 | 説明 | デフォルト |
|------|------|-----------|
| `MCP_MODE` | モード選択 | `stdio` |
| `MCP_HTTP_PORT` | HTTPポート | `3000` |
| `MCP_HTTP_HOST` | HTTPホスト | `0.0.0.0` |
| `MCP_API_KEY` | APIキー | なし(認証無効) |
| `LOG_LEVEL` | ログレベル | `info` |
### セキュリティ強化
1. APIキー認証(オプション)
2. CORS設定
3. 認証失敗ログ記録
4. IP情報ログ記録
### 使用例
```bash
# STDIOモード(Claude Desktop)
npm start
# HTTPモード(認証なし・開発用)
MCP_MODE=http npm run dev:http
# HTTPモード(認証あり・本番)
MCP_MODE=http MCP_API_KEY=secret npm start:http
# ngrok公開
ngrok http 3000
```
### OpenAI統合
OpenAIのFunction Callingと統合可能:
1. HTTPモードでサーバー起動
2. ngrokで外部公開
3. OpenAI APIからHTTPエンドポイント経由でアクセス
詳細は `OPENAI.md` を参照
### 次のステップ
- [ ] WebSocket対応検討
- [ ] レート制限実装
- [ ] メトリクス収集
- [ ] ヘルスチェックの拡充
- [ ] Docker化
---
## 2025-11-03: プロジェクト再構築
### 実施内容
1. **モジュール分割**
- `mcp_server_implementation.ts` を以下に分割:
- `src/logger.ts` - ロギング機能
- `src/storage.ts` - ファイルストレージ機能
- `src/index.ts` - MCPサーバーメイン実装
2. **MCP SDK更新対応**
- SDK v1.18.1の新しいAPIに対応
- `McpServer` から `Server` クラスへ移行
- `registerResource/registerTool` から `setRequestHandler` へ移行
- リクエストスキーマベースのハンドラー実装
3. **依存関係の最適化**
- `zod` を削除(MCP SDKの型システムを直接使用)
- より軽量な構成に変更
4. **プロジェクト構造の改善**
- `.gitignore` 追加
- `README.md` 更新
- `test.sh` テストスクリプト追加
- `claude_desktop_config.example.json` 設定例追加
### APIの変更点
#### 旧API(非推奨)
```typescript
server.registerResource(name, schema, handler)
server.registerTool(name, schema, handler)
```
#### 新API
```typescript
server.setRequestHandler(ListResourcesRequestSchema, handler)
server.setRequestHandler(ReadResourceRequestSchema, handler)
server.setRequestHandler(ListToolsRequestSchema, handler)
server.setRequestHandler(CallToolRequestSchema, handler)
```
### ビルド結果
- ✅ TypeScriptコンパイル成功
- ✅ エラーなし
- ✅ 型安全性維持