mcp-server-demo について
mcp-server-demo は、業務リクエストデータを扱う MCP の概念実証サーバーで、Azure OpenAI を使うよう設定するクライアントも含みます。SQL Server に接続し、リクエスト記録の検索と絞り込みを行うツールを提供します。
主な機能
- 01SQL Server データベースへの接続
- 02業務リクエストの検索
- 03検索結果の絞り込み
- 04ローカルまたは Docker での実行
活用シーン
- 01フィールド条件を指定してリクエストを検索
- 02列の値で検索結果を絞り込む
- 03MCP サーバーとクライアントの概念実証をテスト
MCP 対応
業務リクエストの検索と結果の絞り込みを行う MCP サーバーで、ホスト、ポート、サーバー URL を設定できます。README には Azure OpenAI を利用するクライアントも記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Business Request Server
ほかの PoC で使用するデモ用 PoC MCP サーバー
開発者
設定
サーバーまたはクライアントを実行する前に、サンプルから .env ファイルを作成します。
cp .env.example .env
.env を編集し、データベースの認証情報と Azure OpenAI の設定を入力します。
| 変数 | 説明 | 必須 | デフォルト |
|---|---|---|---|
BITS_DB_SERVER | SQL Server データベースのホスト名または IP アドレスです。 | はい | missing.domain |
BITS_DB_USERNAME | データベース認証に使用するユーザー名です。 | はい | missing.username |
BITS_DB_PWD | データベース認証に使用するパスワードです。 | はい | missing.password |
BITS_DB_DATABASE | 接続する特定のデータベースの名前です。 | はい | missing.dbname |
HOST | MCP サーバーがバインドするホストアドレスです。 | いいえ | 0.0.0.0 |
PORT | MCP サーバーがリッスンするポートです。 | いいえ | 8000 |
MCP_SERVER_URL | MCP サーバーにアクセスできる URL です(クライアントで使用)。 | いいえ | http://127.0.0.1:8000/mcp |
CORS_ALLOW_ORIGINS | MCP サーバーへの接続を許可するオリジンをコンマ区切りで指定します。 | いいえ | http://localhost,http://127.0.0.1 |
CORS_ALLOW_CREDENTIALS | CORS リクエストで認証情報(Cookie、認証ヘッダー)を許可するかどうかを指定します。 | いいえ | false |
AZURE_OPENAI_ENDPOINT | Azure OpenAI リソースのエンドポイント URI です(クライアントで使用)。 | はい(クライアント) | - |
AZURE_OPENAI_VERSION | Azure OpenAI の API バージョンです。 | いいえ | 2024-05-01-preview |
CLIENT_ID | 認証用の OAuth2 クライアント ID です(実験的機能)。 | いいえ | - |
CLIENT_SECRET | 認証用の OAuth2 クライアントシークレットです(実験的機能)。 | いいえ | - |
REDIRECT_URI | 認証用の OAuth2 リダイレクト URI です(実験的機能)。 | いいえ | - |
インストール
uv venv
uv pip install -e .
# then run it locally
mcp dev server.py
# or alternatively
python server.py
表示された URL にアクセスして、サーバーをテストします。
次に、Templates や search_business_requests などの関数をテストできます。
query に次の値を渡します。
{
"query_filters": [
{
"name": "BR_SHORT_TITLE",
"value": "Server",
"operator": "="
}
]
}
select_fields には次の値を渡します。
{
"fields": [
"BR_SHORT_TITLE"
]
}
その後、filter_results を使って結果をフィルタリングできます。
[
{
"column": "RPT_GC_ORG_NAME_EN",
"operator": "contains",
"value": "Correctional"
}
]
Docker で実行する
docker build -t mcp-bits:local .
docker run -p 8080:8080 --env-file ./.env --name mcp-bits-container mcp-bits:local
pymssql の問題
Mac OSX での pymssql
pymssql は FreeTDS に依存しているため、事前に brew install freetds を実行してインストールしてください。
その後、コードの実行で問題が発生した場合は、次の手順を実行してください。
uv pip uninstall pymssql
uv pip install --pre --no-binary :all: pymssql --no-cache --no-build-isolation
また、uv の pyproject.toml に追加することもできます。
[tool.uv]
no-binary-package = ["pymssql"]
これで、すべて動作するはずです。
注:既知の問題として cython==3.1.0 に関するものがあります。こちら を参照してください。
現時点での回避方法は次のとおりです(この問題が修正されたら、これを削除してください)。
uv pip uninstall pymssql
export CFLAGS="-I$(brew --prefix freetds)/include"
export LDFLAGS="-L$(brew --prefix freetds)/lib"
uv pip install "packaging>=24" "setuptools>=54.0" "setuptools_scm[toml]>=8.0" "wheel>=0.36.2" "Cython==3.0.10" "tomli"
uv pip install --pre --no-binary :all: pymssql --no-cache --no-build-isolation
デプロイ
CI/CD
TODO
手動
CLI を使って Azure に手動でデプロイする方法は次のとおりです。
az webapp deployment source config-local-git \
--name <WebAppName> \
--resource-group <ResourceGroupName>
git remote add azure <GitURLFromPreviousStep>
git push azure main
ドキュメント
- デモの構築方法については、チュートリアルとしてこちらを使用してください。
- FastMCP のドキュメント
- MCP OAuth 2.0 認証
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。