NodeFlare ドキュメント
MCP専用ホスティングサービス「NodeFlare」の使い方を解説します。
NodeFlareとは?
NodeFlareは、MCP(Model Context Protocol)サーバーを本番環境で運用するための専用ホスティングサービスです。 MCP SDKで書いたコードをpushするだけで即座にデプロイ。アクセス制御、ログ管理、シークレット管理など、 本番運用に必要な機能をすべて備えています。
主な特徴
- ゼロコンフィグ — MCP SDKのコードをそのままpush。設定ファイル不要
- ツール単位のACL — 誰がどのツールを呼べるか細かく制御
- シークレット管理 — 環境変数を暗号化保存。チームで安全に共有
- 常時オンライン — PCを閉じても24時間稼働。ngrok不要
クイックスタート
5分でMCPサーバーをデプロイする手順を説明します。
1. GitHubでサインアップ
NodeFlareはGitHubアカウントでログインします。トップページの「GitHubで始める」をクリックしてください。
2. MCPサーバーのリポジトリを準備
MCP SDKを使用したサーバーコードをGitHubリポジトリに用意します。TypeScriptまたはPythonで記述できます。
TypeScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({
name: "my-server",
version: "1.0.0",
});
// ツールを定義
server.tool("hello", "挨拶を返す", {
name: { type: "string", description: "名前" }
}, async ({ name }) => {
return {
content: [{ type: "text", text: `こんにちは、${name}さん!` }]
};
});
// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);Python
from mcp.server import Server
from mcp.types import TextContent
server = Server("my-server")
@server.tool("hello", description="挨拶を返す")
async def hello(name: str) -> list[TextContent]:
return [TextContent(type="text", text=f"こんにちは、{name}さん!")]
if __name__ == "__main__":
server.run()3. 依存関係の設定
TypeScript: package.json
{
"name": "my-mcp-server",
"version": "1.0.0",
"type": "module",
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"start": "node dist/server.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.0.0"
},
"devDependencies": {
"typescript": "^5.0.0"
}
}Python: requirements.txt
mcp>=1.0.04. NodeFlareでデプロイ
ダッシュボードで「新規サーバー」をクリックし、GitHubリポジトリを選択します。 リポジトリを選択すると、自動的にビルド・デプロイが開始されます。
デプロイが完了すると、MCPサーバーのエンドポイントURLが発行されます。
サーバーの作成
対応言語・ランタイム
| 言語 | ステータス | SDK / 検出ファイル |
|---|---|---|
| TypeScript / JavaScript | 対応済み | @modelcontextprotocol/sdk |
| Python | 対応済み | mcp (requirements.txt / pyproject.toml) |
| Go | 対応済み | go.mod |
| Rust | 対応済み | Cargo.toml |
| Docker | 対応済み | Dockerfile |
リポジトリの要件
package.jsonにMCP SDKが依存関係として含まれていることbuildスクリプトとstartスクリプトが定義されていること- エントリーポイントが
mainフィールドで指定されていること
サーバー設定
| 項目 | 説明 | 必須 |
|---|---|---|
| サーバー名 | 識別用の名前(ダッシュボードに表示) | 必須 |
| スラッグ | URLに使用される識別子(英小文字・ハイフンのみ) | 必須 |
| GitHubリポジトリ | owner/repo 形式 | 必須 |
| ブランチ | デプロイ対象のブランチ(デフォルト: main) | 任意 |
デプロイ
自動デプロイ
指定したブランチにpushすると、自動的にビルド・デプロイが実行されます。 GitHub Webhookにより、コードの変更を検知して即座にデプロイを開始します。
ビルドプロセス
- リポジトリのクローン
npm installで依存関係をインストールnpm run buildでビルド- コンテナイメージの作成
- デプロイ・起動
デプロイステータス
| 保留中 | デプロイがキューに入っている状態 |
| ビルド中 | npm install, npm run build を実行中 |
| デプロイ中 | コンテナを起動中 |
| 稼働中 | サーバーが正常に動作している |
ビルドが失敗した場合
ダッシュボードのログタブでビルドログを確認できます。よくある原因:
- 依存関係のインストールエラー
- TypeScriptの型エラー
- エントリーポイントの指定ミス
マルチリージョン
MCPサーバーを複数のリージョンにデプロイすることで、グローバルなユーザーに低レイテンシーでサービスを提供できます。
利用可能なリージョン
| リージョン | コード | 場所 |
|---|---|---|
| 東京 | nrt | 日本 |
| シンガポール | sin | シンガポール |
| US East | iad | バージニア、USA |
| US West | sjc | サンノゼ、USA |
| ヨーロッパ | ams | アムステルダム、オランダ |
リージョンの追加
- ダッシュボードでサーバーを選択
- 「リージョン」タブを開く
- 追加したいリージョンを選択
- 確認後、自動的にデプロイが開始されます
料金
追加リージョンはプランに応じて料金が発生します。詳細は料金プランをご確認ください。 Proプラン以上で追加リージョンが利用可能です。
環境変数・シークレット
APIキーやデータベース接続情報などの機密情報は、シークレットとして暗号化して保存できます。
シークレットの追加
- ダッシュボードでサーバーを選択
- 「シークレット」タブを開く
- 「シークレットを追加」をクリック
- キー名と値を入力して保存
サーバーコードでの使用
// 環境変数として自動的に注入されます
const notionApiKey = process.env.NOTION_API_KEY;
const databaseUrl = process.env.DATABASE_URL;
// APIクライアントの初期化
const notion = new Client({ auth: notionApiKey });セキュリティに関する注意
- シークレットはAES-256で暗号化して保存されます
- 一度保存したシークレットの値は表示されません(上書きのみ可能)
- コード内にAPIキーをハードコードしないでください
アクセス制御
MCPサーバーへのアクセスをAPIキーで制御できます。ツール単位での権限設定も可能です。
APIキーの発行
- ダッシュボードの「API Keys」を開く
- 「新規APIキー」をクリック
- キー名を入力して作成
- 表示されたAPIキーを安全な場所に保存(一度しか表示されません)
認証方法
MCPクライアントからの接続時に、APIキーをヘッダーに含めます。
Authorization: Bearer your-api-key-hereチーム管理
ワークスペースにチームメンバーを招待して、サーバーを共同で管理できます。
ロール(役割)
| ロール | 権限 |
|---|---|
| オーナー | 全ての操作が可能。ワークスペースの削除、所有権の移譲が可能 |
| 管理者 | サーバーとメンバーの管理が可能。ワークスペースの削除は不可 |
| メンバー | サーバーの作成と編集が可能 |
| 閲覧者 | サーバーの閲覧のみ。編集・作成は不可 |
メンバーの招待
- ダッシュボードの「チーム」ページを開く
- 「メンバーを追加」をクリック
- 招待するユーザーのメールアドレスを入力
- ロールを選択して招待を送信
メンバー数の制限
プランによってワークスペースに追加できるメンバー数が異なります。 詳細は料金プランをご確認ください。
ログ・監視
ログの種類
| ログ種別 | 内容 |
|---|---|
| ビルドログ | npm install, npm run build の出力 |
| ランタイムログ | console.log, console.error の出力 |
| リクエストログ | MCPリクエストのメソッド、パラメータ、レスポンス時間 |
メトリクス
- リクエスト数(時間別・日別)
- 平均レスポンス時間
- エラー率
- 稼働率(Uptime)
AIクライアントとの接続
デプロイしたMCPサーバーを各種AIクライアントから利用する方法を説明します。
Claude Desktop
Claude Desktopの設定ファイルにMCPサーバーを追加します。
{
"mcpServers": {
"my-server": {
"url": "https://your-server.nodeflare.dev/mcp",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}Cursor
Cursorの設定でMCPサーバーのURLを追加します。
{
"servers": {
"my-server": {
"url": "https://your-server.nodeflare.dev/mcp",
"apiKey": "your-api-key"
}
}
}エンドポイントURL
サーバーのエンドポイントURLは、ダッシュボードのサーバー詳細ページで確認できます。
形式: https://[slug].nodeflare.dev/mcp
料金プラン
用途に応じた柔軟なプランをご用意しています。
プラン比較
| 機能 | Free | Pro | Team | Enterprise |
|---|---|---|---|---|
| サーバー数 | 1 | 5 | 20 | 無制限 |
| チームメンバー | 1 | 3 | 10 | 無制限 |
| リクエスト/月 | 1,000 | 50,000 | 500,000 | 無制限 |
| 追加リージョン | - | 2 | 5 | 無制限 |
| ログ保持期間 | 1日 | 7日 | 30日 | 90日 |
| カスタムドメイン | - | - | 対応 | 対応 |
| 優先サポート | - | - | 対応 | 対応 |
プランの変更
ダッシュボードの「課金」ページからいつでもプランを変更できます。 アップグレードは即座に反映され、ダウングレードは次回請求サイクルから適用されます。
支払い方法
クレジットカード(Visa、Mastercard、American Express、JCB)に対応しています。 請求は月次または年次で選択可能です。年払いの場合は2ヶ月分お得になります。
APIリファレンス
NodeFlareの管理APIを使用して、プログラムからサーバーを管理できます。 APIキーによる認証が必要です。
ベースURL
https://api.nodeflare.dev/api/v1認証
すべてのAPIリクエストには認証が必要です。Cookieベースのセッション認証、 またはAPIキーによるBearer認証が利用可能です。
Authorization: Bearer your-api-key主要エンドポイント
ワークスペース
| メソッド | パス | 説明 |
|---|---|---|
| GET | /workspaces | ワークスペース一覧 |
| POST | /workspaces | ワークスペース作成 |
サーバー
| メソッド | パス | 説明 |
|---|---|---|
| GET | /workspaces/:ws_id/servers | サーバー一覧 |
| POST | /workspaces/:ws_id/servers | サーバー作成 |
| GET | /workspaces/:ws_id/servers/:id | サーバー詳細 |
| PATCH | /workspaces/:ws_id/servers/:id | サーバー更新 |
| DELETE | /workspaces/:ws_id/servers/:id | サーバー削除 |
| POST | /workspaces/:ws_id/servers/:id/deploy | デプロイ実行 |
| POST | /workspaces/:ws_id/servers/:id/stop | サーバー停止 |
| POST | /workspaces/:ws_id/servers/:id/restart | サーバー再起動 |
シークレット・ログ
| メソッド | パス | 説明 |
|---|---|---|
| GET | /workspaces/:ws_id/servers/:id/secrets | シークレット一覧 |
| POST | /workspaces/:ws_id/servers/:id/secrets | シークレット設定 |
| GET | /workspaces/:ws_id/servers/:id/logs | リクエストログ |
| GET | /workspaces/:ws_id/servers/:id/stats | 統計情報 |
チームメンバー
| メソッド | パス | 説明 |
|---|---|---|
| GET | /workspaces/:ws_id/members | メンバー一覧 |
| POST | /workspaces/:ws_id/members | メンバー追加 |
| PATCH | /workspaces/:ws_id/members/:user_id | ロール変更 |
| DELETE | /workspaces/:ws_id/members/:user_id | メンバー削除 |
トラブルシューティング
ビルドが失敗する
package.jsonにbuildスクリプトがあるか確認- TypeScriptの型エラーがないか確認(ローカルで
npm run buildを実行) - 依存関係のバージョンが正しいか確認
デプロイ後にサーバーが起動しない
mainフィールドがビルド後のエントリーポイントを指しているか確認- ランタイムログでエラーを確認
- 必要な環境変数がシークレットに設定されているか確認
AIクライアントから接続できない
- エンドポイントURLが正しいか確認
- APIキーが正しく設定されているか確認
- サーバーが「稼働中」ステータスか確認
上記で解決しない場合は、お気軽にお問い合わせください。
お問い合わせ →