mcp-militarypay
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MILITARYPAY_DB | No | Path to the SQLite database file. Overrides the default location (data/militarypay.sqlite3 in the checkout or ~/.mcp-militarypay/ when installed as a normal package). | |
| MILITARYPAY_USER_AGENT | No | Custom User-Agent string used for HTTP requests to DFAS/DTMO. Use this if the default browser-like user agent is blocked or needs to be overridden. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_base_payA | Monthly basic pay for a pay grade at a given years-of-service band. Basic pay is taxable income. Returns the rate plus any footnotes that apply to that grade. A grade/years-of-service combination that does not exist on the table (for example E-8 at 2 years) is reported as an invalid combination with a null rate - not as zero. |
| get_bahA | Monthly Basic Allowance for Housing for a ZIP code and pay grade. BAH is a non-taxable allowance. Resolves the ZIP to its Military Housing Area and returns the rate together with the MHA code, the rate set used and its effective date. The ZIP must be the member's permanent duty station, not where they live. Someone stationed at one installation but living in another housing area still draws the duty station's rate, and a residence ZIP resolves to a different real area and returns a plausible but wrong figure. Where a housing area has an off-cycle adjustment, the most recent applicable rate set is used. |
| find_housing_areaA | Find the Military Housing Area for a place, and ZIP codes to query it with. Search for the duty station, not the member's home: BAH follows the permanent duty station, so a residence in a different housing area does not change the rate. Use this before get_bah whenever you have a place name rather than a ZIP code, instead of supplying a ZIP from memory: a wrong ZIP resolves to some other real housing area and returns a confident rate for the wrong locality. Each result carries example ZIP codes to pass to get_bah. Areas are named for localities, so a military installation matches only where the published name happens to include it - "Travis AFB" finds "VALLEJO/TRAVIS AFB, CA", but Redstone Arsenal is inside "HUNTSVILLE, AL". If a base name finds nothing, search the nearest city instead. |
| get_basA | Monthly Basic Allowance for Subsistence for an officer or enlisted member. BAS is a non-taxable allowance. Warrant officers receive the officer rate. BAS II is a conditional rate (twice standard enlisted BAS) requiring Service Secretary authorization - it is never the default answer. |
| estimate_total_compensationA | Basic pay + BAH + BAS with a per-component breakdown and a tax split. Returns monthly and annual totals separated into taxable (basic pay) and non-taxable (BAH, BAS) amounts. The ZIP code must be the permanent duty station, not the member's residence - BAH follows the duty station. This is regular military compensation only: it excludes special and incentive pays, bonuses, and all deductions. |
| get_database_statusA | What rate data is loaded and when each source was last fetched. Use this to check how current the figures are before relying on them, or to find out why a lookup came back empty. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each getter targets a distinct pay component (basic pay, BAH, BAS), find_housing_area is a supporting lookup for BAH, and estimate_total_compensation is clearly a combined calculation rather than a competing single-rate lookup. There is no realistic ambiguity between tool purposes.
All tools use a clear snake_case verb_noun pattern: get_ for direct lookups, find_ for the area search, and estimate_ for the aggregate calculation. The naming style is consistent and each verb accurately reflects the action.
Six tools is well-scoped for a read-only military compensation lookup service. Each tool has a distinct role, and there are no redundant or filler tools.
The server covers the regular military compensation triad (basic pay, BAH, BAS) along with housing-area resolution and data-status checks. It explicitly excludes special/incentive pays, bonuses, and deductions, which is a minor but real gap for users expecting full military pay coverage.