system_get_health_status
System Get Health Status
Check the operational health of the taxcode server and DuckDB storage.
Takes no parameters.

io.github.christianclaudioPublished by GitHub account christianclaudiov1.2.0Updated Nov 6, 2026
MCP server for US Federal, territorial, and state tax law and compliance.
Local MCP server that gives an assistant searchable US Federal, Puerto Rico and 50-state tax statutes plus residency and capital-gain compliance calculators.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
[CI] [License: Apache-2.0] [Coverage] [CodeRabbit Reviews]
Enterprise-grade Model Context Protocol (MCP) server for Federal, Territorial, and Multi-State Tax Law.
Reference statutory catalog covering United States Federal (IRC/CFR), Puerto Rico (Act 60/Ley 1), and all 50 US States + District of Columbia with computational residency and capital gains models.
[!WARNING] NOT TAX OR LEGAL ADVICE / NO CONSTITUYE ASESORAMIENTO CONTRIBUTIVO NI LEGAL
EN: This software and its tools provide computational models, heuristic checks, and unofficial summaries for informational and research purposes only. Nothing returned by this server constitutes formal legal or tax advice, an official legal opinion, or audit representation. Unofficial translations and summaries are non-binding; official statutory and administrative sources in their enacted language control.
ES: Este software y sus herramientas proporcionan modelos computacionales, verificaciones heurísticas y resúmenes no oficiales únicamente para fines informativos y de investigación. Ninguna respuesta emitida por este servidor constituye asesoramiento legal o contributivo formal, una opinión legal oficial ni representación ante auditorías. Las traducciones y resúmenes no oficiales no son vinculantes; los textos estatutarios y administrativos oficiales promulgados en su idioma original prevalecen.
US): IRC § 1, § 24, § 32, § 61, § 62, § 63, § 865, § 911, § 933, § 937, § 957, § 1411, § 6012, § 6688, 26 CFR § 1.937-1/2/3, and IRS publications (Pub. 17, Pub. 54, Pub. 501, Pub. 505, Pub. 570, Pub. 1321).PR): Act 60-2019 (Resident Individual Investors, Export Services & Opportunity Zone definitions, Sec. 6020.10 annual reports), Ley 1-2011 (including Sec. 1031.02 exemptions and Sec. 1062.01 wage withholding and Sec. 1062.03 withholding on payments for services), Act 22-2012 predecessor versions, and administrative publications (CC RI 21-10, CC RI 25-12, CC RI 26-13, DA 21-04, DA 23-04, BI RI 26-02).statutes_search_tax_code matches and ranks on the full text but returns a short snippet (up to 300 characters around the first matched term) plus each result's id, citation, title, jurisdiction, year, validity and content labels. Pass an id to statutes_lookup_statute as citation_or_section for the full text.statutes_lookup_statute returns long text in pages of up to 8,000 characters per text field (text_page gives the offset and full lengths; pass next_cursor back as page_cursor for the next page). statutes_search_tax_code and statutes_list_publications clamp limit to 1..25 items per call, with offset and next_offset for the next page. The taxcode://statutes/{jurisdiction}/{section*} resource (for example taxcode://statutes/US/933, or taxcode://statutes/IL/5/201 for a section id that contains /) uses the same 8,000-character pages and cap: a page that is not the last ends with the URI of the next one, which carries a ?page_cursor= query. The {section*} wildcard matches multi-segment section ids; a percent-encoded form such as 5%2F201 also works.src/taxcode_mcp/data/ with a source record per row, and the docs under docs/ are generated from them (see CONTRIBUTING.md).superseded_year filtering and descending historical ordering (tax_year parameter).evaluate_pr_bona_fide_residency: Evaluates IRC § 937 presence (183-day, 549-day 3-year, 90-day US), tax home, and closer connection tests.calculate_built_in_gain_sourcing: Allocates Section 937 / Act 60 capital gains across pre-move and post-move holding periods.evaluate_state_residency: Multi-state statutory presence day-counter, permanent place of abode (PPA), domicile audit risk flags, and tax liability computation across all 50 US states and District of Columbia (51 jurisdictions total). Optional dependents, Mississippi spouse_agi (MFJ combined returns; even split of the filing-status exemption and standard deduction; ignored for other states), and Utah itemized_deductions (federal itemized deductions excluding state income tax) refine KS/MS/OH/GA/UT liability; defaults keep prior results.full, system, statutes, compliance, readonly.researcher (statutes + circulars), advisor (cross-border residency + BIG calculations).readOnlyHint=True).Stdio is the default and needs no token. The HTTP transports follow the MCP guidance that a local server binds only to localhost and authenticates every connection:
127.0.0.1, ::1 or localhost (the --host default is 127.0.0.1), HTTP runs with or without TAXCODE_MCP_AUTH_TOKEN; without it, a warning says requests are not authenticated.0.0.0.0, ::, a LAN address), the server refuses to start unless TAXCODE_MCP_AUTH_TOKEN is set, or TAXCODE_MCP_ALLOW_UNAUTHENTICATED_BIND=1 accepts an unauthenticated bind (logged as a warning), for example behind a gateway that authenticates for you.Authorization: Bearer <token>; a missing or wrong token gets HTTP 401.session_idle_timeout (on http_app()) or FASTMCP_HTTP_SESSION_IDLE_TIMEOUT (seconds, or none to never expire); see the FastMCP 4.1.0 release and #5229.The image's default command is stdio, so it works as a stdio server out of the box:
To serve Streamable HTTP from the container, bind 0.0.0.0 inside it and pass a token:
This server works out-of-the-box with all major AI assistants, IDEs, and CLI tools via standard stdio or streamable-http.
The server is published on PyPI as mcp-server-taxcode, so you can run it directly with uvx mcp-server-taxcode without cloning or manually managing environments. Alternatively, run from a local clone with uv run --directory /path/to/mcp-server-taxcode taxcode-mcp.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
For local development from a clone:
For Claude Code CLI:
Add to .agents/mcp_config.json (or global ~/.gemini/config/mcp_config.json):
Add to ~/.snowflake/cortex/mcp.json:
Add to ~/.cursor/mcp.json:
Add to cline_mcp_settings.json:
When developing, hardening, or extending MCP servers, consult the official framework and protocol references:
https://gofastmcp.com/llms.txt — Server composition (mount), hierarchical middleware, transforms (ToolTransform, ToolSearch), lifespans, and in-memory test clients.https://modelcontextprotocol.io/llms.txt — Official Spec (2026-07-28), wire-level JSON-RPC schemas, annotations, and transport framing.Connect your AI coding agent directly to live documentation servers:
https://gofastmcp.com/mcp (Tools: search_fast_mcp, query_docs_filesystem_fast_mcp, submit_feedback)https://modelcontextprotocol.io/mcp (Tools: search_model_context_protocol, query_docs_filesystem_model_context_protocol, submit_feedback)Licensed under the Apache License 2.0. See LICENSE for details.
Source: README.md at commit b48d62f
System Get Health Status
Check the operational health of the taxcode server and DuckDB storage.
Takes no parameters.
Statutes Lookup Statute
Retrieve exact statutory language, temporal version, and metadata by citation, section code, or the record id from statutes_search_tax_code (pass a result's id as citation_or_section to get its full text). Long text comes in pages of up to 8,000 characters per text field (each result stays under 32,000 characters): data.text_page gives the offset and full lengths, and while data.next_cursor is not null, call again with page_cursor set to it for the next page.
langtax_yearpage_cursorjurisdictioncitation_or_sectionrequiredStatutes Search Tax Code
Keyword and concept search across Federal and State statutory corpora. Multi-word queries match individual terms: rows with the whole phrase rank first, then by how many terms match, then newer effective year first (empty or non-numeric years last), then id. Each result is a short snippet (up to 300 characters around the first matched term) with its id, citation, title, jurisdiction, year, validity and content labels, not the full text: call statutes_lookup_statute with citation_or_section set to the result's id to read the full text. limit is clamped to 1..25 results per call (see limit_applied); while next_offset is not null, call again with offset set to it for the next page.
limitqueryrequiredcorpusoffsettax_yearjurisdictionStatutes List Publications
List administrative circulars, tax guidance publications, and bulletins, newest first. limit is clamped to 1..25 per call (see limit_applied); while next_offset is not null, call again with offset set to it for the next page.
limitoffsetcategorysince_dateCompliance Evaluate Pr Bona Fide Residency
Evaluate statutory criteria for PR bona fide residency under IRC § 937 and 26 CFR § 1.937-1. Its reporting_requirements say when IRS Form 8898 must be filed: in the tax year you became or stopped being a bona fide PR resident, if your worldwide gross income is more than $75,000 (IRS Instructions for Form 8898).
tax_yeardays_present_prrequireddays_present_usrequiredhas_us_tax_homeprior_year_1_pr_daysprior_year_2_pr_dayscloser_connection_jurisdictionCompliance Calculate Built In Gain Sourcing
Calculate US vs PR capital gain sourcing under Treas. Reg. § 1.937-2(f) (10-year rule).
total_gainrequiredis_marketablerequiredadjusted_basistotal_days_helddays_held_as_residentfmv_on_residency_dateyears_since_residencyCompliance Evaluate Georgia Residency
Evaluate Georgia statutory residency criteria under O.C.G.A. § 48-7-1(10) and Ga. Comp. R. & Regs. r. 560-7-3-.01, and compute state income tax.
agetax_yearfederal_agifiling_statusdays_present_garequiredretirement_incomeis_domiciled_in_gaga_driver_license_activega_voter_registration_activemaintains_permanent_abode_gaga_homestead_exemption_claimedCompliance Evaluate State Residency
Evaluate individual statutory residency, domicile nexus, and state tax liability across all 50 US states and District of Columbia.
agetax_yearfederal_agiis_domiciledjurisdictionrequiredcapital_gainsdays_in_staterequiredfiling_statusretirement_incomehas_active_driver_licensemaintains_permanent_abodehas_active_voter_registration+2 more90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
graph TD Client["AI Agent / MCP Host<br>(Claude, Cursor, Antigravity, Snowflake Cortex)"] Gateway["FastMCP Root Gateway<br>(stdio / streamable-http)"] ParentMW["Parent Middleware<br>(Audit Logging, Timing, Secret Redaction, ReadOnly Gate)"] SysSub["System Sub-server (mount: 'system')<br>• system_get_health_status<br>• taxcode://system/reference/capabilities"] StatSub["Statutes Sub-server (mount: 'statutes')<br>• statutes_lookup_statute<br>• statutes_search_tax_code<br>• statutes_list_publications<br>• taxcode://statutes/{jurisdiction}/{section*}"] CompSub["Compliance Sub-server (mount: 'compliance')<br>• compliance_evaluate_pr_bona_fide_residency<br>• compliance_calculate_built_in_gain_sourcing<br>• compliance_evaluate_georgia_residency<br>• compliance_evaluate_state_residency"] DuckDB["DuckDB In-Memory & File Engine<br>(144 Statutes, 37 Publications, Full-Text Search, Temporal Versions)"]
Client <-->|"JSON-RPC (tools/list, tools/call)"| Gateway Gateway --> ParentMW ParentMW --> SysSub ParentMW --> StatSub ParentMW --> CompSub StatSub <-->|"Point-in-Time & Full-Text Queries"| DuckDB CompSub <-->|"Deterministic Statutory Calculations"| DuckDB# Local HTTP, loopback onlytaxcode-mcp --transport streamable-http
# Public HTTP with a tokenTAXCODE_MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \ taxcode-mcp --transport streamable-http --host 0.0.0.0 --allowed-host mcp.example.comdocker run -i --rm -e TAXCODE_API_KEY=your-api-key ghcr.io/christianclaudio/mcp-server-taxcode:latestdocker run --rm -p 8000:8000 \ -e TAXCODE_API_KEY=your-api-key \ -e TAXCODE_MCP_AUTH_TOKEN=your-long-random-token \ ghcr.io/christianclaudio/mcp-server-taxcode:latest \ --transport streamable-http --host 0.0.0.0 --port 8000 --allowed-host mcp.example.com{ "mcpServers": { "taxcode": { "command": "uvx", "args": ["mcp-server-taxcode"] } }}{ "mcpServers": { "taxcode": { "command": "uv", "args": ["run", "--directory", "/absolute/path/to/mcp-server-taxcode", "taxcode-mcp"] } }}claude mcp add taxcode -- uvx mcp-server-taxcode{ "mcpServers": { "taxcode": { "command": "uvx", "args": ["mcp-server-taxcode"] } }}{ "mcpServers": { "taxcode": { "command": "uvx", "args": ["mcp-server-taxcode"] } }}{ "mcpServers": { "taxcode": { "command": "uvx", "args": ["mcp-server-taxcode"] } }}{ "mcpServers": { "taxcode": { "command": "uvx", "args": ["mcp-server-taxcode"] } }}{ "mcpServers": { "fastmcp-docs": { "type": "sse", "url": "https://gofastmcp.com/mcp" }, "mcp-official-docs": { "type": "sse", "url": "https://modelcontextprotocol.io/mcp" } }}# 1. Install dependencies from the lockfileuv sync --locked --extra dev
# 2. Run unit tests with 100% coverage requirementuv run pytest
# 3. Static type checks & lintinguv run mypy --strict src/uv run ruff check .uv run ruff format --check .
# 4. Tool contract, protocol & drift assertionsuv run python scripts/check_tool_contract.pyuv run python scripts/check_openapi_drift.pyuv run python scripts/build_catalog.py --check # data files, source manifest, generated docsuv run pytest tests/test_protocol.pyuv run pytest tests/test_e2e_live.py -m e2e # on demand; default CI uses -m 'not e2e'./scripts/check_conformance.sh
# 5. AI code review gate (CodeRabbit)coderabbit review --agent --uncommitted