Traktamente MCP Server
An MCP server that provides access to Swedish traktamente (per diem) rates from Skatteverket's official API.
Features
- 🔍 Query per diem rates by country, year, or country code
- 🌍 Search across all available countries
- 📊 Access official data from Skatteverket
- ⚡ Fast and lightweight implementation using Bun
- 🔒 Type-safe with Zod schema validation
Installation
pnpm install traktamente-mcp
Or with Bun:
bun add traktamente-mcp
Usage
With Claude Desktop
Add this configuration to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"traktamente": {
"command": "npx",
"args": ["traktamente-mcp"]
}
}
}
Restart Claude Desktop, and you'll have access to three new tools:
- get_traktamente - Query per diem rates with filters (country, year, country code)
- get_all_countries - List all available countries
- search_traktamente - Search for countries using regex patterns
With Streamable HTTP (Remote Server)
The server is available as a hosted service at https://traktamente.app/mcp, which you can connect to without installing anything locally.
Claude Code
The easiest way to add the server to Claude Code is using the CLI:
claude mcp add --transport http traktamente https://traktamente.app/mcp
Alternatively, you can manually add it to your Claude Code settings (~/.config/claude/config.json or via UI settings):
{
"mcpServers": {
"traktamente": {
"transport": "http",
"url": "https://traktamente.app/mcp"
}
}
}
Standalone Usage
# Start the server
bun start
# Development mode with hot reload
bun dev
# Test with MCP Inspector (interactive web UI)
bun run inspector
With Docker
The server can run in a Docker container, useful for isolated environments or deployment:
# Build the Docker image
docker build -t traktamente-mcp .
# Run with stdio transport (interactive)
docker run -i traktamente-mcp
# Or use Docker Compose
docker-compose up
Docker with Claude Desktop
To use the Docker container with Claude Desktop, configure it like this:
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"traktamente": {
"command": "docker",
"args": ["run", "-i", "--rm", "traktamente-mcp"]
}
}
}
Note: You need to build the Docker image first using docker build -t traktamente-mcp . in the project directory.
Available Tools
get_traktamente
Query traktamente rates with optional filters:
land(string, optional): Country name or regex patternår(string, optional): Yearlandskod(string, optional): Country code (e.g., "US", "GB")limit(number, optional): Maximum number of results (default: 100)offset(number, optional): Pagination offset (default: 0)
get_all_countries
List all countries with available per diem data. No parameters required.
search_traktamente
Search for countries using a regex pattern:
search(string, required): Search term or regex patternlimit(number, optional): Maximum number of results (default: 50)
Development
Prerequisites
- Bun runtime (v1.0.0 or later)
Setup
# Clone the repository
git clone https://github.com/johnie/traktamente-mcp.git
cd traktamente-mcp
# Install dependencies
bun install
# Start development server
bun dev
Testing with MCP Inspector
The MCP Inspector provides an interactive web UI for testing the server:
bun run inspector
This will open a browser where you can test all available tools and see real-time responses.
Data Source
This server fetches data from Skatteverket's official API:
- API URL: https://skatteverket.entryscape.net/rowstore/dataset/70ccea31-b64c-4bf5-84c7-673f04f32505
- Data: Per diem rates for international travel
- Language: Swedish (country names and field names)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Guidelines
- Use Bun for all commands (not Node.js or npm)
- Follow the existing code style (enforced by Biome)
- Add tests for new features
- Update documentation as needed
License
MIT © Johnie Hjelm
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Acknowledgments
- Data provided by Skatteverket
- Built with Model Context Protocol SDK
- Powered by Bun
