Skip to main content
Glama
jyeyeyej
by jyeyeyej

Mini Agent 03 · MCP

mini_agent_03_toolの旅行ToolをMCP Serverとして分離した小さな実践プロジェクトです。FastAPI BackendはTool関数を直接importせず、MCP Clientを通じてToolを発見し呼び出します。

Streamlit :8501
  → FastAPI Backend :8000
    → Travel MCP Server :8010/mcp (Streamable HTTP)
    → Policy MCP Server (stdio 자식 프로세스)
    → OpenAI Responses API가 한 번에 Tool 하나를 선택
      → Tool 결과를 돌려주고 필요한 만큼 반복

Travel ServerはBackendと独立したプロセスとポートで実行します。Policy ServerはBackendがstdio子プロセスとして実行します。1つのAgentが2つのTransportを一緒に使いながら、Server prefixとルーティング、順次Tool依存性を学習します。

stdio学習例で変わる点

Tool実装とMCPのtools/listtools/callの意味は変わりません。変わるのはServerの実行主体とメッセージを伝えるTransportです。

区分

Policy MCP

Travel MCP

Transport

stdio

Streamable HTTP

Server実行

Backendが子プロセスとして自動実行

最初のターミナルで独立実行

アドレス

Pythonファイルと実行コマンド

http://127.0.0.1:8010/mcp

ポート

なし

8010

Server寿命

Client Sessionとともに終了

Backendと無関係に継続実行

提供Tool

ホテルポリシー照会

天気・ホテル検索

stdio
Backend → 자식 MCP Server

Streamable HTTP
Backend :8000 → 네트워크 → MCP Server :8010

FrontendはMCP Serverを直接呼び出しません。ユーザーのリクエストは常にAgent Backendを経由し、GPTがToolを提案し、Backendが権限確認・MCP呼び出し・結果伝達を担当します。GPTはMCP Toolを直接実行しません。

Related MCP server: Trip Planner MCP Server

提供機能

  • GET /health: Backend状態

  • GET /api/mcp/status: 別のMCP Server接続状態

  • GET /api/mcp/tools: MCP Serverが公開したToolの発見

  • GET /api/mcp/resources: MCP Resourceの発見

  • POST /api/mcp/run: 質問 → Tool選択 → MCP呼び出し → 回答Trace

  • GET /api/mcp/baggage-policy: MCP Resourceの読み取り

実習および実行順序

3つのプロセスの実行順序を守ります。前の段階が正常か確認してから次の段階に進むと、どの接続で問題が発生したか簡単に区別できます。

0. 구조 확인
→ 1. 가상환경 준비
→ 2. OpenAI 환경변수 설정
→ 3. MCP Server 실행 (:8010)
→ 4. Backend 실행 (:8000)
→ 5. Backend에서 MCP 연결 확인
→ 6. GPT·Tool·Resource API 확인
→ 7. Frontend 실행 (:8501)
→ 8. 화면에서 전체 Trace 확인

0段階・呼び出し構造の確認

コードを実行する前に、次の4つのファイルの役割を確認します。

ファイル

役割

mcp_server/travel_server.py

天気・ホテルToolとResourceを公開するHTTP Server

mcp_server/policy_stdio_server.py

ホテルIDでポリシーを照会するstdio Server

backend/app/mcp_client.py

2つのTransportのSessionを生成・管理するClient

backend/app/agent.py

Tool prefix・ルーティングと順次Agent Loop管理

1段階・仮想環境とパッケージ準備

最初の1回だけ実行します。

cd C:\mini_agent_st\mini_agent_03_mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt

すでに.venvを作成した場合は、次の授業からはアクティベーションのみ行います。

cd C:\mini_agent_st\mini_agent_03_mcp
.\.venv\Scripts\Activate.ps1

2段階・OpenAI環境変数設定

.env.example.envにコピーし、発行されたAPI Keyを入力します。

Copy-Item .env.example .env
OPENAI_API_KEY=발급받은_API_KEY
OPENAI_MODEL=gpt-4.1-mini

API KeyはGitにCommitしたり、画面やログに出力したりしません。

3段階・MCP Server実行

最初のターミナルを開いて実行します。

cd C:\mini_agent_st\mini_agent_03_mcp
.\.venv\Scripts\Activate.ps1
python .\mcp_server\travel_server.py

このターミナルは終了しません。MCP endpointはhttp://127.0.0.1:8010/mcpです。コンソールに127.0.0.1:8010でサーバーが実行されたという案内が表示されたら、次の段階に進みます。

4段階・FastAPI Backend実行

2番目のターミナルを開いて実行します。

cd C:\mini_agent_st\mini_agent_03_mcp
.\.venv\Scripts\Activate.ps1
uvicorn backend.app.main:app --reload --port 8000

Backend自体の状態を確認します。

Invoke-RestMethod http://127.0.0.1:8000/health

予想結果の核心値は次のとおりです。

status      : ok
mcp_servers : travel=streamable-http, policy=stdio

5段階・BackendとMCP Server接続確認

3番目のPowerShellターミナルで実行します。

Invoke-RestMethod http://127.0.0.1:8000/api/mcp/status

正常ならstatus=connectedtool_count=3が表示されます。ここで503が発生した場合は、Frontendを実行する前に、最初のターミナルのMCP ServerとTRAVEL_MCP_URLを先に確認します。

6段階・GPT、ToolとResource API確認

MCP Serverが公開したToolを確認します。

Invoke-RestMethod http://127.0.0.1:8000/api/mcp/tools |
    ConvertTo-Json -Depth 10

travel__get_current_weathertravel__search_hotelspolicy__get_hotel_policyと各arguments Schemaが表示される必要があります。

Agent全体のフローを呼び出します。

$body = @{
    question = "부산 날씨와 15만원 이하 호텔을 찾고 호텔 정책도 알려 주세요."
} | ConvertTo-Json
Invoke-RestMethod `
    -Uri http://127.0.0.1:8000/api/mcp/run `
    -Method Post `
    -ContentType "application/json" `
    -Body $body |
    ConvertTo-Json -Depth 10

応答で次の順序を確認します。

available_tools
→ travel__get_current_weather
→ travel__search_hotels
→ 검색 결과에서 hotel_id 획득
→ policy__get_hotel_policy(hotel_id)
→ Function Call이 없는 응답에서 Loop 종료
→ 일반적으로 llm_calls = Tool 실행 수 + 1
→ answer

Resourceも確認します。

Invoke-RestMethod http://127.0.0.1:8000/api/mcp/baggage-policy |
    ConvertTo-Json -Depth 10

7段階・Streamlit Frontend実行

4番目のターミナルを開いて実行します。

cd C:\mini_agent_st\mini_agent_03_mcp
.\.venv\Scripts\Activate.ps1
streamlit run frontend\app.py --server.port 8501

ブラウザでhttp://127.0.0.1:8501を開きます。FastAPI Swaggerはhttp://127.0.0.1:8000/docsです。

8段階・画面実習

次の順序でボタンを実行します。

  1. 上部のMCP接続状態がconnectedか確認します。

  2. MCP Tool発見を押してTool名とSchemaを確認します。

  3. 基本質問でMCP Agentを実行します。

  4. 1ラウンドでToolが1つずつ実行されるか確認します。

  5. ホテル検索結果のhotel_idがPolicy Tool argumentsとして渡されるか確認します。

  6. 質問を서울에서 15만원 이하 호텔을 찾아 주세요.に変えてTool選択を比較します。

  7. 수하물 정책 읽기でToolではなくResource照会を確認します。

終了順序

各実行ターミナルでCtrl+Cを押します。

Frontend 종료
→ Backend 종료
→ MCP Server 종료

MCP Serverだけを先に終了した後、/api/mcp/statusを再度呼び出すと、Backendが503を返す接続失敗の実習もできます。

比較ポイント

mini_agent_03_tool

mini_agent_03_mcp

BackendがTool関数を直接import

BackendはMCP Clientのみ使用

ToolリストがAgentコードに固定

tools/listでサーバーから発見

Python関数を直接呼び出し

tools/callプロトコル呼び出し

アプリ内部Context

URIベースのMCP Resource

環境変数

BACKEND_API_URL=http://127.0.0.1:8000
TRAVEL_MCP_URL=http://127.0.0.1:8010/mcp
MCP_HOST=127.0.0.1
MCP_PORT=8010
OPENAI_API_KEY=발급받은_API_KEY
OPENAI_MODEL=gpt-4.1-mini

FrontendはBackendのみを呼び出し、MCP Server URLと実行権限はBackendが管理します。

Backendは2つのMCP Serverで発見したTool SchemaにServer prefixを付けてOpenAI Responses APIに渡します。parallel_tool_calls=Falseなので、GPTは1ラウンドでToolを1つ提案します。BackendがTool結果を返すとGPTが次のToolを選択し、Function Callなしで回答するまでAgent Loopを繰り返します。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.

  • TravelMind: 8 MCP tools for travel (12306 trains, flights, hotels, geocode, planning, policy).

  • AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jyeyeyej/mini_team_03_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server