IrishTaxHub MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IrishTaxHub MCP ServerCalculate tax refund for single, income 50k, year 2024"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Irish Tax Hub MCP server
FastMCP server exposing a curated, read-only toolset backed by the Irish Tax Hub API.
Hosted endpoints
Production:
https://mcp-prod.aws.irishtaxhub.ie/mcpStage:
https://mcp-stage.aws.irishtaxhub.ie/mcp
The hosted service uses stateless Streamable HTTP. For local MCP clients, run the same server over standard input/output as described below.
Related MCP server: OpenAPI MCP Server
Tools
Tool | Purpose |
| Run one of the supported Irish tax calculators |
| Return the input schema for a calculator |
| List calculator names and descriptions |
| Return tax constants for a supported year |
| Return Irish tax deadlines and key dates |
| Search Revenue Tax and Duty Manuals |
| Retrieve the text of a Revenue document |
| List Revenue document categories |
| Return the latest Revenue eBrief changes |
| Search Ireland's double-taxation treaty corpus |
| Retrieve treaty, protocol, or MLI text |
| List countries in the treaty corpus |
| Return usage statistics for a calculator |
Tools are deliberately curated rather than generated dynamically. The OpenAPI document is used to validate calculator requests, while stable tool names and descriptions form the MCP interface.
Source material and licensing
The Revenue document, eBrief and tax-treaty tools return material published by the Office of the Revenue Commissioners and reused under Revenue's Public Sector Information Licence (CC BY 4.0):
Information provided courtesy of the Revenue Commissioners under a Creative Commons Attribution 4.0 International (CC BY 4.0) licence
Every such result carries this statement in attribution.source. Document text is extracted
from Revenue's original PDFs; descriptions, keywords and groupings are Irish Tax Hub's own.
Irish Tax Hub is not affiliated with or endorsed by Revenue.
Install
Python 3.11 and Poetry are recommended:
poetry installAn editable pip installation also works:
pip install -e .Configure
The server reads these environment variables:
Variable | Default | Purpose |
|
| Irish Tax Hub API base URL |
|
| OpenAPI file path or URL used for validation |
| unset | Optional API key forwarded to the API |
|
| HTTP timeout in seconds |
For production-backed local use:
export IRISHTAXHUB_BASE_URL="https://prod.aws.irishtaxhub.ie"
export IRISHTAXHUB_OPENAPI="https://prod.aws.irishtaxhub.ie/openapi.json"
poetry run irishtaxhub-mcpWith irishtaxhubapi running locally on its default port 8000, no configuration is needed:
poetry run irishtaxhub-mcpYou can also run the module or FastMCP entrypoint directly:
python -m irishtaxhub_mcp.server
fastmcp run src/irishtaxhub_mcp/server.pyMCP client configuration
Example local standard-input/output configuration:
{
"mcpServers": {
"irishtaxhub": {
"command": "poetry",
"args": ["run", "irishtaxhub-mcp"],
"cwd": "/absolute/path/to/irishtaxhub-mcp",
"env": {
"IRISHTAXHUB_BASE_URL": "https://prod.aws.irishtaxhub.ie",
"IRISHTAXHUB_OPENAPI": "https://prod.aws.irishtaxhub.ie/openapi.json"
}
}
}
}Restart the client after changing its MCP configuration.
Examples
Discover the available calculators, inspect the selected input schema, and then calculate:
{"tool": "list_calculators", "arguments": {}}{
"tool": "get_calculator_schema",
"arguments": {"calculator_name": "refund"}
}{
"tool": "calculate_tax",
"arguments": {
"calculator_name": "refund",
"inputs": {
"marital_status": "single",
"year": 2025,
"employment_income": {"income": 50000, "tax_paid": 18000}
}
}
}Search the Revenue and treaty corpora:
{"tool": "search_revenue_documents", "arguments": {"query": "principal private residence"}}{"tool": "search_tax_treaties", "arguments": {"query": "employment income", "country": "France"}}Development
poetry run black --check .
poetry run isort --check-only .
poetry run flake8 .
poetry run pytestThe implementation calls the deployed HTTP API rather than importing API internals, keeping this
service small and independently deployable. src/irishtaxhub_mcp/asgi.py provides the ASGI
entrypoint used by the Lambda Web Adapter deployment.
Deployment OIDC
The deploy role and its policy are owned by the account-wide manifest in
irishtaxhub-scripts/aws-iam-deploy-roles/ (manifest.json and
policies/GitHubActions-irishtaxhub-mcp-Policy.json); change them there and apply with its
apply.py. The scripts below are recovery helpers for rebuilding the role from this repository.
GitHub Actions deploys use a repository-specific OIDC subject template containing the claims
repo, context, ref. Configure it idempotently with:
gh auth login
./scripts/configure_github_oidc_subject.sh
./scripts/setup_github_oidc.shThe first script requires gh, jq, and repository administration access. The IAM role
accepts only these subjects:
repo:jhurleyai/irishtaxhub-mcp:environment:stage:ref:refs/heads/main
repo:jhurleyai/irishtaxhub-mcp:environment:prod:ref:refs/heads/mainRender the exact trust and permissions documents for review without calling AWS:
POLICY_ACCOUNT_ID_OVERRIDE=123456789012 \
./scripts/setup_github_oidc.sh --render-policies /tmp/irishtaxhub-mcp-iamRole lifecycle and PassRole access are limited to the stage and production Lambda execution
roles. PassRole is accepted only when the destination service is Lambda, and the deploy role can
attach only AWSLambdaBasicExecutionRole to those roles.
For an existing live role, temporarily allow both the current and new subjects in IAM, run the
repository configuration script, then rerun setup_github_oidc.sh to leave only the exact
subjects above. Changing either side alone temporarily prevents deployments.
Claude PR review
.github/workflows/claude-pr-review.yml can review pull requests when the repository has a valid
CLAUDE_CODE_OAUTH_TOKEN secret. Generate a replacement with claude setup-token when required,
then update it with:
gh secret set CLAUDE_CODE_OAUTH_TOKEN --repo jhurleyai/irishtaxhub-mcpThis server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for AI access to Swagger by SmartBear.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomatically converts any OpenAPI specification into an MCP server, exposing all HTTP endpoints as callable tools with support for various authentication methods and request types.2-
- AlicenseNot gradedqualityDmaintenanceA generic MCP server that dynamically converts OpenAPI-defined REST APIs into tools for LLMs like Claude. It supports multiple authentication methods and transport protocols, enabling seamless interaction with any OpenAPI-compliant API.23 npmMIT
- AlicenseAqualityDmaintenanceA generic MCP server that dynamically exposes any OpenAPI-documented REST API to LLMs by auto-discovering endpoints. It provides tools for exploring API capabilities and making authenticated requests directly through natural language interfaces.25 npmMIT
- AlicenseCqualityCmaintenanceMCP server that turns OpenAPI specs into tools and calls API114 npm5MIT