Dev ContainerにfeaturesでNode.jsを追加してMCPサーバを動かす

はじめに

Dev Container上でブログを書いており、textlintという文章校正ツールを使用したいと思っていた。
MCPサーバーとして使用できるとのことなので、Dev Container上で動かすことを試してみる。
Node.jsが入っていない環境から、featuresを使って環境構築し、textlintのMCPサーバーを動かしてみる。

環境

Windows 11 Professional
WSL2 Ubuntu 24.04 LTS
Dev Container
GitHub Copilot

Dev Container設定

Node.jsの追加

.devcontainer/devcontainer.jsonにNode.js featuresを追加する。

devcontainer.json
{
  "name": "Hugo blog",
+ "features": {
+   "ghcr.io/devcontainers/features/node:1": {
+     "version": "24"
+   }
+ }
  ...
}

コンテナを再ビルドして環境を確認する。

# Dev Container: Rebuild Container を実行後
node --version
npm --version

textlint + textlintルールのインストール

Dev Containerのターミナル上で下記コマンドを実行する。

npm install --save-dev textlint textlint-rule-preset-ja-technical-writing @textlint-ja/textlint-rule-preset-ai-writing

今回インストールしたパッケージの一覧

パッケージ名用途
textlint文章校正エンジン本体
textlint-rule-preset-ja-technical-writing技術文書向け日本語校正ルール
@textlint-ja/textlint-rule-preset-ai-writingAI文章生成向け校正ルール

.textlintrc.json を作成する。

npx textlint --init

以下が生成された。

.textlintrc.json
{
  "plugins": {},
  "filters": {},
  "rules": {
    "@textlint-ja/preset-ai-writing": true,
    "preset-ja-technical-writing": true
  }
}

試してみる。

npx textlint README.md

※特に出力なし。

別のファイルでも試してみる。

npx textlint content/post/tech/ai/ai-kiritan-play.md 
vscode ➜ /workspaces/blog-hugo (master) $ npx textlint content/post/tech/ai/ai-kiritan-play.md 

/workspaces/blog-hugo/content/post/tech/ai/ai-kiritan-play.md
  27:1   error  Line 27 sentence length(105) exceeds the maximum sentence length of 100.
Over 5 characters      ja-technical-writing/sentence-length
  33:15  error  箇条書き: "である"調 でなければなりません
=> "である"調 であるべき箇所に、次の "ですます"調 の箇所があります: "ます。"
Total:
である  : 0
ですます: 2
  ja-technical-writing/no-mix-dearu-desumasu
  34:42  error  箇条書き: "である"調 でなければなりません
=> "である"調 であるべき箇所に、次の "ですます"調 の箇所があります: "ます。"
Total:
である  : 0
ですます: 2
  ja-technical-writing/no-mix-dearu-desumasu
  46:8   error  文末が"。"で終わっていません。                                                ja-technical-writing/ja-no-mixed-period

4 problems (4 errors, 0 warnings, 0 infos)

指摘が4つきた!
ありがたい。
ということでインストール+ルールの設定まで完了したのでMCPサーバ設定をする。

MCPサーバ設定

textlint MCPサーバを追加する

.vscode/mcp.json に 以下を追加する。

{
  "servers": {
    "textlint": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "textlint",
        "--mcp"
      ]
    }
  },
  "inputs": []
}

MCPサーバの起動

mcp.jsonを開いて起動をする。

mcp-server-01

textlint MCPを使ってみる

初期設定

VSCode Copilot を開き、Agentモードで、ツールマークを選択する。 mcp-server-02

textlintをチェックして選択する。 mcp-server-03

文章を校正する

プロンプト

content/post/game/valorant/以下のファイルについて、textlint MCPを使って問題を指摘し修正してください。

結果

mcp-server-04

できた!
これからは公開前にこれでチェックしよう…!

参考

おわりに

Dev Containerfeaturesを使うことで、DockerfileNodeインストールするということを行わずに、Node.js環境を構築でき、MCPサーバーを利用できた。
textlintMCPサーバを使用することで、文章校正機能をCopilotからも利用できるのでめっちゃ便利…!

Hugo で構築されています。
テーマ StackJimmy によって設計されています。