mcpField
E
Etincel

Etincel

認証済みおすすめリモート
etincel.ai生産性911 週間前に更新
リポジトリ公式サイト

Etincel について

Étincel は、ノンフィクション向けのローカル文章監査・スタイルツールです。CLI、GitHub Action、MCP サーバーとして利用でき、文章を書き換えずに機械的に見えるパターンを指摘し、執筆サンプルから文体を学習できます。

主な機能

  1. 01文章パターンの位置と重大度を表示
  2. 02文体区分に応じたルールで監査
  3. 03個人の文体を学習して再利用
  4. 04CLI と GitHub Action に対応
  5. 05リポジトリ単位の共有設定

活用シーン

  1. 01CI でドキュメントや README を検査
  2. 02マーケティング文の機械的な特徴を確認
  3. 03執筆サンプルに基づいて文章を作成
  4. 04チームリポジトリで執筆規則を共有

MCP 対応

ローカル MCP サーバーは文章監査とスタイル関連のツールをクライアントに公開します。ホスト型サービスでは同じツールを Streamable HTTP 経由で利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://etincel.ai/api/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmetincel0.10.1

ツール

20

このツールにパラメーターはありません。

詳細

Étincel:ノンフィクション執筆コネクター

      ___           ___                       ___           ___           ___           ___
     /\  \         /\  \          ___        /\__\         /\  \         /\  \         /\__\
    /::\  \        \:\  \        /\  \      /::|  |       /::\  \       /::\  \       /:/  /
   /:/\:\  \        \:\  \       \:\  \    /:|:|  |      /:/\:\  \     /:/\:\  \     /:/  /
  /::\~\:\  \       /::\  \      /::\__\  /:/|:|  |__   /:/  \:\  \   /::\~\:\  \   /:/  /
 /:/\:\ \:\__\     /:/\:\__\  __/:/\/__/ /:/ |:| /\__\ /:/__/ \:\__\ /:/\:\ \:\__\ /:/__/
 \:\~\:\ \/__/    /:/  \/__/ /\/:/  /    \/__|:|/:/  / \:\  \  \/__/ \:\~\:\ \/__/ \:\  \
  \:\ \:\__\     /:/  /      \::/__/         |:/:/  /   \:\  \        \:\ \:\__\    \:\  \
   \:\ \/__/     \/__/        \:\__\         |::/  /     \:\  \        \:\ \/__/     \:\  \
    \:\__\                     \/__/         /:/  /       \:\__\        \:\__\        \:\__\
     \/__/                                   \/__/         \/__/         \/__/         \/__/

文章に潜むAIらしさを見つけます。決定論的に、ローカルで、CI上で。

npx etincel lint README.md

インストール不要、アカウント不要、モデル呼び出し不要、ネットワーク不要です。

$ npx etincel lint drafts/announcement.md --register blog
✗ drafts/announcement.md  RED 100/100  (8 findings, 169 words, register: blog)
  Heavy AI styling. Multiple strong tells stacking up, worth a structural
  rewrite, not a word-swap pass.

  Whole-piece rhythm
    medium  uniform-paragraph-length
            6 paragraphs, most running about the same length with little
            variation between them. Vary paragraph length more.
    medium  low-burstiness
            13 sentences averaging 13 words, with little variation in length
            from one sentence to the next. Mix short sentences with long;
            allow fragments.
    medium  mechanical-register-drift
            Fragment rate and structural variety (sentence openers,
            punctuation mix) sit off where blog prose typically lands. Allow
            more sentence fragments and vary openers/punctuation more.

  Vocabulary and phrasing
    high    comprehensive  L3:C30   → thorough, complete
    high    cutting-edge   L3:C109  → newest, latest
    high    leverage       L3:C99   → use
    high    seamless       L3:C150  → smooth, easy
    high    streamline     L3:C70   → simplify, speed up

  strengths  specificity 11.4/1k · concrete:abstract 0.40 · burstiness 0.32

1 file audited, 1 at or above orange.

Étincelには2つの機能があります。文章を機械が書いたように感じさせるパターンを見つける決定論的な監査です。CLI、GitHub Action、MCP ツールとして利用できます。もう1つは文体レイヤーです。あなた自身の文章から測定した文体で下書きを作成できるように、Claude、Cursor、または任意の MCP クライアントをトレーニングします。これにより、下書きを読む前の段階で問題を減らせます。

AIが下書きした文章には、均一な段落、断定を避ける言い回し、コンマで十分な箇所に使われるダッシュ、整いすぎた締めくくりなど、認識しやすい特徴があります。Étincelは、そうした特徴を避けるルールを組み込み、さらに重要なこととして、あなたの文体をひそかに上書きするのではなく、何を見つけたか、その理由は何かを示します。監査の過程でモデルを呼び出すことは一切ありません。変更内容を決めるのはあなたです。著者はあなたです。

効果はありますか?

効果を主張するのではなく、測定しています。ラベル付きコーパスを対象に、固定のブートストラップシードを使ってassayで測定したレジスターごとのプールAUCです。そのため、これらの数値を下げるPRはCIで失敗します。

レジスターAUC
メモ0.909
エッセイ0.900
ブログ0.820
一般0.748
ドキュメント0.735
メール0.540

メールはコイントスに近い精度です。意図的にキャリブレーションしていませんが、意図せぬ性能低下を見逃さないよう、引き続き追跡しています。generalもキャリブレーションしていません。キャリブレーション済みのレジスターはdocs、blog、memo、essayです。数値を重視する場合は、これらをお使いください。手法と由来については、efficacy-baselines.jsonとsrc/data/SOURCES.mdをご覧ください。

比較

Vale + vale-ai-tellsとの比較 Valeはマークアップを認識する優れたリンターで、vale-ai-tellsは78個のルールを備えた本格的なパッケージです。どちらもトークンをパターンと照合します。Étincelは文章の特徴を測定します。文のリズムのばらつき、段落の長さの均一性、あなた自身の過去の下書きとの反復など、トークン照合では対応できず、分析が必要だとvale-ai-tells自身のREADMEにも記されている統計的な層を調べます。またÉtincelは、下書きを作成する前に学習済みの文体をモデルに与えます。これを行うリンターはありません。両方を使うのも妥当です。想像するほど機能は重複していません。

スキルファイル(stop-slop、avoid-ai-writing、no-slop)との比較 これらはモデルへの指示であり、役に立ちます。しかし、プロンプトでは効果を検証できず、終了コードも出せず、マージをブロックすることもできません。いずれかを使い、さらにCIでこれも実行してください。

ヒューマナイザー(Undetectable.ai、QuillBot、StealthWriter)との比較 これらは検出を逃れるためにテキストを書き換えます。Turnitinには現在、AIによる言い換えを検出する専用機能があり、2025年にはヒューマナイザーの出力を特に対象とするよう拡張されました。Étincelの役割はその逆です。テキストを変更することはなく、誰かを欺く目的には向いていません。

検出ツール(GPTZero、Pangram、Originality.ai、Copyleaks)との比較 これらは文書全体を対象に、クラウド上で、著者に関する判定として、確率を使って「機械が関与したか」と答えます。Étincelはローカルで、重大度と箇所を示しながら「機械が書いたように感じさせる具体的なパターンは何か」と答えます。誰が書いたかを判定することはありません。

インストール

公式MCPレジストリにもai.etincel/etincel-nonfictionとして掲載されています。VS Codeの@mcpギャラリーなど、レジストリからMCPサーバーを自動検出するMCP対応クライアントなら、以下の設定をしなくても見つけられます。

Claude Code
/plugin marketplace add AIStoryHub/etincel
/plugin install etincel-nonfiction

ローカルのクローンから追加する場合は、/plugin marketplace add /path/to/etincelを実行してください。

Claude Desktop/その他のMCPホスト
{
  "mcpServers": {
    "etincel-nonfiction": {
      "command": "npx",
      "args": ["etincel", "serve"]
    }
  }
}

ローカルのクローンから利用する場合は、npm install && npm run buildを実行し、argsを["/path/to/etincel/dist/server.js"]に、"command"を"node"に設定してください。

リモート(ホスト型、マルチテナント)

ホスト型のバージョンも etincel.ai で利用できます。stdio の代わりにアカウントごとの認証を使用し、Streamable HTTP(https://etincel.ai/api/mcp)経由で同じツールを提供します。任意の MCP クライアントから直接接続できます。

{
  "mcpServers": {
    "etincel-nonfiction": {
      "url": "https://etincel.ai/api/mcp"
    }
  }
}

ホスト型サーバーはこのリポジトリには含まれていません。このリポジトリは、ホスト型バージョンの基盤となるローカル/stdio エンジン、CLI、スキルです。

使用方法

インストールしたら、Claude Code または Claude Desktop 内で「遅延についてチームにメールを書く」「X についてブログ記事を書く」「このメモを整える」など、普段依頼するようなことを頼むだけです。このスキルは、ある程度の長さのノンフィクション文章で自動的に有効になります。独自の文体を学習させるには、次のようにします。

私が書いた次の3通のメールから、「me」という文体を学習してください:[サンプルを貼り付け]

その後、リクエストごとに名前を指定する(「私の文体で書いて」)か、デフォルトとして設定します。

デフォルトの文体を「me」に設定してください

文体プリセット

すぐに使えるプリセットが12種類用意されています。感情的なトーンが6種類(率直で温かみのある文体、エグゼクティブ向け概要、内省的なエッセイスト、創業者メモ、平易な分析、辛口で率直な文体)、用途別のプリセットが6種類(PR レビュー、コードコメント、Slack メッセージ、LinkedIn 投稿、ウェブサイトのコピー、ブログ記事)です。それぞれに、フォーマルさ/温かみ/率直さの調整値に加え、文のリズムや文体の説明が含まれます。これらは空欄を埋めるテンプレートではなく、下書き作成時のコンテキストとしてモデルに渡されます。サーバーはこれらを src/data/presets.json から読み込みます。fork_style を使って任意のプリセットを学習済みの文体に複製し、自分用にカスタマイズできます。

コマンドラインのリント

audit_text は内部的には純粋関数なので、チャットクライアント外の文章(README、ドキュメント、CI での PR の説明など)をリントできる CLI としても提供されています。

npx etincel lint 'docs/**/*.md'
npx etincel lint README.md --register docs --threshold yellow

一致したファイルのいずれかのティアが --threshold(デフォルトは orange)以上の場合、ゼロ以外の終了コードで終了します。.md/.mdx ファイルでは、デフォルトで自動的に docs レジスターが適用されます(実際の見出しはチャットボットらしさの兆候ではないため、Markdown の構造に関する誤検出を抑制します)。上書きするには --register を渡してください。機械可読なレポートを出力するには --json を追加します。すべてのオプションについては npx etincel lint --help を実行してください。

同じ CLI をラップする GitHub Action も用意されています(action.yml と、このリポジトリの動作例 .github/workflows/lint.yml を参照してください)。

- uses: AIStoryHub/etincel@main
  with:
    patterns: "docs/**/*.md README.md"
    threshold: orange
リポジトリローカルの設定:辞書、指示、チーム共有の文体

チームのルールは、各メンバーのローカルな ~/.etincel/ だけに置く必要はありません。リポジトリのルートに .etincelrc(または .etincelrc.json/etincel.config.json)を置くと、CLI とローカル(stdio)サーバーによって自動的に読み込まれます。コードレビューで確認でき、バージョン管理もできます。誰かがチームを離れたときに、見えないまま消えてしまうこともありません。

{
  "bannedWords": ["Acme Cloud Platform"],
  "allowedWords": ["leverage"],
  "register": "docs",
  "threshold": "orange",
  "instructions": "Always include a one-line CTA at the end.",
  "style": {
    "name": "House Voice",
    "dials": {
      "formality": 6,
      "warmth": 4,
      "directness": 7,
      "sentenceLength": 40,
      "sentenceRhythmVariance": 50,
      "paragraphVariance": 30,
      "contractionUse": 20,
      "emDashUse": 0,
      "fragmentTolerance": 10,
      "questionUse": 5,
      "entropy": 60
    }
  }
}
  • bannedWords/allowedWords は、アカウント/文体の辞書にある内容と統合されます。register/threshold はリポジトリ全体のデフォルトとして機能し、明示的な --register/--threshold フラグがあればそちらが優先されます。
  • instructions は自由記述で、チーム用の文体だけでなく、すべての文体に対する get_style_guide の instructions に統合されます。アカウントレベルのグローバルな指示よりも優先されます。これは styleId を指定しない set_style_instructions に相当するチーム全体向けの設定ですが、個人のアカウントではなくリポジトリにコミットされます。
  • style は、調整値に基づいて共有の「ハウススタイル」を定義します。styleId: "team" としてどこからでも指定できます(get_style_guide で利用でき、fork_style で実際の学習済み文体に複製すれば、ほかの機能でも利用できます)。これにより、全員が一から文体を学習させたり調整したりするのではなく、チーム全員が初日から調整済みの共通の文体を出発点として使えます。現在のリポジトリの .etincelrc で定義されている場合、list_styles に自動的に含まれます。

ホスト型サーバーでは、ローカルリポジトリを参照できないため、これらの設定は使用されません。

コミットせずにチームで設定を共有する

.etincelrc は上位のバージョン管理され、コードレビュー可能なレイヤーです。その下のレイヤーは ETINCEL_HOME で、ローカルの(stdio)サーバーと CLI が、デフォルトの ~/.etincel/ の代わりに使用するディレクトリを指定する環境変数です。チームメンバー全員の ETINCEL_HOME を同じ共有・同期・マウントされたディレクトリ(各自のマシンから読み取れるリポジトリ外のパス。たとえば、普段使っているファイル共有の仕組みで同期されるディレクトリ)に設定すると、.etincelrc にコミットした内容だけでなく、トレーニング済みの音声、デフォルトのスタイル、アカウントレベルの指示や辞書も共有されます。

{
  "mcpServers": {
    "etincel-nonfiction": {
      "command": "node",
      "args": ["/path/to/etincel/dist/server.js"],
      "env": { "ETINCEL_HOME": "/path/to/shared/etincel-home" }
    }
  }
}

エクスポートやインポートは不要です。ETINCEL_HOME を同じディレクトリに設定することが、そのまま同期になります。これは、1 人で ~/.etincel/ を使う場合と同じです。

この中にあるもの

  • MCP サーバー(src/server.ts):20 個のツールを提供します。
    • list_styles:事前定義されたトーンのプリセット、トレーニングしたすべての声、そして(リポジトリ内の .etincelrc で定義されている場合は)チームで共有するスタイルを一覧表示します
    • get_style_guide:指定したスタイルの文章作成ガイドを取得します
    • train_style:自分の文章サンプルから声の特徴を学習します(文のリズム、短縮形の割合、em ダッシュの使い方、段落のばらつき、繰り返し使われる表現を推測ではなく計測します)
    • create_style_from_dials:サンプルを使わず、形式ばり具合・温かみ・率直さ、および機械的な調整項目を明示してスタイルを作成します
    • update_style:トレーニング済みの声の名前を変更するか、調整項目をその場で変更します
    • fork_style:プリセットの調整項目とガイドをコピーして、新しいトレーニング済みの声を作成します。新しい声は再トレーニングや手動調整が可能です。また、他のインストーラーがホスト型ギャラリーで公開したスタイルもフォークできます(handle/slug で指定します。例:jpleblanc/blunt-memo。公開ページ etincel.ai/v/handle/slug に表示されるものと同じアドレスです)。公開スタイルをフォークすると、その機械的な調整項目に加え、元のインストーラーがそのスタイル専用に設定した辞書や指示も引き継がれます(アカウント全体に適用される非公開の設定は引き継がれません)。スタイルの取得には etincel.ai へのネットワーク呼び出しが 1 回発生しますが、プリセットのフォークではこのインストール環境から外部にアクセスしません
    • delete_style:トレーニング済みの声を完全に削除します
    • set_default_style:毎回指定しなくても使えるよう、スタイルを記憶します
    • check_voice_match:文章のリズムを計測し、トレーニング済みの声の基準と比較します。リズムや文体上の特徴を確認するもので、著者の特定や AI 検出を行うものではありません。入力が短い場合は信頼度が低くなります
    • check_self_repetition:文章を、AI らしさではなく、ある声の最近のトレーニングサンプルと比較して癖を確認します。同じ書き出しや表現が過去の複数の文章で繰り返されていないかを調べます(「直近 6 本のうち 4 本でこの書き出しを使っています」など)。現時点ではローカルインストールのみです
    • audit_text:AI らしさを示す特徴を、ルールに基づいて決定論的にスキャンします。文章を平板にしないよう、段階評価、重大度付きの具体的な検出結果、および文章の強みを示すシグナル(具体性、具体表現と抽象表現の比率、文のリズムの変化)を返します。任意の register(email / blog / memo / essay / social / docs / general / personal、既定値は general)を指定すると、文章の種類に応じて厳しさを調整できます。docs は Markdown 構造に起因する誤検出(見出し、太字の用語など)を抑え、リズムや語彙の検出基準を、短く歯切れのよい文章ではなく長文の参考文に合わせて調整します。personal は枠組みのみ実装されています(指定は受け付けますが、現時点では追加の抑制はありません)。用語の抑制、リズムの重み付け、独自のラベル付きコーパスは、計測が完了するまで利用できません。また、任意の sourceFacts(ユーザーから聞き取った詳細で、生成されたものではありません)も指定できます。これらが実際にどれだけ文章に盛り込まれたかを確認し、使用された情報が 2 つ未満の場合、および資格を証明するためだけの文以外に少なくとも 1 つ含まれていない場合に、elicited-material-unused を通知します
    • second_read:1 回のモデル呼び出しで文章を読み、注意深い人間の編集者が気づく点を報告します。採点や段階評価は行わず、書き直しもしません。ホスト型のみです。このインストール環境では、アカウント、固定されたモデル、課金機能が必要ですが、いずれも備えていないため、わかりやすい説明を添えて常に失敗します。audit_text は引き続き完全に利用でき、アカウントも不要です
    • add_banned_word / remove_banned_word:独自の禁止語リストを管理します。audit_text は組み込みコーパスとともにこのリストも確認します
    • add_custom_word / remove_custom_word:組織独自の略語や社内用語など、「絶対に指摘しない」語句のリストを管理します
    • list_dictionary:スコープの禁止語やカスタム語を確認します。また、スタイルの場合は、グローバルリストとの統合後に実際に適用される内容も確認できます
    • set_style_instructions / clear_style_instructions / get_style_instructions:スコープに対する自由記述の文章作成ルール(必須要素、禁止トピック、形式上の制約)を保存、削除、または確認します。辞書が audit_text に統合されるのと同じ方法で、get_style_guide に統合されます
  • Claude Code / Claude Desktop のスキル(skills/etincel-nonfiction/):ある程度の長さのノンフィクション文章を作成または修正する際に、これらのツールを使用します。 学習済みの音声、辞書、デフォルトのスタイルはローカルの ~/.etincel/ に保存されます。データが外部に送信されることはありません。audit_text は、文字列分析とAI文章特有の兆候をまとめた厳選コーパスを使う、単純で決定論的なコードであり、モデル呼び出しではありません。唯一の例外は、fork_style で公開スタイルをフォークする場合です。このとき、そのスタイルのガイドを etincel.ai の公開ギャラリーから取得します(送信はしません)。プリセットをフォークする場合や、このリストのその他の操作では、ネットワークに一切アクセスしません。
カスタム辞書

組み込みのAI特有の兆候コーパスに加えて、独自の禁止語リストと「常に許可する」語のリストを管理できます。「[word]を禁止語リストに追加して」や「[word]をカスタム語リストに追加して。うちで使う言葉だから」のように、Claude(または任意のMCPクライアント)に伝えるだけです。各リストはスコープに属します。global(どこでも適用されます。スタイルが指定されていない場合のデフォルトです)か、特定のスタイル ID です。特定のスタイルに対して監査する場合は、そのスタイルのリストが global のリストに追加されます。list_dictionary では、スコープに保存された内容と、スタイルに適用される統合済みリストを確認できます。すべてのスタイルで単語を同期させるには、グローバルリストを編集するのが最適です。audit_text または list_dictionary が実行されるたびに、自動的にリアルタイムで統合されます。

開発

npm install
npm test        # run the engine/tools test suite (node:test via tsx)
npm run dev     # run the MCP server over stdio via tsx, for local testing
npm run build   # compile to dist/

mcpscore audit MCP Registry CircleCI CI Étincel lint License: MIT Node Last commit

mcpscore バッジは、ホストされているリモートサーバー(etincel.ai/api/mcp)を監査するものであり、このリポジトリにあるローカル/stdio エンジンを監査するものではありません。どちらも同じツールを公開していますが、別々のデプロイとして実行されます。

ステータスと制限事項

まだ初期段階です。その点は率直にお伝えします。

  • src/data/ の監査コーパスは厳選された一部であり、網羅的ではありません。出典と、まだ移植されていない内容については src/data/SOURCES.md をご覧ください。完全なコーパスは aistoryhub.co/corpus にあります。
  • email(AUC 0.540)と general(0.748)は未調整です。social にはラベル付きコーパスがなく、追跡対象でもありません。
  • check_voice_match はリズムと表記上の特徴を確認するもので、著者を特定するものではありません。また、短い入力では信頼度が低くなります。
  • check_self_repetition は、現時点ではローカルインストールでのみ利用できます。
  • AI特有の兆候は常に変化します。OpenAI は2025年11月、ChatGPT の em ダッシュの多用を修正しました。そのため、有効性は主張するのではなく測定しています。ある兆候が兆候ではなくなれば AUC が変化し、回帰チェックで検出されます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。