Closed6

Mastra + Notion MCP

㐂乃㐂乃

Notionは内部表現が非常に構造化されていてLLM-friendlyでないと評判(身の回り調べ)なのだが、7/1にリリースされたremote MCP server(https://mcp.notion.com/mcp)は結構markdownで返ってくるっぽくて良さそう。

だがMastraのMCPClientは認証をサポートしていない。

以前からあったnpm版はもうリリースが止まっていて、普通に@makenotion/notion-mcp-serverを動かすとAPI token is invalidと言われる。
ntn_…のトークンは新しいフォーマットらしいので、最新のコードをビルドして使うと動くものの、ブロックの中身をどうこうと言ってただのAPIのラッパーのようだ。

やはりremote MCP serverの方を使いたい…。

㐂乃㐂乃

https://x.com/harphies/status/1952064246893916249
SSE版については認証の解析があった。HTTPも一緒?
Claude Codeで繋いでみると~/.claude/.credentials.jsonに認証情報が出るので、とりあえずアクセス可能にはできたりするかもだが手間だ。
そういうことをしないための共通規格じゃないんですか!?

㐂乃㐂乃

claude codeでは普通に使えるし https://github.com/wong2/mcp-cli でもできた。@modelcontextprotocol/sdk で普通に認証できるようだ。

https://github.com/mastra-ai/mastra/issues/5342
あと普通にissueあったがあまりやる気無さそう。

MCP clientとして認証をやりつつローカルに対して無認証MCP serverと振る舞う奴を作るか、mastraに自分で機能を入れるか
前者はリフレッシュトークンの期限切れたら駄目だから姑息的(認証のURLをユーザーに提示する方法が無い、レスポンスにURL入れても結局agentが処理しないとLLM任せになる)

㐂乃㐂乃

https://github.com/kinoh/mastra/tree/feat/mcp-auth
実装できた。
大体SDKのサンプル通りで良いのだが、認証して再接続するにはtransportを作り直す必要があるのがポイントだった。(これもサンプルはattemptConnection()自体呼び直しているから、単に再接続すれば? と手を入れたのが悪い。)
Claude codeは最初GitHubのMCPを書いたが、SDKのこういう問題で認証できなかったのも罠だ。

㐂乃㐂乃

ビルドはpostinstallでできる話もあったが、サブディレクトリとなると面倒そうなので普通にリポジトリに突っ込む力業で解決した

    "@mastra/mcp": "https://gitpkg.vercel.app/kinoh/mastra/packages/mcp?release",
このスクラップは21日前にクローズされました