GSA Per Diem

io.github.1102tools由 GitHub 帳號 1102tools 發布v0.2.6更新於 Oct 27, 2026

GSA Per Diem federal travel lodging and M&IE rates. 6 tools.

已驗證STDIO僅桌面位置與生活金融

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理查詢 GSA 聯邦差旅住宿與 M&IE 每日津貼費率,用於差旅成本估算與 IGCE。

可以做什麼
  • 依城市/州、郵遞區號或州查詢每日津貼費率,可選擇指定郡
  • 取得 M&IE 級距表與餐費組成明細
  • 依住宿加 M&IE 估算行程費用,首尾兩天以 75% 計算
  • 比較多個城市的費率
  • 查看已內建的會計年度,以及哪些工具會呼叫線上 API
  • 對跨多個費率區域的查詢標示歧義,並註明每筆結果的資料來源
適用情境
適合需要聯邦差旅報支上限來編列行程預算、估算差旅成本或編製 IGCE 的情況,並希望答案依據 GSA 公布的費率而非猜測。
執行需求
以 Python 套件形式透過 uvx(需 uv/Python 工具鏈)在本機以 stdio 執行,需桌面版 MCP 用戶端。內建年度的 ZIP、州、M&IE 以及城市加郡的查詢不需金鑰與網路。無法判定的城市名稱或未內建年度的線上查詢需要 api.data.gov 免費金鑰,放在 PERDIEM_API_KEY 中,並需要網路連線。
安裝前請注意
費率是報支上限而非實際飯店價格,僅涵蓋 CONUS,通常不含住宿稅。線上查詢會將請求送往 api.gsa.gov 並需要 PERDIEM_API_KEY 密鑰;未設定時這類請求只會回傳設定說明。--refresh-package 參數會在啟動時連線 PyPI。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 GSA Per Diem,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

gsa-perdiem-mcp

[price: free] [license: MIT] [tools: 7] [regression tests]

Free, open-source MCP server for the GSA Per Diem Rates API. Federal travel lodging and M&IE rates for IGCEs and travel cost estimation.

Overview, demo video and hosted setup: https://1102tools.com/mcp/gsa-per-diem

ZIP, state, and M&IE lookups for FY2021 onward work with no key and no network call: they are answered from GSA's published rate, ZIP, and M&IE files bundled in the package. For bundled fiscal years, city lookups, trip estimates and comparisons with a supplied county also work without a key or network call. City-name lookups without a county are answered from bundled Census place and GSA county data when that settles the rate area; other city names and lookups for unbundled years use the GSA Per Diem API and need a free api.data.gov key in PERDIEM_API_KEY. The hosted version needs no key for any lookup. See Local or hosted.

Regression tests, and realistic contractor travel questions checked against GSA's published rates before release. See testing.md.

Local or hosted

Local (desktop)Claude (hosted)ChatGPT (hosted)
Local setupInstallInstall
  • Local runs it on your computer, inside the Claude or ChatGPT desktop app or another AI app. You get your own full rate limits, and it relies only on the government service. Bundled ZIP, state, M&IE and city-plus-county requests need no key. Only live API requests need a free api.data.gov key. It doesn't update itself, so ask your AI to update it. You don't have to set it up by hand: give your AI this page's link and ask it to set it up or walk you through it.
  • Hosted is always up to date, needs no setup or keys, and works in Claude or ChatGPT anywhere.

Compare local and hosted · Matching prompts

What it does

Exposes GSA per diem rates as 7 MCP tools:

Core lookups

  • lookup_city_perdiem - Rates by city/state, from bundled Census and county data when the city falls in one rate area, otherwise through the GSA API (optional county selects one)
  • lookup_zip_perdiem - Rates by ZIP code from GSA's ZIP file (optional county)
  • lookup_state_rates - All NSA rates and the standard rate for a state
  • get_mie_breakdown - M&IE tier table (meal components)
  • get_data_status - Bundled fiscal years, their GSA source files, and which tools call the API

Workflow

  • estimate_travel_cost - Calculate trip per diem (lodging + M&IE with first/last day at 75%)
  • compare_locations - Compare rates across multiple cities

Rate areas are never guessed. GSA sets rates by county or locality. When a ZIP or city spans more than one rate area with different rates, results have status: "ambiguous" and list every candidate; supplying county selects one. A city is placed in a rate area by GSA's county definitions, using Census 2020 place-to-county records; a name Census doesn't list goes to GSA, and one GSA also doesn't recognize is unresolved rather than defaulting to the standard rate. When GSA lists several rate areas for a city, Census 2020 place-to-county records break the tie only if they place the city in exactly one of them. Every result names its source: the bundled GSA file (with SHA-256) or the API endpoint.

Bundled data. src/gsa_perdiem_mcp/data/ holds FY2021 onward, generated by scripts/build_snapshot.py from GSA's per diem files page and Census 2020 place/county code files. data/manifest.json records each source URL and SHA-256. The builder fails on schema drift, on any disagreement between GSA's rate and ZIP files, and on locality wording it has not been taught. FY2020 and fiscal years not yet bundled use the API.

API key (only for live API requests)

ZIP, state and M&IE requests for bundled fiscal years work without a key. So do lookup_city_perdiem, estimate_travel_cost and compare_locations when you supply a county for the bundled year. For example, ask for Boston, MA, in Suffolk County, or include county: "Suffolk" in each Boston comparison entry.

City-name requests that bundled Census and county data can't settle, and lookups for unbundled years, call api.gsa.gov and require an api.data.gov key: 1,000 requests per hour, yours alone. Without PERDIEM_API_KEY, those API requests return setup instructions. You can instead supply the work-location county for a bundled year to complete a city lookup or travel estimate without setting up a key.

Get a free key (takes 30 seconds):

  1. Go to api.data.gov/signup
  2. Enter your name and email: no approval, no wait
  3. Copy the key from the confirmation page
  4. Paste it into your client config as PERDIEM_API_KEY (see below)

The same key works for every api.data.gov-backed API (GSA Per Diem, NASA, FEC, FCC, etc.).

Installation

bash
uvx --refresh-package gsa-perdiem-mcp --from gsa-perdiem-mcp gsa-perdiem-mcp

Configuration

Use the configuration below as the server definition and adapt its placement to your compatible MCP client. For practical requests using this source, see the prompt library.

With your key:

json
{  "mcpServers": {    "gsa-perdiem": {      "command": "uvx",      "args": ["--refresh-package", "gsa-perdiem-mcp", "--from", "gsa-perdiem-mcp", "gsa-perdiem-mcp"],      "env": {        "PERDIEM_API_KEY": "paste-your-api-data-gov-key-here",        "FEDERAL_API_MIN_INTERVAL_SECONDS": "4"      }    }  }}

The server defaults FEDERAL_API_MIN_INTERVAL_SECONDS to 0.6 for keyed requests and caps them at 950 per hour. The example above sets a slower 4; either works. Per Diem and Regulations.gov processes using the same api.data.gov key share the gate.

No-key setup (bundled ZIP, state, M&IE, and city-plus-county lookups, estimates and comparisons work):

json
{  "mcpServers": {    "gsa-perdiem": {      "command": "uvx",      "args": ["--refresh-package", "gsa-perdiem-mcp", "--from", "gsa-perdiem-mcp", "gsa-perdiem-mcp"]    }  }}

The --refresh-package flag tells uv to check PyPI for a newer release each time your client launches the server, so fixes arrive automatically; without it, uv keeps serving whatever version it first cached. It adds a moment of network time at startup, so raise your platform's MCP startup timeout if it enforces a short one.

Restart the client and the tools appear.

Example prompts

  • "What's the per diem rate for Washington DC in FY2026?"
  • "Estimate travel costs for 4 nights in Boston in March."
  • "Compare per diem rates for DC, New York, and San Francisco."
  • "What are all the NSA per diem locations in Virginia?"
  • "Show me the M&IE meal breakdown for the $92 tier."
  • "Build a travel estimate: 3 trips to Seattle (4 nights each) and 2 trips to DC (3 nights each)."

Important: maximum reimbursement, not actual prices

Per diem rates are federal reimbursement ceilings per 41 CFR 301-11. They are not actual hotel prices. CONUS only. Non-foreign OCONUS rates (Alaska, Hawaii, territories) are set by DoD (DTMO); foreign rates by the State Department. Lodging taxes generally not included. First/last travel day M&IE at 75%.

Companion tools

Use alongside bls-oews-mcp (wage data) and gsa-calc-mcp (ceiling rates) for complete IGCE development. Per diem covers the travel component; BLS and CALC+ cover labor.

License

MIT

Trips crossing months or fiscal years. Add each month's lodging_total at the applicable fiscal year rate. Calculate M&IE once across the actual travel days: 75% on the departure and return days, 100% on intervening days. Do not add separate monthly mie_total or grand_total values because each estimate assumes its own departure and return. For example, four nights at a $92 daily M&IE rate cost $414 M&IE over five travel days; two independent two-night estimates sum to $460 M&IE.

來源:servers/gsa-perdiem-mcp/readme.md,提交 7ff19f1

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.2.6最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分