Skip to main content
Glama

Japanese Character Counter MCP Server

by tarakomasu

日本語文字数カウント MCP サーバー

Web版ChatGPTの「新しいコネクター」から接続できるMCPサーバーです。日本語テキストの文字数(グラフェム単位)を正確にカウントするツール countJapaneseChars を提供します。

機能

  • countJapaneseChars: 日本語テキストの文字数(グラフェム単位)を正確にカウント

    • Intl.Segmenter を使用してグラフェムクラスターを正確にカウント

    • サロゲートペアや結合文字を適切に処理

技術スタック

  • Next.js 16 (App Router)

  • TypeScript

  • @modelcontextprotocol/sdk

  • Intl.Segmenter (グラフェムカウント用)

セットアップ

依存関係のインストール

npm install

開発サーバーの起動

npm run dev

開発サーバーは http://localhost:3000 で起動します。

MCPサーバーのエンドポイントは http://localhost:3000/api/mcp です。

使用方法

Web版ChatGPTの「新しいコネクター」から接続

  1. ChatGPTの設定で「新しいコネクター」を開く

  2. エンドポイントURLを入力: http://localhost:3000/api/mcp (開発環境) または https://your-domain.com/api/mcp (本番環境)

  3. 接続を確立

APIエンドポイント

  • POST /api/mcp: MCPリクエストを処理

  • GET /api/mcp: SSEストリーム(現在はJSONレスポンスモードを使用)

  • DELETE /api/mcp: セッション終了

  • OPTIONS /api/mcp: CORSプリフライト

ツールの使用例

countJapaneseChars ツールを呼び出すと、以下のようなレスポンスが返されます:

{ "content": [ { "type": "text", "text": "文字数: 9" } ], "structuredContent": { "count": 9, "text": "こんにちは、世界!" } }

デプロイ

Vercelへのデプロイ(推奨)

1. Vercelアカウントの準備

Vercelにサインアップまたはログインします。

2. プロジェクトのデプロイ

# Vercel CLIをインストール(初回のみ) npm install -g vercel # プロジェクトディレクトリでデプロイ vercel # 本番環境へデプロイ vercel --prod

または、GitHubと連携して自動デプロイ:

  1. GitHubにプロジェクトをプッシュ

  2. Vercelダッシュボードで「Import Project」をクリック

  3. GitHubリポジトリを選択

  4. デプロイ設定を確認(デフォルトで問題なし)

  5. 「Deploy」をクリック

3. デプロイ後の確認

デプロイ後、提供されたURLの /api/mcp エンドポイントがMCPサーバーとして機能します。

例: https://your-project.vercel.app/api/mcp

4. Web版ChatGPTとの接続

  1. ChatGPTの設定を開く

  2. 「新しいコネクター」を選択

  3. エンドポイントURLを入力: https://your-project.vercel.app/api/mcp

  4. 接続を確立

その他のデプロイ先

Netlify

# Netlify CLIをインストール npm install -g netlify-cli # デプロイ netlify deploy --prod

Railway

  1. Railwayにサインアップ

  2. 「New Project」→「Deploy from GitHub repo」

  3. ビルドコマンド: npm run build

  4. 開始コマンド: npm start

環境変数

現在、環境変数の設定は不要です。本番環境でセッション管理を改善する場合は、Redisなどの外部ストレージを使用することを推奨します。

Redis統合(オプション)

本番環境で複数インスタンスを使用する場合、Redisでセッション管理を行うことを推奨:

npm install ioredis

app/api/mcp/route.ts でRedisを使用するようにコードを修正してください。

実装の詳細

コード構造(モジュール分割)

app/api/mcp/ ├── route.ts # HTTPエンドポイントハンドラー │ # POST, GET, DELETE, OPTIONSメソッド │ # セッション管理 │ ├── lib/ │ ├── helpers.ts # ヘルパー関数 │ │ # - Next.js ⇔ Node.js 変換 │ │ # - CORS設定 │ │ │ └── mcp-server.ts # MCPサーバーセットアップ │ # - サーバーインスタンス作成 │ # - ツール登録 │ └── tools/ └── countJapaneseChars.ts # 文字数カウントツール # - グラフェムカウント実装 # - ツール設定とハンドラー

各ファイルには超詳細なコメントが付いており、以下を説明:

  • なぜそのコードが必要か

  • どのように動作するか

  • 注意点や代替案

  • 具体的な使用例

主要機能

  • グラフェムカウント: Intl.Segmenter を使用して、人が1文字と捉える単位(グラフェム)を正確にカウント

    • フォールバック機能付き: Intl.Segmenterが利用できない環境でも動作

  • セッション管理: メモリ内でセッションを管理(本番環境ではRedis等の使用を推奨)

  • CORS: Web版ChatGPTからの接続を許可するため、適切なCORSヘッダーを設定

    • Authorizationヘッダーにも対応(将来の認証機能に備える)

プロダクション品質の特徴

  1. ランタイム指定: runtime = "nodejs" でNode.js APIを確実に使用

  2. 堅牢な初期化: isInitializeRequestを検出して無条件で新規セッションを作成

  3. エラーハンドリング: すべてのエンドポイントで適切なエラーレスポンスを返却

  4. ヘルスチェック: GET エンドポイントでセッション状態を確認可能

  5. クリーンなセッション削除: DELETE で不要な処理を行わずシンプルに削除

  6. モジュール分割: 責務ごとにファイルを分割、保守性と可読性を向上

ライセンス

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tarakomasu/mcp-practice'

If you have feedback or need assistance with the MCP directory API, please join our Discord server