German Real Estate Depreciation & Restnutzungsdauer について
このオープンソース MCP サーバーは、不動産所有者やアドバイザー向けに、ドイツの不動産減価償却と購入価格配分の概算を提供します。AfAMax の公開 API に計算を委ね、鑑定価格の照会や初回電話相談の予約も扱います。
主な機能
- 01減価償却額と残存耐用年数の推定
- 02土地と建物の購入価格配分
- 03AfAMax 鑑定商品の価格取得
- 04初回電話相談の空き枠検索
- 05メール認証による予約
活用シーン
- 01賃貸物件の減価償却額の概算
- 02土地と建物の取得価額の比較
- 03鑑定価格とサービス内容の確認
- 04無料の初回電話相談の検索と予約
MCP 対応
AfAMax の計算、価格照会、予約枠検索、予約ツールを MCP クライアントに提供します。公開 Streamable HTTP エンドポイントまたは stdio サーバーで利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.rundum.immo/mcpclaude mcp add --transport http immo-rundum-real-estate-appraisal https://mcp.rundum.immo/mcp{"mcpServers":{"immo-rundum-real-estate-appraisal":{"type":"http","url":"https://mcp.rundum.immo/mcp"}}}Cursor で開く{"servers":{"immo-rundum-real-estate-appraisal":{"type":"http","url":"https://mcp.rundum.immo/mcp"}}}VS Code で開く{"mcpServers":{"immo-rundum-real-estate-appraisal":{"type":"http","url":"https://mcp.rundum.immo/mcp"}}}{"mcpServers":{"immo-rundum-real-estate-appraisal":{"serverUrl":"https://mcp.rundum.immo/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
5| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| locale | any | いいえ | 上流の説明に使用する言語。デフォルトはドイツ語です。 |
| taxRate | any | いいえ | 個人の限界所得税率を小数で指定します(例:0.42)。/ Grenzsteuersatz。 |
| landArea | any | いいえ | 土地面積(平方メートル)。/ Grundstücksfläche。 |
| floorArea | number | はい | 居住または使用可能な床面積(平方メートル)。/ Wohn- bzw. Nutzfläche。 |
| propertyType | enum | はい | ドイツの住宅物件のカテゴリー。CONDOMINIUM = Eigentumswohnung、ROW_HOUSE = Reihenhaus、SEMI_DETACHED = Doppelhaushälfte、APARTMENT_BUILDING = Mehrfamilienhaus、RESIDENTIAL_COMMERCIAL_BUILDING = Wohn- und Geschäftshaus。CONDOMINIUM | SINGLE_FAMILY_HOUSE | TWO_FAMILY_HOUSE | ROW_HOUSE | SEMI_DETACHED | APARTMENT_BUILDING | RESIDENTIAL_COMMERCIAL_BUILDING |
| modernization | any | いいえ | 8 項目の近代化要素(Modernisierungselemente)の既知の状態:roof(Dach)、facadeInsulation(Fassadendämmung)、windowsDoors(Fenster und Außentüren)、heating(Heizung)、utilities(Leitungen)、bathrooms(Bäder)、interiorFitout(Innenausbau)、floorplanImprovement(Grundrissverbesserung)。可能な限り、8 項目すべてを尋ねてください。 |
| purchasePrice | any | いいえ | 購入価格の合計(EUR)。/ Kaufpreis。 |
| constructionYear | integer | はい | 当初の建築年。/ Baujahr。 |
| includedInventory | any | いいえ | 購入価格に含まれる動産・備品の金額(EUR)。 |
| standardLandValue | any | いいえ | 1 平方メートル当たりの標準地価(EUR)。/ Bodenrichtwert。 |
| coreRenovationYear | any | いいえ | 該当する場合、要件を満たす大規模改修の年。/ Jahr einer Kernsanierung。 |
| modernizationLevel | any | いいえ | 詳細な構成要素データがない場合に使用する、おおまかな近代化レベル。 |
| purchaseRelatedCosts | any | いいえ | ユーロ建ての購入関連費用(土地譲渡税、公証人費用、土地登記費用、仲介手数料)。/ Kaufnebenkosten。 |
詳細
Rundum Immo 不動産評価 MCP
ドイツの不動産の概算減価償却(AfA/建物減価償却)、残存耐用年数(Restnutzungsdauer)、取得価格の按分(Kaufpreisaufteilung)に対応するオープンソースの Model Context Protocol サーバーです。§ 7 Abs. 4 EStG に基づく法定償却率よりも賃貸物件を早く償却できるか、Restnutzungsdauergutachten を依頼する価値があるか、といった質問への回答に役立ちます。calculate_property_depreciation と calculate_purchase_price_allocation を公開し、両方の計算を公開 AfAMax API に委任します。また、AfAMax の評価料金と無料の初回相談予約のために、get_price_by_product、get_available_appointments、book_appointment も公開します。独自の評価計算式は AfAMax に帰属します。
ホステッドサーバー
公開 Streamable HTTP エンドポイントは次のとおりです。
https://mcp.rundum.immo/mcp
エンドユーザー用の API キーは不要です。呼び出しには、クライアントごとの制限、サービス全体のレート制限、不正利用防止策が適用されます。
ソースから stdio 経由で実行
Node.js 22.12 以降が必要です。
git clone https://github.com/Rundum-Immo/real-estate-appraisal-mcp.git
cd real-estate-appraisal-mcp
pnpm install --frozen-lockfile
pnpm build
ビルド済みサーバーを実行するよう MCP クライアントを設定し、チェックアウトのパスを絶対パスに置き換えてください。
{
"mcpServers": {
"rundum-real-estate-appraisal": {
"command": "node",
"args": ["/absolute/path/to/real-estate-appraisal-mcp/dist/transports/stdio.js"]
}
}
}
stdio サーバーは、匿名で AfAMax API を直接呼び出します。公開されている制限は、IP あたり毎分 30 リクエスト、ローリング 1 日あたり 500 リクエストです。テナント全体に適用される上限もある場合があります。プロトコルメッセージは stdout のみに、運用ログは stderr のみに書き込みます。
npm からインストールして stdio 経由で実行
Node.js 22.12 以降が必要です。npx を使って公開パッケージを起動するよう MCP クライアントを設定してください。
{
"mcpServers": {
"rundum-real-estate-appraisal": {
"command": "npx",
"args": ["-y", "@rundum-immo/real-estate-appraisal-mcp"]
}
}
}
ツール
不動産の減価償却
calculate_property_depreciation は、公開されている AfAMax リクエストの仕様全体を受け付けます。
- 必須項目:物件の種類、建築年、床面積。
- 任意項目:購入価格、土地面積、標準地価、備品、購入費用、大規模改修の年、限界税率、ロケール、大まかな近代化レベル、近代化の詳細な構成要素 8 項目の状態。
- 結果:年間および月間の AfA、法定 AfA との比較、推定節税額、建物価値の前提、近代化ポイント、残存耐用年数。
近代化データを省略すると、AfAMax は近代化が行われていないと仮定し、上限の推定値を算出します。複数戸の建物の場合は、建物全体の数値を入力するか、各住戸を個別に計算してください。結果は概算であり、税務、法律、評価に関する助言の代わりにはなりません。
入力例:
{
"propertyType": "CONDOMINIUM",
"constructionYear": 1970,
"floorArea": 85,
"purchasePrice": 350000,
"taxRate": 0.42,
"locale": "en"
}
購入価格の按分
calculate_purchase_price_allocation は、ドイツ連邦財務省(BMF)の方式を用いて、取得費用を減価償却対象外の土地と減価償却対象の建物に按分します。
- 必須項目:物件の種類、合計購入価格、購入日、建築年、床面積、土地面積、標準地価。
- 分譲マンションの場合は、共有持分の分子と分母も必要です。
- 住宅と商業施設の混合用途建物の場合は、商業用部分の割合が 50%未満か超えるかも必要です。
- 任意項目:購入費用、含まれる備品、ガレージと地下駐車場の台数、月間の純冷間賃料、ロケール。
- 結果:適用された方式、有用な代替案、土地と建物の割合および価値、減価償却基礎額、利用できない方式または使用できない方式の理由、開示された原価方式の既定値。
月間の純冷間賃料を入力すると、原価方式との照合に収益方式を利用できます。ガレージと屋根付き地下駐車場の台数を入力すると、それらのスペースが個別に評価されるため、原価方式の精度が向上します。比較評価は、公開仕様に鑑定士専用の要素が含まれていないため利用できません。結果は概算であり、税務または法律に関する助言の代わりにはなりません。
入力例:
{
"propertyType": "CONDOMINIUM",
"totalPurchasePrice": 500000,
"purchaseRelatedCosts": 40000,
"purchaseDate": "2024-06-15",
"constructionYear": 1975,
"floorArea": 75,
"landArea": 1200,
"standardLandValue": 2500,
"coOwnershipNumerator": 75,
"coOwnershipDenominator": 1000,
"undergroundParkingSpaces": 1,
"monthlyNetColdRent": 1400,
"locale": "en"
}
査定価格
get_price_by_product は、1つの製品について、ドイツのVATを含むAfAMaxの現在の価格表価格をEURで返します。製品は rnd(残存耐用年数評価書)、kurzgutachten、vollgutachten、kaufpreisaufteilung、または versetzbarkeitsgutachten です。
- オプション:物件の現地調査(
none、exterior、interior_exterior)、特急処理、および複数戸建物の1戸あたりの価格を計算するための住戸数を含む物件タイプ。 - 結果:内訳を含む合計金額、税抜価格、オプション比較用のすべての追加料金を記載した表、および製品ページへのソースリンク。
割引コードは適用されません。注文時に表示される価格が確定価格です。
{ "product": "rnd", "viewingType": "interior_exterior", "expressDelivery": true, "locale": "en" }
初回相談の予約
get_available_appointments は、AfAMaxチームとの無料・非拘束の15分間の電話相談について、平日の空き枠をEurope/Berlin時間で日ごとに一覧表示します。最大21日先まで(デフォルトは7日)を検索し、1日あたり最大32枠(デフォルトは8枠)を表示します。また、各日の空き枠数もすべて表示します。
{ "days": 1, "maxSlotsPerDay": 32, "locale": "en" }
book_appointment は、2段階の手順で空き枠を予約します。予約は、指定されたメールボックスにアクセスできる人だけが確定できます。
- 枠の
startDateTime、name、email(任意でphone、locale)を指定して呼び出します。AfAMaxから6桁のコードがメールで送信され、verificationIdが返されます。 verificationIdと、ユーザーがメールから確認したotpのみを指定して再度呼び出します。応答で予約が確定し、AfAMaxからカレンダーへの招待が送信されます。
コードの有効期限は15分で、試行回数は5回までです。予約枠がその間に埋まった場合や、メールアドレスが既存のAfAMaxアカウントに属している場合など、予約できないときは、次に行うべきこととAfAMaxウェブサイトで続行するためのリンクが返されます。
アーキテクチャ
MCP client -> this public adapter -> AfAMax public HTTPS API
このリポジトリに含まれるのは、トランスポート、検証、エラーマッピング、プレゼンテーションのコードのみです。査定の計算式、データベース、テナントロジック、レポート生成の内部実装は含まれていません。トランスポートに依存しないサーバーファクトリーは、stdioとステートレスなStreamable HTTPで共有されています。
開発
pnpm install
pnpm check
pnpm dev:stdio
MCP Inspectorでテストする
MCP Inspectorを使って、ローカルのstdioサーバーをビルドして起動します。
pnpm build
npx -y @modelcontextprotocol/inspector \
node --env-file-if-exists=.env dist/transports/stdio.js
ブラウザーで接続し、Toolsを開いて、上記の入力例を使って計算ツールを呼び出します。成功した応答には、読みやすい概要、構造化された出力、明示された前提条件とデフォルト値、および対応するAfAMax計算ツールへのソースリンクが含まれます。ソースリンクには送信した入力値が含まれるため、入力済みの状態で計算ツールが開き、内容の調整や記録に利用できます。
コマンドラインから登録済みのツールを確認するには、次のようにします。
npx -y @modelcontextprotocol/inspector \
--cli \
node --env-file-if-exists=.env dist/transports/stdio.js \
--method tools/list
HTTPトランスポートの開発
cp .env.example .env
pnpm dev:http
HTTPモードでは AFAMAX_SERVICE_TOKEN が必須です。クライアントごとの信頼されたレート制限は、Rundum Immoが発行し、対応するAfAMaxバックエンドの値と一致するよう設定されたサービス認証情報を使用する場合に限り機能します。任意のトークンでは、信頼された転送は有効になりません。HTTPモードでは、そのトークンと検証済みの最右端のプロキシクライアントアドレスを X-Afamax-Service-Token および X-Afamax-Client-IP で転送します。このトークンをMCPクライアントに公開しないでください。受信した転送ヘッダーをそのまま追加するのではなく、置き換えるプロキシの背後にデプロイしてください。
設定:
| 変数 | デフォルト | 用途 |
|---|---|---|
AFAMAX_API_URL | https://afamax.de/api/v1/afa-calculation | 公開計算エンドポイント |
AFAMAX_KPA_API_URL | https://afamax.de/api/v1/purchase-price-allocation | 公開購入価格按分エンドポイント |
AFAMAX_SERVICE_TOKEN | — | HTTPモードで必須の信頼されたサービス認証情報 |
AFAMAX_TIMEOUT_MS | 10000 | 上流へのタイムアウト |
HOST | 0.0.0.0 | リッスンアドレス |
PORT | 3000 | リッスンポート |
PUBLIC_HOSTS | mcp.rundum.immo | 許可するHostヘッダー名(カンマ区切り) |
LOG_LEVEL | info | debug、info、warn、または error |
HTTPサーバーは /mcp と /health を公開し、リクエストボディのサイズを64 KiBに制限します。また、HostとOriginの構文を検証し、認証されていないブラウザークライアント向けに制限のないCORSヘッダーを返します。
Docker でデプロイする
本番環境での HTTP ホスティングは、対応する AfAMax サービス認証情報が必要なため、Rundum Immo または明示的に許可された運用者を対象としています。一般ユーザーは認証情報なしで stdio トランスポートを実行できます。
docker build -t real-estate-appraisal-mcp .
docker run --rm -p 3000:3000 \
-e AFAMAX_SERVICE_TOKEN='credential-issued-by-rundum-immo' \
-e PUBLIC_HOSTS='localhost,mcp.rundum.immo' \
real-estate-appraisal-mcp
イメージは非 root ユーザーの node として実行されます。Coolify で mcp.rundum.immo を設定し、ポート 3000 にプロキシしてください。
データとプライバシー
このアダプターはステートレスで、ツールの入力やクライアントの生の IP アドレスを保存しません。計算の入力とクライアントの IP アドレスは AfAMax に送信され、AfAMax は不正利用防止のためにそのアドレスを使用します。AfAMax はアドレスのソルト付きハッシュと限定的な利用メタデータを 30 日間保存しますが、利用記録に生のアドレスは保存しません。計算や価格の入力に個人を特定できる情報を含めないでください。book_appointment では、ユーザーの氏名、メールアドレス、任意の電話番号を AfAMax に送信する必要があります。AfAMax はこれらを確認コードの送信と予約の確保に使用します。アダプターはこれらの情報を保存もログ記録もしません。AfAMax のプライバシー情報および SECURITY.md を参照してください。
ロードマップ
このリポジトリは、現在の計算、価格設定、予約のツールにとどまらず、機能を拡張できます。将来的に追加される可能性のある機能は次のとおりです。
- 物件および市場価値の推定
- 査定および評価レポートのワークフロー
- ドイツの不動産税および査定に関する追加ツール
今後のツールも同じ境界に従います。このリポジトリには公開 MCP 統合が含まれ、独自の査定ロジックは AfAMax に残ります。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。