MCPメモ

macOSでの MCPサーバの定義場所

Claude Desktop

$HOME/Library/Application Support/Claude/claude_desktop_config.json

Copilot Chat

モデル コンテキスト プロトコル (MCP) を使用した Copilot Chat の拡張 - GitHub Docs

プロジェクトの .vscode/mcp.json に記述

Cline

$HOME/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

書式

各環境でまちまち。 Claude Desktopだと以下のようになっている。

{
  "mcpServers": {
    "weather_service": {
      "command": "uv",
      "args": [
        "--directory",
        "<PATH_TO_SERVER>/MCP_weather_service",
        "run",
        "weather-service"
      ],
      "env": {
        "XYZ_API_KEY": "******"
      }
    },

クライアントは stdio/sseどちらを使う?

Claude Desktopは 2025年05月の時点で stdioしかサポートしていないらしい。なのでクライアントはとりあえず stdio で作っておけばいい。 あとで調べ直す

Powre Automateのデバッグ

メモ。なんでこんなめんどくさいツールを選んだんだ...

mofumofupower.hatenablog.com

dekiru.net

検証のために変数に仮の値を代入するには

  • 変数を定義
  • デバッグフラグを用意
  • フラグが立っていたら変数に仮の値を代入

という方法しかなさそう。ほんとつらい

WSLのdockerコンテナで動いている Webサーバに外部 PCからアクセスする

一時的にローカルマシンでサーバを動かしたいと思った時のメモ

dockerコンテナで webサーバがポート 80で起動しているとする。

管理者権限で PowerShell を開く

netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=<WSL2_IP_ADDRESS>

Windows Defender ファイアウォール

新しい規則 → ポート → TCP, 特定のローカルポート (80など) → 接続を許可する → ドメイン、プライベート → 名前は適当につける

設定の解除

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0

ファイアウォールの設定も削除、または停止しておく

Clineに Power Automate Workflow を デバッグさせる

Power Automate のワークフローをAIに書かせられないの? ということを考えている。 とりあえず Microsoftの Copilotは式の作成くらいしか役に立たないことが判明してて、praywright-mcp でブラウザ操作でどうにかならんかと思ったがちょっと荷が重たそうだった。

一歩後退して、エクスポートされたワークフローの zipファイルの中を見てみる。

> tree
.
├── Microsoft.Flow
│   └── flows
│       ├── b48b234e-c5ba-4cf5-af95-a2fe6d6742b8
│       │   ├── apisMap.json
│       │   ├── connectionsMap.json
│       │   └── definition.json
│       └── manifest.json
└── manifest.json

全部 json だった。なんとなく時代を感じる。

で、これを Clineに食わせてみるとちゃんと何をするものかを理解してくれる。

じゃあこれで開発できるんじゃない?と思い、「メッセージの送信先メールアドレスをハードコーディングしているところを直して。 office365のプロフィールを取ってきて mailって情報があるからそれを使って」と指示を出すとコードを修正してくれた。動かしてはいないが読んだ感じ問題なさそう。

これで問題は解決かというとそうでもなく、 * 動作検証するのに zipにかためてアップロードして... を繰り返すことになるのでめんどくさい * 人間がある程度解決方法を知ってないと使えない。多分「office365のプロフィールにメール情報がある」なんてことは Clineは知らない

あくまで動作不良のワークフローの解析に使うくらいが限界かな、というところ。

clineメモ

便利ではあるけどもうちょっとなんとかして、というところも散見される。

まあ本来の目的でない使い方をしようとしている自分が悪いのだけど。素直に目的に特化したアプリケーションを作ったほうがいいか。

注意

ワークスペース単位で clineの設定を変えることは現状できない。なので「ワークスペースAはMCP X, Y, Zを、ワークスペースBでは MCP A,B,Cを」みたいな切り替えができない。 ↓ みたいにワークスペースごとに設定できればいいんだけどな

メモリ機能について

https://github.com/modelcontextprotocol/servers/tree/main/src/memory には現状 MEMORY_FILE_PATH を指定できないバグがある。

~/.npm/_npx/15b07286cbcc3329/node_modules/@modelcontextprotocol/server-memory/index.jsMEMORY_FILE_PATHを以下のようにすれば修正できる。githubでも言及があったのでそのうち対応されるだろう。

#!/usr/bin/env node
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
import { promises as fs } from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
// Define the path to the JSONL file, you can change this to your desired local path
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// const MEMORY_FILE_PATH = path.join(__dirname, 'memory.json');
const DEFAULT_MEMORY_FILE = path.join(__dirname, 'memory.json');
const MEMORY_FILE_PATH = process.env.MEMORY_FILE_PATH || DEFAULT_MEMORY_FILE;
// The KnowledgeGraphManager class contains all operations to interact with the knowledge graph
class KnowledgeGraphManager {
...

memory.jsonは以下のようにインストール先のディレクトリ下に格納されている。

    ~/.npm/._npx/15b07286cbcc3329/node_modules/@modelcontextprotocol/server-memory/dist/memory.json