Independent MCP client for Swiss Federal Railways (SBB/CFF/FFS) — schedules, prices, and ticket links via SBB's SMAPI. Third-party implementation by SwissTrip; not the official SBB MCP.
Setup
Choose your client, copy the config, then fill in any required environment variables.
Local
claude mcp add sbb --env SMAPI_CLIENT_ID='<SMAPI_CLIENT_ID>' --env SMAPI_CLIENT_SECRET='<SMAPI_CLIENT_SECRET>' --env SMAPI_SCOPE='<SMAPI_SCOPE>' --env SMAPI_CONTRACT_ID='<SMAPI_CONTRACT_ID>' -- npx -y sbb-mcp~/.codex/config.toml
[mcp_servers.sbb]
command = "npx"
args = ["-y", "sbb-mcp"]
env = { SMAPI_CLIENT_ID = "<SMAPI_CLIENT_ID>", SMAPI_CLIENT_SECRET = "<SMAPI_CLIENT_SECRET>", SMAPI_SCOPE = "<SMAPI_SCOPE>", SMAPI_CONTRACT_ID = "<SMAPI_CONTRACT_ID>" }
# codex mcp add sbb --env SMAPI_CLIENT_ID='<SMAPI_CLIENT_ID>' --env SMAPI_CLIENT_SECRET='<SMAPI_CLIENT_SECRET>' --env SMAPI_SCOPE='<SMAPI_SCOPE>' --env SMAPI_CONTRACT_ID='<SMAPI_CONTRACT_ID>' -- npx -y sbb-mcp~/.cursor/mcp.json
{
"mcpServers": {
"sbb": {
"command": "npx",
"args": [
"-y",
"sbb-mcp"
],
"env": {
"SMAPI_CLIENT_ID": "<SMAPI_CLIENT_ID>",
"SMAPI_CLIENT_SECRET": "<SMAPI_CLIENT_SECRET>",
"SMAPI_SCOPE": "<SMAPI_SCOPE>",
"SMAPI_CONTRACT_ID": "<SMAPI_CONTRACT_ID>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"sbb": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"sbb-mcp"
],
"env": {
"SMAPI_CLIENT_ID": "<SMAPI_CLIENT_ID>",
"SMAPI_CLIENT_SECRET": "<SMAPI_CLIENT_SECRET>",
"SMAPI_SCOPE": "<SMAPI_SCOPE>",
"SMAPI_CONTRACT_ID": "<SMAPI_CONTRACT_ID>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"sbb": {
"command": "npx",
"args": [
"-y",
"sbb-mcp"
],
"env": {
"SMAPI_CLIENT_ID": "<SMAPI_CLIENT_ID>",
"SMAPI_CLIENT_SECRET": "<SMAPI_CLIENT_SECRET>",
"SMAPI_SCOPE": "<SMAPI_SCOPE>",
"SMAPI_CONTRACT_ID": "<SMAPI_CONTRACT_ID>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"sbb": {
"command": "npx",
"args": [
"-y",
"sbb-mcp"
],
"env": {
"SMAPI_CLIENT_ID": "<SMAPI_CLIENT_ID>",
"SMAPI_CLIENT_SECRET": "<SMAPI_CLIENT_SECRET>",
"SMAPI_SCOPE": "<SMAPI_SCOPE>",
"SMAPI_CONTRACT_ID": "<SMAPI_CONTRACT_ID>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"sbb": {
"command": "npx",
"args": [
"-y",
"sbb-mcp"
],
"env": {
"SMAPI_CLIENT_ID": "<SMAPI_CLIENT_ID>",
"SMAPI_CLIENT_SECRET": "<SMAPI_CLIENT_SECRET>",
"SMAPI_SCOPE": "<SMAPI_SCOPE>",
"SMAPI_CONTRACT_ID": "<SMAPI_CONTRACT_ID>"
}
}
}
}Remote
claude mcp add --transport http sbb https://sbb-mcp--swisstrip.run.tools~/.codex/config.toml
[mcp_servers.sbb]
url = "https://sbb-mcp--swisstrip.run.tools"
# codex mcp add sbb --url https://sbb-mcp--swisstrip.run.tools~/.cursor/mcp.json
{
"mcpServers": {
"sbb": {
"url": "https://sbb-mcp--swisstrip.run.tools"
}
}
}.vscode/mcp.json
{
"servers": {
"sbb": {
"type": "http",
"url": "https://sbb-mcp--swisstrip.run.tools"
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"sbb": {
"httpUrl": "https://sbb-mcp--swisstrip.run.tools"
}
}
}claude_desktop_config.json · Customize › Connectors › Add custom connector
{
"mcpServers": {
"sbb": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://sbb-mcp--swisstrip.run.tools"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"sbb": {
"url": "https://sbb-mcp--swisstrip.run.tools"
}
}
}Environment variables
SMAPI_CLIENT_IDSMAPI_CLIENT_SECRETSMAPI_SCOPESMAPI_CONTRACT_ID
Replace the placeholders with your own credentials and keep them out of version control.