Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[学生X社会人IT会]MCPってなに?

 [学生X社会人IT会]MCPってなに?

学生と社会人の勉強会で発表した資料です
MCPとは何か、からMCPサーバーの作り方、ハンズオンまで解説した資料です!

Avatar for Keita Nakata

Keita Nakata

June 27, 2025

More Decks by Keita Nakata

Other Decks in Technology

Transcript

  1. MCP Client設定のやり方 詳しくは https://github.com/awslabs/mcp/blob/main/src/aws-diagram-mcp -server/README.md ターミナルで以下実行 brew install uv uv

    python install 3.10 brew install graphviz uvはpipみたいなライブラリ管理ツール このMCPはpython3.10以上 diagramをつくるのに必要
  2. MCP Client設定のやり方 mcp clientの設定(claudeの場合) Claudeの設定/Developer/Edit Configより claude_desktop_config.json を開き、以下追加 { "mcpServers":

    { "awslabs.aws-diagram-mcp-server": { "command": "uvx", "args": ["awslabs.aws-diagram-mcp-server"], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "autoApprove": [], "disabled": false } } }
  3. MCP Client設定のやり方 mcp clientの設定(clineの場合) Clineの設定 Configより以下追加 { "mcpServers": { "awslabs.aws-diagram-mcp-server":

    { "command": "uvx", "args": ["awslabs.aws-diagram-mcp-server"], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "autoApprove": [], "disabled": false } } }
  4. main.pyの内容(fast api) from mcp.server.fastmcp import FastMCP dict: APIからのJSONレスポンスを含む辞書。 … """

    # --- エンドポイント②: キーワードでレコードを検索--- params = {"resource_id": RESOURCE_ID, "q": q} @mcp.tool() async with httpx.AsyncClient() as client: async def search_records(q: str) -> dict: resp = await client.get(f"{CKAN_BASE}/datastore_search", params=params) """ resp.raise_for_status() CKAN DataStore API(datastore_search)の `q` パラメータを 使用して、 return resp.json() レコードをキーワード検索します。 … 引数: # --- エントリポイント: SSE トランスポートでサーバ起動--- q (str): 検索キーワード。 戻り値: if __name__ == "__main__": mcp.run()
  5. main.pyの内容(fast api) from mcp.server.fastmcp import FastMCP dict: APIからのJSONレスポンスを含む辞書。 … """

    このエンドポイント @mcp.tool() を変更できれば、 async def search_records(q: str) -> dict: 取得データは """ 変更可能 CKAN DataStore API(datastore_search)の `q` パラメータを 使用して、 ↓ レコードをキーワード検索します。 APIさえわかれば 引数: 独自MCPできそう # --- エンドポイント②: キーワードでレコードを検索--- q (str): 検索キーワード。 戻り値: params = {"resource_id": RESOURCE_ID, "q": q} async with httpx.AsyncClient() as client: resp = await client.get(f"{CKAN_BASE}/datastore_search", params=params) resp.raise_for_status() return resp.json() … # --- エントリポイント: SSE トランスポートでサーバ起動--if __name__ == "__main__": mcp.run()