0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rust + Docker で MCP サーバを構築する

Posted at

Rust で開発した MCP サーバを Docker で簡単に構築・運用できるようにしたので、その手順をまとめます。
ローカル開発やチーム開発、CI/CD でも活用できる構成です。

1.ディレクトリ構成

rust_mcp/
├── compose.yml
└── rust/
    ├── Dockerfile
    └── app/
        └── ...(Rustプロジェクトのソース)

2.Dockerfile の内容

FROM rust:1.86.0

WORKDIR /app

# 必要なツールをインストール
RUN apt-get update && apt-get install -y \
    build-essential \
    pkg-config \
    libssl-dev \
    && rm -rf /var/lib/apt/lists/* \
    # Rustの追加コンポーネントとツールをインストール
    && rustup component add rust-src \
    && cargo install cargo-edit

# シェルスクリプトを作成
RUN echo '#!/bin/bash \n\
set -e \n\
\n\
# プロジェクト初期化チェック \n\
if [ -e "Cargo.toml" ]; then \n\
    echo "Existing project found. Ready to work." \n\
else \n\
    echo "No project found. Initializing a new project..." \n\
    cargo init --bin \n\
    echo "New Rust project created successfully!" \n\
fi \n\
\n\
# 引数があれば実行、なければコンテナを維持 \n\
if [ $# -eq 0 ]; then \n\
    echo "No command specified, keeping container alive..." \n\
    exec tail -f /dev/null \n\
else \n\
    echo "Executing command: $@" \n\
    exec "$@" \n\
fi \n\
' > /entrypoint.sh \
&& chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
CMD []

ポイント
・Rust公式イメージをベースに、ビルドに必要なツールやライブラリをインストール
・cargo-edit など便利ツールも導入
・プロジェクトがなければ cargo init で自動生成
・コマンド未指定時はコンテナを維持(tail -f /dev/null)

compose.yml 設定

compose.yml
services:
  rust:
    build:
      context: ./rust
      dockerfile: Dockerfile
    ports:
      - "8083:8083"
    volumes:
      - ./rust/app:/app
    tty: true
    stdin_open: true
    networks:
      mynetwork:
        aliases:
          - rust_backend
    restart: unless-stopped

networks:
  mynetwork:
    driver: bridge

ポイント
・./rust/app を /app にマウントし、ホストとコンテナでソースを共有
・ポート 8083 を公開(必要に応じて変更)
・独自ネットワーク mynetwork で他サービスと連携可能

4.使い方

ビルド&サーバ起動

$ docker compose up -d --build

コンテナに入りRustプロジェクトをコンパイル

$ docker compose exec rust bash
$ cargo build

ポイント
・コンパイルが成功すると「/app/target/release/」のディレクトリに「mcp-doubler」が生成される、

5.mcp.jsonを編集

{
    "mcpServers": {
        "mcp-doubler": {
            "command": "docker",
            "args": [
                "exec",
                "-i",
                "rust_mcp-rust-1",
                "/app/target/release/mcp-doubler",
                
            ]
        }
    }
}

mco-doublerのインジケーターが緑になれば起動できています。
image.png

実行結果

image.png

  1. まとめ
    Rust + Docker + docker-compose で、開発・運用がとても楽になります。
    チーム開発やCI/CDにもそのまま流用できるので、ぜひ活用してみてください!

参考
Rust公式Dockerイメージ
docker-compose公式ドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?