Skip to main content
Glama
tarakomasu

Japanese Character Counter MCP Server

by tarakomasu

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

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

機能

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

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

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

Related MCP server: MCP Character Tools

技術スタック

  • 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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides 14+ character-level text analysis tools that give LLMs the ability to accurately count letters, analyze individual characters, and work with text at the character level—overcoming tokenization limitations.
    14
    5 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides tools for AI models to count characters and words in text, supporting English and other space-delimited languages.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Accurately counts characters, bytes, and manuscript paper based on Unicode grapheme clusters, and provides deterministic feedback to help AI meet exact length limits for self-introductions or school records.
    -