Claude Codeでesa MCPを使ってみた
はじめに
こんにちは。株式会社つみき 「Filmarks(フィルマークス)」インフラチームの久松(@karia2nd)です。
つみきでは技術ドキュメントの共有ツールとしてesaを活用しています。つみきの社内esaには開発チーム内のミーティングの議事録、技術的な調査結果やアイデアなど、さまざまなドキュメントが存在します。現在の総記事件数は2000件を突破しており、日々増加しています。
そんなesaの公式から、待望のローカルMCPサーバーが公開されました!MCPサーバーは、ChatGPTやClaudeのような生成AIと外部ツールを接続するための役割を果たします。これにより生成AIで検索やファイル操作などが可能になります。
今回はこのesa ローカルMCPサーバーをClaude Codeに設定して使ってみました。設定方法についての記事を社内esaに書こうと思ったのですが、せっかくなのでZennに公開したいと思います。
設定
Claude CodeへのMCPの追加は、 claude mcp add コマンドで行います。公式ドキュメントによると、このコマンドの構文は以下の通りです。
claude mcp add <name> <command> [args...]
nameには、MCPの名前を指定します。今回はesa MCPを追加するので esa としました。
commandには、MCPの実行コマンドを指定します。esa MCPの場合は npx @esaio/esa-mcp-server となりますが、npxコマンドはフルパスで指定したほうが良いようです。 which npx コマンドでパスを調べてみましょう。
❯ which npx
/home/karia/.local/share/mise/installs/node/22.20.0/bin/npx
私はNode.jsをmise経由でインストールしているためこのようなパスになります。これで先ほどの npx コマンドを置き換えます。
--scope user を付けることでホームディレクトリにある .claude.json に設定が保存され、同じマシン内なら他のプロジェクトでもMCPを利用できるようになります。付けない場合は単一のプロジェクト内でのみ利用可能になります。この辺りは状況に応じて設定すると良いかと思います。
--env オプションでMCPが利用する環境変数を設定できます。これを利用してesaのパーソナルアクセストークン(PAT)を渡します。esa公式のReleaseNotesを確認して発行してください。私はread権限のみを持つPATを発行しました。なおこの方法で環境変数を設定した場合、.claude.json にPATが平文で保存されるため、セキュリティには注意してください。
最終的なコマンドは以下のようになります。
claude mcp add esa \
--scope user \
--env ESA_ACCESS_TOKEN=your_access_token \
-- /home/karia/.local/share/mise/installs/node/22.20.0/bin/npx @esaio/esa-mcp-server
削除するときは claude mcp remove esa で削除できます。
実際に使ってみる
claude コマンドでClaude Codeを起動したあと、 /mcp と入力すれば、esa MCPに接続できていることが確認できます。

あとは実際にClaude Codeから使ってみるだけです。試しに質問してみましょう。
esaでhisamatsuというIDの人物は何件記事を書いている?
すると以下のようにMCPの利用許可を求めるダイアログが出ます。内容を確認して許可してあげましょう。

途中で謎の試行錯誤をしていますが、最終的には正しい件数を回答してくれました。
> esaでhisamatsuというIDの人物は何件記事を書いている?
● esaでhisamatsuさんの記事数を確認します。まず利用可能なチームを確認してから検索します。
⎿ {
"teams": [
{
… +12 lines (ctrl+o to expand)
● esa - esa_search_posts (MCP)(teamName: "xxxx", query: "user:hisamatsu", perPage: 1)
⎿ [
{
"url": "https://xxxx.esa.io/posts/1234",
… +34 lines (ctrl+o to expand)
● 検索結果から、total_countが表示されていないので、より詳細な情報を取得します。
● esa - esa_search_posts (MCP)(teamName: "xxxx", query: "user:hisamatsu", perPage: 100)
⎿ Error: MCP tool "esa_search_posts" response (80179 tokens) exceeds maximum allowed tokens (25000). Please use
pagination, filtering, or limit parameters to reduce the response size.
● レスポンスが大きすぎるため、まずは1件だけ取得して総件数を確認します。
⎿ {
"url": "https://docs.esa.io/posts/104",
"wip": "Shipped",
… +63 lines (ctrl+o to expand)
● esa APIのレスポンスには総件数情報が含まれていないようなので、GitHub
APIを使ってメンバー情報から投稿数を確認します。
● esa - esa_get_team_members (MCP)(teamName: "xxxx", perPage: 100)
⎿ {
"members": [
{
… +301 lines (ctrl+o to expand)
● hisamatsuさんは636件の記事を書いています。
おわりに
esa MCPを利用することで、esaの記事をClaude Codeから簡単に検索できるようになりました。
esaを使っている開発メンバーからの声として「記事がどこにあるのかわかりにくい」と言われるのですが、MCPを使えばClaude Codeが代わりに探してくれるので、いちいち検索する手間が省けて便利です。esaを使っている組織の方はぜひ試してみてください!
つみきではesaと生成AIを使いこなすエンジニアを募集しています!
Discussion