模块化MCP
](https://www.npmjs.com/package/serena-modular-mcp)
多个MCP 有效管理服务器Model Context Protocol (MCP) 代理服务器。您可以对工具进行分组,并根据需要按需导入工具模式,以处理大型工具集合。
npm: https://www.npmjs.com/package/serena-modular-mcp
概念
传统MCP 在安装过程中,当从多个服务器处理多个工具时LLM 中所述修改相应参数的值。Modular MCP 通过以下方法解决这个问题:
- 上下文简化:通过在工具说明中嵌入类别信息LLM 无需工具调用即可找到可用类别
- 按需读取:仅检索特定类别所需的详细工具架构
- 兴趣分离:明确区分工具的发现阶段和执行阶段
- 代理体系结构:多个上游MCP 管理服务器的单个MCP 作为端点
注意:当前 塞雷娜 MCP 仅支持服务器。
机制
1.准备配置文件
首先,复制示例配置文件,创建自己的配置文件:
cp serena-config-example.json serena-config.json配置文件(serena-config.json)具有以下结构:
{
"$schema": "./config-schema.json",
"mcpServers": {
"serena": {
"type": "stdio",
"description": "社内コードベース操作に最適化された MCP。",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server"
],
"env": {
"_comment": "本家Serenaの設定を参照してください"
}
}
},
"categories": {
"fs": {
"description": "ファイル/ディレクトリの読み書きと検索。",
"server": "serena",
"tools": {
"includeNames": ["read_file", "create_text_file", "list_dir", ...],
"overrides": {
"read_file": {
"enabled": true,
"description": "カスタム説明"
}
}
}
},
...
}
}补充:多数情况下$schema是编辑器的补充和静态验证的参考。执行时很少需要下载架构本身"$schema": "./config-schema.json"中所述修改相应参数的值。但是,由于编辑器的补充和本地验证将丢失,因此建议在开发时保留下来。
重要配置:
mcpServers:上游MCP 服务器设置(当前为Serena 仅支持)categories:按类别对工具进行分类,指定每个类别的说明和包含的工具tools.includeNames:包含在类别中的工具名称列表tools.overrides:启用/禁用单个工具或覆盖自定义说明
本家Serena 的设置方法正式文档来修改标记元素的显示属性。
2. Modular MCP 注册
MCP 客户端配置文件(对于Claude Desktop) ~/Library/Application Support/Claude/claude_desktop_config.json)Modular MCP 注册:
{
"mcpServers": {
"serena-modular-mcp": {
"command": "npx",
"args": ["-y", "serena-modular-mcp", "/path/to/serena-config.json"]
}
}
}注意:配置文件的路径仅限于相对路径(例如: ./serena-config.json)。不支持绝对路径。
3.注册两个工具
Modular MCP 启动时LLM 仅注册两个工具:
get-modular-tools:获取特定类别的工具名称和模式call-modular-tool:运行特定类别的工具
get-modular-tools 工具说明包含可用类别的信息:
modular-mcp は複数の MCP サーバーを整理されたカテゴリとして管理し、すべてのツール説明で LLM を圧倒する代わりに、必要なカテゴリのツール説明のみをオンデマンドで提供します。
このツールを使用して特定のカテゴリで利用可能なツールを取得し、その後 call-modular-tool を使用してそれらを実行します。
デフォルトで利用可能なカテゴリ(コンフィグで設定可能):
- fs: ファイル/ディレクトリの読み書きと検索。
- code: シンボル探索とコード編集。
- memory: メモリ操作。
- session: 実行・初期化・構成。
- meta: メタ思考/初期指示。此说明作为系统提示的一部分LLM 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
4.按需加载工具
LLM 可以按类别加载工具:
- 発见: LLM 确认工具说明中可用的类别(无需调用工具)
- 探索: LLM 如果需要文件操作工具
category="fs"的get-modular-tools打开和保存文件 - 実行: LLM 啊
call-modular-tool来修改标记元素的显示属性read_file等特定工具
例如,读取文件时:
get-modular-tools(category="fs")
→ すべての fs カテゴリのツールスキーマが返される
call-modular-tool(category="fs", name="read_file", args={"path": "/path/to/file.txt"})
→ Serena MCP サーバーを通じてファイルを読み込む此工作流可在需要时提供对所有工具的访问,同时最小化上下文使用。
利点
- 减少上下文使用:仅在实际需要时导入工具信息
- 可扩展:可管理多个工具,而无需压迫上下文
- 柔软性:轻松添加和删除工具类别而不影响其他内容
- 透过性:工具就像在上游服务器上直接调用一样运行
- 自定义:允许按类别启用/禁用工具或覆盖说明
项目结构
serena-modular-mcp/
├── src/ # ソースコード
│ ├── index.ts # エントリーポイント
│ ├── server.ts # MCP サーバー実装
│ ├── client-manager.ts # アップストリーム MCP クライアント管理
│ ├── config-loader.ts # 設定ファイル読み込み
│ ├── transport.ts # トランスポート層
│ ├── logger.ts # ロガー
│ ├── types.ts # 型定義
│ └── scripts/ # ユーティリティスクリプト
│ └── generate-schema.ts
├── packages/ # パッケージ
│ └── serena-mcp/ # サブパッケージ(将来的な拡張用)
├── docs/ # ドキュメント
│ ├── task.md
│ └── troubleshooting-connection-issues.md
├── dist/ # ビルド成果物
├── config-schema.json # 設定ファイルのJSON Schema
├── serena-config.json # 設定ファイルの例
├── package.json
├── tsconfig.json
├── biome.json # Biome設定(リント/フォーマット)
├── pnpm-workspace.yaml # pnpm ワークスペース設定
└── README.md开発
安装,安装
# リポジトリをクローン
git clone https://github.com/shin902/serena-modular-mcp.git
cd serena-modular-mcp
# 依存関係のインストール
pnpm install
# 設定ファイルを準備
cp serena-config-example.json serena-config.json
# serena-config.json を編集して、本家 Serena の設定を行います
# ビルド
pnpm build
# ビルドの内訳
pnpm build:esbuild # TypeScriptをバンドル
pnpm build:schema # JSON Schemaを生成编码质量
# リント
pnpm lint
# 自動修正
pnpm fix
# 型チェック
pnpm typecheck发布
# バージョンアップとリリース
pnpm release要件
- Node.js>=22.0.0
- pnpm 10.21.0
许可证
麻省理工学院
