API ВЕГА
English

gsa-perdiem-mcp

Бесплатный MCP-сервер с открытым исходным кодом для GSA Per Diem Rates API. Ставки федеральных суточных на проживание и M&IE для расчётов IGCE и оценки транспортных расходов.

Обзор, демонстрационное видео и размещённая версия: https://1102tools.com/mcp/gsa-per-diem

Запросы по ZIP-коду, штату и M&IE для FY2021 и более поздних лет работают без ключа и сетевых обращений: ответы формируются на основе опубликованных GSA файлов со ставками, ZIP-кодами и M&IE, включённых в пакет. Для лет, данные по которым включены в пакет, запросы по городам, оценка поездок и сравнение с указанным county также работают без ключа и сетевых обращений. Запросы по названию города без указания округа обрабатываются на основе включённых в пакет данных Census о населённых пунктах и данных GSA об округах, если это позволяет однозначно определить зону ставок. Для остальных названий городов и запросов за годы, данные по которым не включены в пакет, используется GSA Per Diem API — для этого нужен бесплатный ключ api.data.gov, указанный в PERDIEM_API_KEY. Размещённая версия не требует ключа ни для одного запроса. См. раздел «Локальная или размещённая версия».

Перед выпуском запускаются регрессионные тесты, а реалистичные запросы о поездках подрядчиков проверяются по опубликованным ставкам GSA. Подробнее: testing.md.

Локальная или размещённая версия

Локальная (на компьютере)Claude (размещённая)ChatGPT (размещённая)
Локальная настройкаУстановитьУстановить
  • Локальная версия работает на вашем компьютере — в настольном приложении Claude или ChatGPT либо в другом AI-приложении. Она использует весь доступный вам лимит запросов и обращается только к государственному сервису. Запросы по ZIP-кодам, штатам, M&IE и сочетанию города с округом, если данные включены в пакет, не требуют ключа. Ключ api.data.gov нужен только для запросов к API. Локальная версия не обновляется автоматически, поэтому попросите AI обновить её. Настраивать сервер вручную не обязательно: отправьте AI ссылку на эту страницу и попросите выполнить настройку или провести вас через неё.

  • Размещённая версия всегда актуальна, не требует настройки или ключей и доступна в Claude и ChatGPT из любой точки мира.

Сравнить локальную и размещённую версии · Примеры запросов

Возможности

Предоставляет ставки суточных GSA через 7 инструментов MCP:

Основные запросы

  • lookup_city_perdiem — ставки по городу и штату. Если город относится к одной зоне ставок, используются данные Census и об округах, включённые в пакет; в остальных случаях выполняется запрос к GSA API. Параметр county позволяет выбрать конкретный округ.

  • lookup_zip_perdiem — ставки по ZIP-коду на основе файла GSA с ZIP-кодами. Параметр county указывается по желанию.

  • lookup_state_rates — все ставки NSA и стандартная ставка для штата.

  • get_mie_breakdown — таблица уровней M&IE с разбивкой по компонентам питания.

  • get_data_status — финансовые годы, данные по которым включены в пакет, исходные файлы GSA и сведения о том, какие инструменты обращаются к API.

Рабочие сценарии

  • estimate_travel_cost — расчёт суточных за поездку: проживание и M&IE, причём для первого и последнего дня применяется ставка 75%.

  • compare_locations — сравнение ставок для нескольких городов.

Зоны ставок никогда не определяются предположительно. GSA устанавливает ставки для округов или отдельных населённых пунктов. Если ZIP-код или город охватывает несколько зон с разными ставками, результат получает статус status: "ambiguous" и содержит все возможные варианты. Указать нужный вариант можно с помощью параметра county. Зона ставок для города определяется по данным GSA об округах с использованием записей Census 2020 о соответствии населённых пунктов округам. Если Census не содержит такого названия, запрос направляется в GSA. Если название не распознаёт и GSA, результат получает статус unresolved, а стандартная ставка не подставляется. Если GSA указывает для города несколько зон ставок, неоднозначность разрешается по записям Census 2020 о соответствии населённых пунктов округам — но только когда эти записи относят город ровно к одной из указанных зон. В каждом результате указано его source: включённый в пакет файл GSA с SHA-256 или конечная точка API.

Данные в пакете. Каталог src/gsa_perdiem_mcp/data/ содержит данные начиная с FY2021. Они формируются скриптом scripts/build_snapshot.py на основе страницы GSA с файлами суточных и файлов Census 2020 с кодами населённых пунктов и округов. В data/manifest.json записаны URL источников и SHA-256 каждого файла. Сборка завершается с ошибкой, если изменилась схема данных, если ставки в файлах GSA со ставками и ZIP-кодами не совпадают или если встречается описание населённого пункта, для обработки которого нет соответствующей логики. Для FY2020 и финансовых лет, данные по которым ещё не включены в пакет, используется API.

Ключ API (только для запросов к API)

Запросы по ZIP-кодам, штатам и M&IE за финансовые годы, данные по которым включены в пакет, выполняются без ключа. То же относится к lookup_city_perdiem, estimate_travel_cost и compare_locations, если для года, данные по которому включены в пакет, указан округ. Например, можно запросить Boston, MA, в округе Suffolk или добавить county: "Suffolk" для каждого Boston в сравнении.

Запросы по названиям городов, которые не удаётся обработать на основе включённых в пакет данных Census и данных об округах, а также запросы за годы, данные по которым не включены в пакет, обращаются к api.gsa.gov и требуют ключ api.data.gov. Ключ предоставляет лимит в 1 000 запросов в час, доступный только вам. Если PERDIEM_API_KEY не задан, такие запросы возвращают инструкции по настройке. Чтобы выполнить запрос по городу или оценить стоимость поездки за год, данные по которому включены в пакет, не настраивая ключ, можно указать округ, в котором находится место работы.

Получите бесплатный ключ — это займёт 30 секунд:

  • Перейдите на страницу api.data.gov/signup

  • Укажите имя и адрес электронной почты: подтверждение не требуется, ждать не нужно

  • Скопируйте ключ со страницы подтверждения

  • Вставьте его в конфигурацию клиента как PERDIEM_API_KEY (см. ниже)

Один и тот же ключ подходит для всех API на основе api.data.gov (GSA Per Diem, NASA, FEC, FCC и других).

Установка

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

Настройка

Используйте приведённую ниже конфигурацию как описание сервера и разместите её в соответствии с требованиями совместимого клиента MCP. Примеры практических запросов к этому источнику приведены в библиотеке промптов.

С ключом:

{
  "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"
      }
    }
  }
}

По умолчанию сервер задаёт для запросов с ключом значение FEDERAL_API_MIN_INTERVAL_SECONDS равное 0.6 и ограничивает их количество до 950 в час. В примере выше указано большее значение — 4; подойдут оба варианта. Запросы Per Diem и Regulations.gov, использующие один ключ api.data.gov, используют общий механизм ограничения частоты запросов.

Настройка без ключа (доступны запросы по ZIP-кодам, штатам, M&IE и сочетанию города с округом, а также расчёты и сравнения, если данные включены в пакет):

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

Флаг --refresh-package указывает uv проверять наличие новой версии на PyPI при каждом запуске сервера клиентом. Благодаря этому исправления устанавливаются автоматически. Без этого флага uv продолжит использовать версию, которую сохранил в кэше при первом запуске. Проверка добавляет небольшую сетевую задержку при запуске. Если платформа ограничивает время запуска MCP, увеличьте установленный на ней тайм-аут.

Перезапустите клиент — инструменты появятся.

Примеры запросов

  • «Какая ставка суточных установлена для Washington DC в FY2026?»

  • «Оцени расходы на поездку с четырьмя ночёвками в Boston в марте».

  • «Сравни ставки суточных для DC, New York и San Francisco».

  • «Какие населённые пункты NSA указаны для Virginia?»

  • «Покажи разбивку M&IE по компонентам питания для уровня $92».

  • «Рассчитай расходы на поездки: 3 поездки в Seattle по 4 ночи и 2 поездки в DC по 3 ночи».

Важно: предельная сумма возмещения, а не фактические цены

Ставки суточных — это предельные суммы возмещения федеральных расходов, установленные в соответствии с 41 CFR 301-11. Они не отражают фактические цены на гостиницы. Данные охватывают только CONUS. Ставки для территорий США, не относящихся к зарубежным территориям (Аляска, Гавайи и другие территории), устанавливает DoD (DTMO); для зарубежных территорий — Государственный департамент. Налоги на проживание, как правило, не включены. В первый и последний дни поездки на M&IE начисляется 75% ставки.

Дополнительные инструменты

Для подготовки полного IGCE используйте этот сервер вместе с bls-oews-mcp (данные о заработной плате) и gsa-calc-mcp (предельные ставки). Суточные покрывают расходы на поездки, а BLS и CALC+ — затраты на оплату труда.

Лицензия

MIT

Поездки, пересекающие границы месяцев или финансовых лет. Складывайте lodging_total за каждый месяц, используя ставку соответствующего финансового года. M&IE рассчитывайте один раз за фактическое количество дней поездки: 75% ставки — в день отправления и в день возвращения, 100% — в остальные дни. Не складывайте отдельные значения mie_total или grand_total за каждый месяц, поскольку каждый расчёт предполагает собственные дни отправления и возвращения. Например, за четыре ночёвки при дневной ставке M&IE $92 расходы на M&IE составят $414 за пять дней поездки. Если разделить поездку на два независимых расчёта по две ночёвки, сумма M&IE составит $460.