【AI】PythonでMCPサーバーを自作してClaude Codeに登録する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

PythonでMCPサーバーを自作してClaude Codeから使えるようにしたい」とお考えではありませんか?

Claude CodeにDB検索や社内API呼び出しなど、独自のツールを覚えさせたいと考えている方へ。

MCP(Model Context Protocol)を使えば、Pythonの関数を数行書くだけでClaude Code専用のツールを作ることが可能です。

いずみ

公式SDKがv2にアップデートされてクラス名などが変わったので、最新版に合わせて解説します。

ということで、本記事ではPythonでMCPサーバーを自作してClaude Codeに登録する方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【AI】PythonでMCPサーバーを自作してClaude Codeに登録する方法

早速ですが、PythonでMCPサーバーを自作してClaude Codeに登録する方法を解説します。

MCP(Model Context Protocol)とは

MCPは、AnthropicがOSSとして公開しているオープンな標準規格です。

Claude CodeのようなAIアプリと、外部のツールやデータソースをつなぐ「共通の窓口」だとイメージするとわかりやすいです。

自作のMCPサーバーを立てれば、社内DBの検索や独自APIの呼び出しを、Claude Codeから自然言語で指示できるようになります。

事前準備

まずは、開発環境を準備します。

STEP
Python 3.10以上を用意する

MCP Python SDKはPython 3.10以上が必要です。

バージョンが古い場合は、事前にアップデートしておきましょう。

STEP
MCP Python SDKをインストールする

公式のPython SDKを、CLIツール込みでインストールします。

uv add "mcp[cli]"
# もしくは
pip install "mcp[cli]"
いずみ

2026年8月時点で配布されているmcpパッケージは、内部設計が刷新されたv2系です。

クラス名などがv1系から変わっているので、古い記事のコードをそのまま貼るとエラーになる点に注意してください。

MCPサーバーの実装(コード付き)

それでは、実際にMCPサーバーを実装してみます。

STEP
ツールとリソースを定義する

server.py を作成し、以下のように書きます。

from mcp.server import MCPServer

mcp = MCPServer("Weather")


@mcp.tool()
def get_weather(city: str) -> str:
    """指定した都市の今日の天気を取得する。"""
    return f"{city}の天気は晴れです。"


@mcp.resource("weather://{city}")
def weather_resource(city: str) -> str:
    """都市名から天気情報のリソースを返す。"""
    return f"{city}: 晴れ、気温28度"


if __name__ == "__main__":
    mcp.run()

@mcp.tool() を付けた関数がそのままClaude Codeから呼び出せるツールになります。

型ヒントとdocstringを書くだけで、JSON Schemaやリクエスト解析のコードは一切不要です。

いずみ

v1系のfrom mcp.server.fastmcp import FastMCPとほぼ同じ感覚で書けますが、クラス名がMCPServerに変わっています。

STEP
MCP Inspectorで動作確認する

Claude Codeに繋ぐ前に、公式のMCP Inspectorでツールが正しく動くか確認しておきます。

uv run mcp dev server.py

ブラウザで管理画面が開くので、get_weatherツールに値を入れて実行し、レスポンスを確認します。

Claude Codeに登録する

動作確認ができたら、Claude Codeにサーバーを登録します。

claude mcp add weather -- python server.py

-- より後ろがサーバーを起動するコマンドとして扱われます。

登録後は、Claude Code上で「東京の天気を教えて」のように話しかけるだけで、自作したget_weatherツールが呼ばれます。

いずみ

複数人でリモートから使いたい場合は、mcp.run(transport="streamable-http", port=3001)のようにHTTPで立てることもできます。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

FastMCPとMCPServerは何が違いますか?

どちらも同じSDKのサーバークラスです。

v1系(mcp<2)ではFastMCPという名前でしたが、2026年時点の最新v2系ではMCPServerに名称変更されています。

stdioとHTTP、どちらのトランスポートを使うべきですか?

Claude Codeからローカルで使うだけなら、デフォルトのstdioで十分です。

複数のクライアントから同時に使いたい場合や、リモートサーバーとして公開したい場合はstreamable-httpを選びます。

デバッグ中にprint()を使ってはいけないのはなぜですか?

stdioトランスポートは標準出力をそのままJSON-RPCの通信に使っています。

print()で出力すると通信プロトコルが壊れてサーバーがクラッシュするため、ログはloggingモジュールなどで標準エラー出力に出す必要があります。

まとめ

今回は、PythonでMCPサーバーを自作してClaude Codeに登録する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • MCP Python SDK v2はMCPServerクラスと@mcp.tool() @mcp.resource()デコレータだけでサーバーを定義できる。
  • claude mcp add <name> -- python server.pyでClaude Codeに登録できる。
  • stdioでのデバッグ出力はprint()ではなくloggingを使う。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次