@yosider/cosense-mcp-serverと@takker/cosense-mcp-serverを統合
from @yosider
cosense-mcp-serverにhttps://jsr.io/@takker/cosense-mcp-server を統合できないかご提案させていただきますtakker.icon
理由
https://github.com/yosider/cosense-mcp-server のほうが使われているので、takker.iconが独自にいろいろ機能追加したりrefactoringしたりするより、そちらのほうにPRしたほうが利用者にとって有益だと考えました
あと似たようなものが複数あると、どっちを使えばいいのかユーザーが混乱してしまうかも
使っているランタイム環境は異なりますが、ランタイム依存のコードは僅かなので、統合 (https://jsr.io/@takker/cosense-mcp-server の変更の一部をhttps://github.com/yosider/cosense-mcp-server に取り込むこと)は容易だと思います
もちろん、yosider.iconさんのご判断を尊重いたします
https://jsr.io/@takker/cosense-mcp-server 側の大雑把な変更点
機能面
任意のprojectの情報を読み書きできるようにしたhttps://github.com/takker99/cosense-mcp-server/pull/12
ので、COSENSE_PROJECT_NAMEはいらないかもしれない (default project指定用として残すのはあり)
あと、操作できるprojectsを限定するCOSENSE_PROJECT_ALLOW_LISTを新設したほうがいいかも
insert_linesで予期せぬprojectに勝手に書き込まれるのを防ぐとか
すばら.iconyosider.icon
list_pagesのresponseをMCP structured outputにしたhttps://github.com/takker99/cosense-mcp-server/pull/14
現時点で効果あるか不明
list_pagesで、最新100件以外を取得できるようにしてみたらbsahd.icon
(ちなみにskipを大きくする方式だとskipが大きいほどだいぶ遅くなるので、/scrapboxlab/api/pages/:projectname/search/titlesを使用して全件リストを事前に取得しておいたあと、適切にページングしてAIに渡すといいかも)
skip大きいと遅くなるの知りませんでしたtakker.icon
タイトルさえわかればいいので、それもありですね
descriptionsを重視するならapi/pages/:projectnameを使い続けるのがいいかも
全ページのタイトルを取得する用途でskipをだいぶ上げながら使ってたんだけど、後半だいぶ遅くなってたbsahd.icon
list_projectsを追加https://github.com/takker99/cosense-mcp-server/pull/12
(予定)get_pageをSmart Contextに置き換える
現状get_pageのresponseはSmart Contextと似たようなものなので、Smart Contextに置き換えても、致命的な変更にはならないと思う
たしかにyosider.icon
これに合わせて、生のページデータを返すget_raw_pageか行IDなどを返すget_page_metadataを追加する
smart contextだと1hopも入るのでその分入力コストが高くなったりしませんか?bsahd.icon
現行のget_pageも1hop入るので特に変わらないと思いますtakker.icon
うん?入力コスト?すみませんちゃんと理解してないかも
1hop先を全て入力させるとコストが高くなる?bsahd.icon
token数が増えるということですねtakker.icon
確かにそうかも
まあとりあえずやってみて、だめなら軽量化optionを用意すればいいと思います
/motoso/LLMによるタスク管理とかがもう少しやりやすくなるんじゃないかと予想takker.icon
個人的にも、ブラウザ操作なしにLLMにSmart Context渡せると楽
(検討)write_pageの追加
Sampling LLMを使って、patch()のupdate callbackを再現する
tool呼び出し時に、LLMに現在のlinesを渡し、書き換え後のテキストを要求する
帰ってきたテキストでページ全体を更新する
特定のブロックのみを書き換えるツールにしてもいいかも
(not implemented)project横断検索
これAPI叩くコストが高いからなあ……いるかなあ
search_pagesをproject数分叩くほうがずっと早そう
内部実装面
Denoで動かしている
modelcontextprotocol/typescript-sdkのhigh-level APIによる実装に書き換えている
ファイル数の削減
ツールの定義をindex.tsに全部移した
これは雑に書き換えてたらなんとなくそうなってしまっただけ
ツールごとにファイルを分けるほうが妥当だと思う
ここ気になっているyosider.icon
自分も分けたい派
PageResourceの削除
これは復活したほうがいい。ただclassは不要かも
個人的にはあまり使わないのでなくても良い気もする…が機能としてあるので対応しないのもどうなのかと思うyosider.icon
じつは一旦resource機能をomitしたほうがいいと思っていますtakker.icon
@takker/cosense-mcp-serverでは特定のprojectのページを全てresource listに追加する設計にした
しかし、vscodeだとresource選択画面に大量のページが列挙されてしまい、他のmcp serverのresourceを見つけづらくなる
例えば/takkerを指定すると、10000件以上のresourcesが登録されてしまい、候補がcosenseで埋め尽くされる
@yosider/cosense-mcp-serverのresourceはうまく動いてなかった覚えがある(うろ覚え)
検索でresourceを絞り込むようにするのがbestなのだが、vscodeで試したときうまくいかなかった
検索はされるのだが、なぜかmcp serverに帰ってくるページタイトルが文字化けしてしまう
復元を試みたが、文字化けの仕組みを特定できず断念した
2025-08-17うまくいったtakker.icon
https://github.com/yosider/cosense-mcp-server/pull/22
自分の実装ではclassを所々使っているけどTSでは使わないほうが良しとされがちな印象があるので、使わない方向にしたいyosider.icon
ぱっと見の段階ですが、もちろん歓迎です!yosider.icon
後で詳しく見ます
scrapbox-fansとかに移せばいいのかも?
@yosider/cosense-mcp-serverで使っている方がいらっしゃるので、https://github.com/yosider/cosense-mcp-server のままにするのが移行コスト低いかなと思っていますtakker.icon
もちろん移行のハードルが低そうであればそれでも大丈夫です
あ、そうかyosider.icon
自分の観測範囲だと井戸端の人くらいしか使ってないが…
PRやissueに海外の人も書いてた覚えあったtakker.icon
あれはMCPサーバーまとめサイトみたいなものを作っている人たちが半自動でやっていることだと思っているyosider.icon
ほへ~takker.icon
https://gyazo.com/f34af02364a420b609b2e2a0948649e6
@yosider/cosense-mcp-server - npm
うーん、多少は使われているのか?
まーでもREADMEに「移行しました」と書いておけばいいのではないか
ありがとうございます!takker.icon
大まかにこんな手順でPRしようと思っていますtakker.icon
1. ✅modelcontextprotocol/typescript-sdkのhigh-level APIによる実装に書き換える
いったん整理
これと同時に、toolごとにファイルを分ける
https://github.com/yosider/cosense-mcp-server/pull/15
2. 複数のproject対応
3. toolの追加
(どこか) pnpmかyarnにpackage managerを置き換える?
設定なしにjsrを扱えるためhttps://deno.com/blog/add-jsr-with-pnpm-yarn
良いyosider.icon
user側で.npmrcを用意する必要がなくなる
もしくは@cosense/stdのnpm対応を待つのもあり
denoはうまく行かなかったんだっけyosider.icon
serverの更新がうまくいかなかった覚えtakker.icon
もしかしたらちゃんと設定すれば更新できるかも
あとnode使っているユーザーがほとんどだろうから、denoに統合するのはなんだかなあという気持ちがあった
Denoでもいいかなあ
まあnode/deno固有のコードは少ないので、取り急ぎnodeのままにしますtakker.icon
codingは変えようと思えばすぐ変えられる
おkですyosider.icon
package manegerを変えずに、user側で.npmrc不要にしましたtakker.icon
https://github.com/yosider/cosense-mcp-server/pull/23
pnpm/yarnはgithubから直接packageを実行できるみたい
pnpm dlx takker99/cosense-mcp-server#resource-completionで、resource-completion branchにあるnpm packageを動かせる
Denoみたいで便利
レビュー遅くなりすみません、確認いただけると幸いですyosider.icon
(院試とか終わってからで大丈夫です)
ありがとうございます!takker.icon
ちなみにcollaboratorに追加したほうがよければしますが、どうでしょうかyosider.icon
むーんどうしましょうかtakker.icon
追加していただけると確かにありがたいのですが、勝手に大改造スマッシュブラザーズしそうで心配です
追加していただくにしても院試のあとがよさげです
👍yosider.icon
copilot coding agent使えるとうれしいですが、設定で使えるようになるのかなtakker.icon
使ったことないのでわからない PRをレビューしてくれたりするのだろうかyosider.icon
契約している必要があるのはリポジトリオーナーなのか、PR authorなのか
やはりcontributerに追加していただいてもよろしいでしょうか?takker.icon
あとreview返信放置してしまい申し訳ないです
正直注意資源が全然足らなくて手が回ってないところです……
なのでcodingをagentにどんどん外注してかないと自分がやりたいことに作業が追いつかないなと最近感じています。
cosense-mcp-serverについても、issue解決や機能追加を全部coding agentに丸投げして開発を進めたいと思っています
ほしいのはプログラムそのものでありcoding体験ではない
codingそのものが目的になってしまうことが往々にしてあるから反省点
で、たぶんcontributerにしてもらえるとcoding agentを使えるようになりそうです (根拠なし)
了解です!yosider.icon
ありがたやtakker.icon
なお、今reviewしていただいているものはagentに委譲できないので、takker.iconがちゃんと返信しようと思っていますtakker.icon
早めにやりたい……
暇な時で大丈夫ですyosider.icon
https://github.com/yosider/cosense-mcp-server/pull/23#issuecomment-3212036321
これどうしましょうかtakker.icon
pnpm/yarnはこれ使うとinstallが楽だよというだけで、developer側は.npmrcがあるので設定の手間はないんですよね。
新たに来るdeveloperが.npmrcを作らなくてもいいようにしたいyosider.icon
もちろんrecommend installationとdev側のpackage managerとを合わせるのはあり。
ただそのように開発環境に手を加えるなら、nodeにするかdenoにするかまで検討したほうがいいのではと思っています
@modelcontextprotocol/inspectorなどが使えるなら、denoのほうがアクセス権限を絞れるのでユーザーにとって有益だと思います
たとえば--allow-net=https://scrapbox.io/villagepump/ で井戸端以外確実に読み書きできないように設定できる
とはいえ、read onlyなどをdenoの権限レベルで制限できるわけではないから、あまり意味はないかも
ページ読み書きはどちらもネットワークアクセスなので、アクセス可否しか制御できない
@yosider/cosense-mcp-serverと@takker/cosense-mcp-serverを統合#6899a6b90000000000410e64あたりいくらかハードルがありそうなので、いずれdenoにするとしても一旦すぐ出来る改善で段階を踏むのは良いと思うyosider.icon
まあでもこのPRはユーザー用の変更で、開発者用の変更はやるならまた別のPRでやればいいのか
ということでlockfileの件は対応頂かなくて大丈夫です!
pnpm最近使ってるんですが結構早いと感じていて、開発ツールもこっちに寄せたいかも(手のひら返し)takker.icon
まあべつにいいか
pnpmにしましょうyosider.icon
PRしておきます(多分)(してもらってもOKです)