GSA Per Diem

com.1102tools由 1102tools.com 发布官方发布者v1.2.8更新于 Oct 29, 2026

GSA Per Diem access readiness, lodging, and meals and incidental expense rates. 7 tools.

发布方自己的服务:Acquisition.gov

已验证Streamable HTTP可网页运行位置与生活金融商业与电商

概览

AI 生成的概览

查询美国联邦 GSA 每日津贴(住宿与 M&IE)费率并估算差旅费用,数据来自内置 GSA 文件或实时 GSA API。

可以做什么
  • 按城市与州、按 ZIP 或 ZIP+4 查询每日津贴费率,或列出某州所有非标准地区费率
  • 查看 M&IE 分档表,含早餐、午餐、晚餐、杂费及首末日金额
  • 按住宿加 M&IE 估算指定晚数与出行月份的总差旅费用
  • 最多比较 25 个地点的费率,按每日总额从高到低排序
  • 报告已内置的财年、其 GSA 源文件以及哪些工具会调用 API
适用场景
适合联邦差旅规划、IGCE 编制和报销估算,需要官方 CONUS 每日津贴上限而非实际酒店价格时使用。FY2021 起的已内置财年,ZIP、州、M&IE 及城市加县查询可离线完成。
运行要求
可作为托管远程端点使用,无需配置或密钥;也可通过 uvx 在本地运行 PyPI 包(Python)。未内置财年或内置数据无法定位的城市名需实时 API 请求,需在 PERDIEM_API_KEY 中填入免费的 api.data.gov 密钥。可选 FEDERAL_API_MIN_INTERVAL_SECONDS 控制请求间隔。
安装前请注意
费率是联邦报销上限而非实际价格,仅覆盖 CONUS,通常不含住宿税。跨多个费率区的 ZIP 或城市会返回候选地区而非单一答案。实时请求会把查询发送至 api.gsa.gov,并与使用同一密钥的其他 api.data.gov 进程共享限流;该密钥属凭据,应妥善保管。

安装

在 SourceWeft 中

  1. 打开 控制台中的 GSA Per Diem,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.1102tools%2Fgsa-perdiem-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "gsa-per-diem": {
      "type": "http",
      "url": "https://gsa-perdiem.1102tools.com/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,提交 b30d160

工具

7

get_data_status

Get Per Diem Data Status

Report which fiscal years are bundled, their GSA source files, and which tools call the GSA API. ZIP, state, and M&IE lookups for bundled fiscal years are answered from GSA's published files with no network call. City requests with a supplied county for a bundled year also need no key or network call. City-name requests without a county, and unbundled years, use the live GSA Per Diem API. Credential presence is reported without revealing or validating any value.

无需输入参数。

lookup_city_perdiem

Lookup City Per Diem

Look up federal per diem rates for a city and state. Returns lodging rates (monthly breakdown for seasonal locations) and M&IE (meals and incidental expenses) for the specified fiscal year. state: 2-letter USPS code (e.g., 'DC', 'VA', 'MD', 'CA'). fiscal_year: defaults to current FY. FY runs Oct 1 - Sep 30, so FY2026 = 2025-10-01 through 2026-09-30. county: optional county or independent city (e.g., 'Fairfax', 'Hampden', 'Richmond city'). When given for a bundled fiscal year the rate is determined from GSA's county definitions without an API call. Without county, the GSA Per Diem API resolves the city name to rate areas. The result's status is: - resolved: one rate applies (exact name, composite name such as 'Boston / Cambridge', GSA's own city-to-county resolution, or a Census county tie-break among GSA's candidates) - ambiguous: GSA lists several rate areas for the city; candidates are returned and no single rate is chosen - unresolved: GSA did not recognize the city; no rate is asserted CONUS only: AK, HI, and territories return a pointer to DoD/State rates.

输入参数city必填state必填countyfiscal_year

lookup_zip_perdiem

Lookup ZIP Per Diem

Look up federal per diem rates by ZIP code. Accepts 5-digit ZIPs or ZIP+4 (e.g., '02101' or '02101-1234'). Bundled fiscal years are answered from GSA's published ZIP file with no API call; other years use the GSA Per Diem API. GSA sets rates by county or locality, and about 1,800 ZIPs span more than one rate area. The result's status is 'resolved' when every rate area GSA lists for the ZIP has the same rate, otherwise 'ambiguous' with all candidates and no single rate chosen. county (optional) selects the candidate for that county.

输入参数countyzip_code必填fiscal_year

lookup_state_rates

Lookup State Rates

Get all Non-Standard Area (NSA) per diem rates for a state. Returns every city/county with rates above the standard rate in that state, plus the state's standard rate. Seasonal areas include their lodging rate for each month (lodging_by_month). Useful for comparing rates across cities within a state or for building a travel IGCE with multiple destinations. Bundled fiscal years are answered from GSA's published files with no API call. CONUS only: AK, HI, and territories return a pointer to DoD/State rates instead of an empty list that would falsely imply the standard CONUS rate applies there.

输入参数state必填fiscal_year

get_mie_breakdown

Get M&IE Breakdown

Get the M&IE (meals and incidental expenses) tier breakdown table. Returns all M&IE tiers with breakfast, lunch, dinner, incidental, and first/last day (75%) amounts, for showing the meal component of a per diem estimate. Bundled fiscal years come from GSA's published M&IE breakdown with no API call. M&IE does NOT vary seasonally (unlike lodging). The tier is set per location and applies year-round.

输入参数fiscal_year

estimate_travel_cost

Estimate Travel Cost

Estimate total per diem cost for a trip. Calculates lodging + M&IE for the specified number of nights. First and last travel days use 75% M&IE per 41 CFR 301-11.20. travel_month: 3-letter abbreviation (Jan, Feb, ..., Dec). Every night is priced at that month's rate; for a trip that crosses into another month or fiscal year, add only each month's lodging_total at the applicable fiscal year rate. Calculate M&IE once across the actual trip days, using 75% only on the actual departure and return days. Do not add separate monthly mie_total or grand_total values: each estimate assumes a new trip. If omitted, uses the max monthly lodging rate (conservative estimate for IGCE). fiscal_year: if omitted, the FY of the next occurrence of travel_month (or the current FY when no month is given). Pass it for a trip that already happened. county: optional; selects the rate area when the city spans more than one (see lookup_city_perdiem). No estimate is produced when the city is ambiguous or unresolved; the candidate rate areas are returned instead. Does NOT include airfare or ground transportation. Formula: - Lodging = nightly_rate * num_nights - M&IE = full_day_rate * (travel_days - 2) + first/last_day_rate * 2 - Travel days = num_nights + 1 num_nights bounded 1-365.

输入参数city必填state必填countynum_nights必填fiscal_yeartravel_month

compare_locations

Compare Locations

Compare per diem rates across multiple locations. locations: list of {"city": "...", "state": "XX"} dicts (optionally with "county"), max 25 entries. Returns rates sorted by max daily total (highest first). Ambiguous or unresolved cities are listed with their status and candidate rate areas instead of a rate. Useful for travel IGCE development when comparing destination costs.

输入参数locations必填fiscal_year

版本历史

11
  1. v1.2.8最新Oct 29, 2026
  2. v1.2.7Oct 21, 2026
  3. v1.2.6Oct 12, 2026
  4. v1.2.5Oct 11, 2026
  5. v1.2.4Oct 10, 2026
  6. v1.2.3Oct 10, 2026
  7. v1.2.0Sep 27, 2026
  8. v1.1.1Sep 26, 2026
  9. v1.1.0Sep 26, 2026
  10. v1.0.11Sep 25, 2026
  11. v1.0.10Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 1102tools 集成