├── .gitignore ├── LICENSE ├── README.md ├── aws_level_checker.py ├── pyproject.toml ├── requirements.txt └── src └── mcp_aws_level_checker ├── __init__.py ├── __main__.py └── server.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Python 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | *.so 6 | .Python 7 | build/ 8 | develop-eggs/ 9 | dist/ 10 | downloads/ 11 | eggs/ 12 | .eggs/ 13 | lib/ 14 | lib64/ 15 | parts/ 16 | sdist/ 17 | var/ 18 | wheels/ 19 | *.egg-info/ 20 | .installed.cfg 21 | *.egg 22 | 23 | # 仮想環境 24 | .env 25 | .venv 26 | env/ 27 | venv/ 28 | ENV/ 29 | env.bak/ 30 | venv.bak/ 31 | 32 | # VS Code 33 | .vscode/* 34 | !.vscode/settings.json 35 | !.vscode/tasks.json 36 | !.vscode/launch.json 37 | !.vscode/extensions.json 38 | !.vscode/mcp.json 39 | 40 | # PyCharm 41 | .idea/ 42 | 43 | # その他 44 | *.log 45 | .DS_Store 46 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 みのるん 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AWSレベル判定くん MCPサーバー版 2 | 3 | AWS技術ブログの内容を分析し、レベルを判定するMCPサーバーです。 4 | 5 | 大好評のうちにサービス終了となった [#AWSレベル判定くん](https://github.com/minorun365/aws-level-checker) の魂を継いでいます。 6 | 7 | ![Claude Desktopでの利用例](https://github.com/user-attachments/assets/ed5ae9a1-2e2a-46b3-976c-dec6255c07eb) 8 | 9 | ## 概要 10 | 11 | このMCPサーバーは、AWS技術ブログの内容を分析し、以下の4つのレベルのいずれかに判定します: 12 | 13 | - **Level 100**: AWSサービスの概要を解説するレベル 14 | - **Level 200**: トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル 15 | - **Level 300**: 対象のトピックの詳細を解説するレベル 16 | - **Level 400**: 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル 17 | 18 | ## インストール 19 | 20 | ### `uvx`を使用する方法(推奨) 21 | 22 | [`uv`](https://docs.astral.sh/uv/)を使用する場合、特別なインストールは不要です。[`uvx`](https://docs.astral.sh/uv/guides/tools/)を使って直接実行できます: 23 | 24 | ```bash 25 | uvx mcp-aws-level-checker 26 | ``` 27 | 28 | ### PyPI経由でインストールする方法 29 | 30 | pip を使用してインストールすることもできます: 31 | 32 | ```bash 33 | pip install mcp-aws-level-checker 34 | ``` 35 | 36 | インストール後は、次のコマンドで実行できます: 37 | 38 | ```bash 39 | python -m mcp_aws_level_checker 40 | ``` 41 | 42 | ## 設定方法 43 | 44 | ### Claude.app での設定 45 | 46 | Claude の設定に以下を追加してください: 47 | 48 | #### uvx を使用する場合 49 | 50 | ```json 51 | "mcpServers": { 52 | "aws-level-checker": { 53 | "command": "uvx", 54 | "args": ["mcp-aws-level-checker"] 55 | } 56 | } 57 | ``` 58 | 59 | #### pip でインストールした場合 60 | 61 | ```json 62 | "mcpServers": { 63 | "aws-level-checker": { 64 | "command": "python", 65 | "args": ["-m", "mcp_aws_level_checker"] 66 | } 67 | } 68 | ``` 69 | 70 | ### VS Code での設定 71 | 72 | VS Code の設定ファイルに以下を追加してください。`Ctrl + Shift + P` を押して、`Preferences: Open User Settings (JSON)` と入力することで設定ファイルを開けます。 73 | 74 | あるいは、`.vscode/mcp.json` ファイルをワークスペースに作成することで、設定を他のユーザーと共有できます。 75 | 76 | > `.vscode/mcp.json` ファイルを使用する場合は、`mcp` キーが必要です。 77 | 78 | #### uvx を使用する場合 79 | 80 | ```json 81 | { 82 | "mcp": { 83 | "servers": { 84 | "aws-level-checker": { 85 | "command": "uvx", 86 | "args": ["mcp-aws-level-checker"] 87 | } 88 | } 89 | } 90 | } 91 | ``` 92 | 93 | #### pip でインストールした場合 94 | 95 | ```json 96 | { 97 | "mcp": { 98 | "servers": { 99 | "aws-level-checker": { 100 | "command": "python", 101 | "args": ["-m", "mcp_aws_level_checker"] 102 | } 103 | } 104 | } 105 | } 106 | ``` 107 | 108 | ## MCPサーバー仕様 109 | 110 | - ツール名: `analyze_aws_blog` 111 | - 入力形式:AWSブログ記事のテキスト全文 112 | - 出力形式:以下のとおり 113 | 114 | ``` 115 | レベル: [判定したレベル (100/200/300/400)] 116 | 判定理由: [判定理由の詳細説明] 117 | ``` 118 | 119 | ## ヒント 120 | 121 | [Fetch](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch)と組み合わせて使うと便利です。 122 | -------------------------------------------------------------------------------- /aws_level_checker.py: -------------------------------------------------------------------------------- 1 | from mcp.server.fastmcp import FastMCP 2 | 3 | mcp = FastMCP("aws-level-checker") 4 | 5 | 6 | @mcp.tool() 7 | async def analyze_aws_blog(blog_text: str) -> str: 8 | """ 9 | AWS技術ブログのテキストを分析し、技術レベルを判定します。 10 | 11 | Args: 12 | blog_text: AWS技術ブログのテキスト全文 13 | 14 | Returns: 15 | レベル判定結果と判定理由 16 | """ 17 | 18 | prompt = f""" 19 | 以下のAWS技術ブログのテキストを分析し、技術レベルを判定してください。 20 | 21 | レベル判定基準: 22 | - Level 100: AWS サービスの概要を解説するレベル 23 | - Level 200: トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル 24 | - Level 300: 対象のトピックの詳細を解説するレベル 25 | - Level 400: 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル 26 | 27 | 分析対象テキスト: 28 | {blog_text} 29 | 30 | フォーマット: 31 | レベル: [判定したレベル (100/200/300/400)] 32 | 判定理由: [判定理由の詳細説明] 33 | """ 34 | 35 | return prompt 36 | 37 | 38 | if __name__ == "__main__": 39 | mcp.run(transport='stdio') 40 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["hatchling"] 3 | build-backend = "hatchling.build" 4 | 5 | [project] 6 | name = "mcp-aws-level-checker" 7 | version = "0.1.1" 8 | description = "AWS技術ブログのレベルを分析するMCPサーバー" 9 | readme = "README.md" 10 | requires-python = ">=3.9" 11 | license = {file = "LICENSE"} 12 | authors = [ 13 | {name = "Your Name", email = "your.email@example.com"}, 14 | ] 15 | classifiers = [ 16 | "Programming Language :: Python :: 3", 17 | "License :: OSI Approved :: MIT License", 18 | "Operating System :: OS Independent", 19 | ] 20 | dependencies = [ 21 | "mcp[cli]>=1.2.0", 22 | ] 23 | 24 | [project.urls] 25 | "Homepage" = "https://github.com/yourusername/mcp-aws-level-checker" 26 | "Bug Tracker" = "https://github.com/yourusername/mcp-aws-level-checker/issues" 27 | 28 | [project.scripts] 29 | mcp-aws-level-checker = "mcp_aws_level_checker.__main__:main" 30 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mcp[cli]>=1.2.0 2 | -------------------------------------------------------------------------------- /src/mcp_aws_level_checker/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | AWS Level Checker 3 | ----------------- 4 | 5 | AWSの技術ブログのレベルを分析するMCPサーバー 6 | """ 7 | 8 | __version__ = "0.1.1" 9 | -------------------------------------------------------------------------------- /src/mcp_aws_level_checker/__main__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | AWS Level Checker MCP Server 4 | ---------------------------- 5 | 6 | AWSの技術ブログのレベルを分析するMCPサーバー 7 | """ 8 | 9 | from .server import create_mcp_server 10 | 11 | def main(): 12 | """メインエントリーポイント""" 13 | mcp = create_mcp_server() 14 | mcp.run(transport='stdio') 15 | 16 | if __name__ == "__main__": 17 | main() 18 | -------------------------------------------------------------------------------- /src/mcp_aws_level_checker/server.py: -------------------------------------------------------------------------------- 1 | from mcp.server.fastmcp import FastMCP 2 | 3 | def create_mcp_server(): 4 | mcp = FastMCP("aws-level-checker") 5 | 6 | @mcp.tool() 7 | async def analyze_aws_blog(blog_text: str) -> str: 8 | """ 9 | AWS技術ブログのテキストを分析し、技術レベルを判定します。 10 | 11 | Args: 12 | blog_text: AWS技術ブログのテキスト全文 13 | 14 | Returns: 15 | レベル判定結果と判定理由 16 | """ 17 | 18 | prompt = f""" 19 | 以下のAWS技術ブログのテキストを分析し、技術レベルを判定してください。 20 | 21 | レベル判定基準: 22 | - Level 100: AWS サービスの概要を解説するレベル 23 | - Level 200: トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル 24 | - Level 300: 対象のトピックの詳細を解説するレベル 25 | - Level 400: 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル 26 | 27 | 分析対象テキスト: 28 | {blog_text} 29 | 30 | フォーマット: 31 | レベル: [判定したレベル (100/200/300/400)] 32 | 判定理由: [判定理由の詳細説明] 33 | """ 34 | 35 | return prompt 36 | 37 | return mcp 38 | --------------------------------------------------------------------------------