MCP-BOS: 可扩展的MCP服务器框架 について
MCP-BOSは、Claude Desktop向けのMCPサーバーを構築するPythonフレームワークです。機能をモジュールとして自動検出し、宣言的な設定で管理できるため、コアコードを変更せずに拡張できます。
主な機能
- 01機能のモジュール化
- 02モジュールの自動検出と読み込み
- 03config.jsonによる宣言的な設定
- 04モジュールの有効化・無効化
- 05ログ機能と階層型アーキテクチャ
活用シーン
- 01MCPサーバーへの独立した機能の追加
- 02プロジェクトに合わせたモジュールとパラメーターの設定
- 03Claude Desktopでのサーバー実行とデバッグ
MCP 対応
FastMCPを基盤とし、MCPクライアント向けにツール、リソース、プロンプトテンプレートを登録します。MCP CLIでClaude Desktopに接続でき、MCP Inspectorでテストできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-BOS:拡張可能なMCPサーバーフレームワーク
MCP-BOS:モジュール式で拡張可能なModel Context Protocolサーバーフレームワーク
規約に基づく自動モジュール検出機能を備えた、Claude Desktop向けの柔軟なMCPサーバーフレームワークです。シンプルなモジュールインターフェースと宣言的な設定により、コアコードを変更せずにAIアプリケーションの機能を簡単に拡張できます。FastMCP標準に対応し、ツール、リソース、プロンプトテンプレートの完全な登録機能を備えています。
特長
- 🧩 モジュール式設計:機能を自己完結型のモジュールとして整理し、拡張を容易にします
- 🔍 自動検出:設定より規約を優先するモジュール読み込み方式です
- ⚙️ 宣言的な設定:config.jsonでモジュールとパラメーターを柔軟に設定できます
- 🔌 プラグアンドプレイ:インターフェースに準拠したモジュールディレクトリを追加するだけで、新しい機能を追加できます
- 🔒 安全で安定:階層型アーキテクチャにより、コアシステムの安定性と信頼性を確保します
- 📝 詳細なログ:充実したログシステムにより、デバッグと監視を容易にします
- 🖥️ Claude Desktopとの統合:Claudeと緊密に統合し、AIによる強化された体験を提供します
技術スタック
Python FastMCP Model Context Protocol Claude Desktop JSON モジュール式設計 マイクロカーネルアーキテクチャ
アーキテクチャの考え方

MCP-BOSフレームワークは、最新のモジュール式アーキテクチャを採用しています。主な設計理念は次のとおりです。
モジュール式設計
フレームワーク全体をモジュール中心に構成し、各機能を独立したモジュールにカプセル化することで、機能を簡単かつ直感的に拡張できます。モジュールは互いに独立しながらも、標準インターフェースを介して連携し、完全なサービスエコシステムを形成します。
自動検出機能
フレームワークはmodulesディレクトリ内のモジュールを自動的に検出するため、各モジュールを手動で登録する必要はありません。この「設定より規約」の方式により、拡張にかかるコストを大幅に削減できます。
宣言的な設定
config.jsonファイルで全体およびモジュール単位の設定を行うため、高い柔軟性を備えています。ニーズに応じて、特定のモジュールを有効化または無効化できます。
階層型アーキテクチャ
フレームワークはコア層とモジュール層に分かれています。コア層はフレームワークの基本機能を担当し、モジュール層は個別のビジネス機能を担当します。この階層型設計により、フレームワークの堅牢性と保守性が高まります。
ディレクトリ構成の説明
mcp-bos/
├── config.json # 全局配置文件
├── main.py # 主入口文件
├── core/ # 核心系统
│ ├── __init__.py
│ ├── module_registry.py # 模块注册表
│ ├── module_loader.py # 模块加载器
│ ├── module_interface.py # 模块接口定义
│ ├── config_manager.py # 配置管理器
│ └── server.py # FastMCP服务器适配
├── modules/ # 功能模块目录
│ ├── __init__.py
│ ├── hello_world/ # Hello World示例模块
│ │ ├── __init__.py
│ │ └── hello.py
│ └── ... # 其他功能模块
├── utils/ # 工具函数
│ ├── __init__.py
│ └── helpers.py
└── README.md # 项目文档
コアコンポーネントの説明
- main.py:フレームワークのエントリーポイントであり、サーバーの初期化と起動を担当します
- core/:コアコンポーネントのディレクトリ
- module_interface.py:すべてのモジュールが実装する必要のあるインターフェースを定義します
- module_registry.py:登録済みモジュールを管理します
- module_loader.py:モジュールを自動検出して読み込みます
- config_manager.py:設定を読み込み、管理します
- server.py:FastMCPと統合し、サーバー機能を提供します
- modules/:機能モジュールのディレクトリ。各サブディレクトリは独立したモジュールです
- utils/:汎用ユーティリティ関数
設定ファイルの構成
config.jsonファイルはフレームワークのコア設定であり、全体設定とモジュール設定の2つの部分に分かれています。
{
"global": {
"server_name": "MCP-BOS",
"debug": true,
"log_level": "INFO",
"transport": "stdio",
"dependencies": ["mcp[cli]"]
},
"modules": {
"hello_world": {
"enabled": true,
"message": "Hello, {}!"
},
"module_name": {
"enabled": false,
"param1": "value1"
}
}
}
-
global:全体設定の部分
- server_name:サーバー名
- debug:デバッグモードを有効にするかどうか
- log_level:ログレベル
- transport:トランスポートプロトコル。通常は"stdio"です
- dependencies:依存パッケージの一覧
-
modules:モジュール設定の部分。各モジュールに独自の設定セクションがあります
- enabled:モジュールを有効にするかどうか
- その他のモジュール固有の設定パラメーター
使用方法
インストール
- リポジトリをクローンします。
git clone https://github.com/kinbos/mcp-bos.git
cd mcp-bos
- 依存関係をインストールします。
uv pip install mcp[cli]
設定
config.jsonファイルを編集して、サーバーとモジュールを設定します。
- サーバー名やログレベルなどの全体パラメーターを設定します
- モジュールを有効化または無効化します
- モジュール固有のパラメーターを設定します
実行
サーバーは次の方法で実行できます。
- 直接実行:
python main.py
- uvを使用して実行:
uv run main.py
- Claude Desktopと統合:
# 使用mcp CLI集成到Claude Desktop
mcp install main.py
- 開発・デバッグモード:
# 使用mcp Inspector测试服务器
mcp inspect main.py
新しいモジュールの追加
modulesディレクトリに新しいモジュールディレクトリを作成します。
mkdir modules/my_module
- 必要なファイルを作成します。
touch modules/my_module/__init__.py
touch modules/my_module/my_module.py
- モジュールインターフェースを実装します。
# modules/my_module/my_module.py
from core.module_interface import ModuleInterface
class MyModule(ModuleInterface):
def get_info(self):
return {
"name": "my_module",
"version": "1.0.0",
"description": "我的自定义模块",
"author": "kinbos 严富坤",
"email": "[email protected]",
"website": "htttps://www.yanfukun.com"
}
def register(self, server):
@server.tool()
def my_tool(param: str) -> str:
"""自定义工具"""
return f"处理参数: {param}"
@server.resource("my://resource")
def my_resource() -> str:
"""自定义资源"""
return "资源内容"
- モジュールクラスをエクスポートします。
# modules/my_module/__init__.py
from modules.my_module.my_module import MyModule
__all__ = ['MyModule']
- 設定ファイルでモジュールを有効にします。
{
"modules": {
"my_module": {
"enabled": true,
"custom_param": "value"
}
}
}
- サーバーを再起動すると、新しいモジュールが自動的に検出され、読み込まれます
よくある質問
モジュールが読み込まれない
- モジュールのディレクトリ構成が正しいか確認してください
__init__.pyファイルでモジュールクラスがエクスポートされているか確認してください- 設定ファイルでモジュールが有効になっているか確認してください
- ログ出力を確認して、詳しいエラー情報を確認してください
エンコードの問題
Windows環境で文字化けが発生した場合は、正しい環境変数が設定されていることを確認してください。
"env": {
"PYTHONIOENCODING": "utf-8"
}
サーバー接続の問題
- Claude Desktopが正しく設定されていることを確認してください
- 依存関係が正しくインストールされていることを確認してください
- Claude Desktopのログファイルを確認してください
コントリビューションガイド
コントリビューションを歓迎します。次の手順に従ってください。
- プロジェクトをForkします
- 機能ブランチを作成します
- 変更をコミットします
- Pull Requestを作成します
作者
- kinbos 严富坤 - 個人サイト
- メール:[email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。