mcpField
M
MCP Server Project (Proof of Concept)

MCP Server Project (Proof of Concept)

Local
github.com/BayernTourismusMaps & Travel2Updated 17w ago

About MCP Server Project (Proof of Concept)

An MCP server for AI assistants working with Bavarian tourism data through the BayernCloud Tourismus API. It supports searches for events, tours, points of interest, and dining, alongside classification and geolocation utilities.

Key features

  1. 01Search events by location and criteria
  2. 02Filter tours and retrieve elevation profiles
  3. 03Search points of interest and dining
  4. 04Retrieve item details and classifications
  5. 05Convert addresses and coordinates
  6. 06Calculate driving and straight-line distances

Use cases

  1. 01Find tourism events for a date range and area
  2. 02Filter hiking tours by length or elevation gain
  3. 03Locate nearby attractions and restaurants by coordinates
  4. 04Convert an address to coordinates and estimate distance

MCP support

Exposes BayernCloud Tourismus API search, detail, classification, and geolocation operations as tools for MCP clients. The API token remains on the server.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

BayernCloud MCP Server

A Model Context Protocol (MCP) server that exposes the BayernCloud Tourismus API to AI assistants like Claude. Provides search, filtering, and geo tools for Bavarian tourism data — events, tours, POIs, and gastronomy.

Tools

Search
ToolDescription
search_eventsEvents by geo radius, date range, full-text, and classification
search_toursTours with filters for length, elevation gain (Höhenmeter), duration, circular trail
search_poisPoints of Interest by geo, full-text, and classification
search_gastronomyRestaurants, cafés, bars by geo, full-text, and classification
Details
ToolDescription
get_itemFull details for any item by UUID
get_elevation_profileElevation profile (Höhenprofil) for a tour
Classifications
ToolDescription
list_classification_treesAll available category trees (cached 30 min)
get_classificationsCategories within a tree — use IDs to filter search results
Utilities
ToolDescription
suggestTitle autocomplete for events, tours, or POIs
geocodeAddress → coordinates
reverse_geocodeCoordinates → address
route_distanceDriving distance between two points (OSRM)
haversine_distanceStraight-line distance between two points

Setup

Prerequisites
Installation
git clone <repo>
cd mcp-server
npm install
npm run build
Configuration

Copy .env.example to .env and fill in your values:

BCT_API_TOKEN=your_token_here
BAYERN_CLOUD_API_URL=https://data.bayerncloud.digital/api/v4

# Endpoint UUIDs — copy from the end of the endpoint URL in the BayernCloud portal
BCT_ENDPOINT_EVENTS=107df2c2-ff3e-4eaa-b24c-863d85d505d1
BCT_ENDPOINT_TOURS=cd177e6a-c6db-4efd-84a6-decf4a3711de
BCT_ENDPOINT_POIS=7b228c8c-23f5-49b9-b55e-e18e73386fbb
BCT_ENDPOINT_GASTRONOMY=5453abda-5e76-43f0-acdf-4855c3cb351e

# Geocoding (optional — defaults shown)
NOMINATIM_BASE_URL=https://nominatim.openstreetmap.org
OSRM_BASE_URL=http://router.project-osrm.org

Usage

Local (Claude Desktop)

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "bayerncloud-mcp": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/index.js"]
    }
  }
}
Public HTTP Server

The server also runs as a public HTTP endpoint (Streamable HTTP transport, rate-limited to 60 req/min per IP):

PORT=3000 npm run start:http

Endpoints:

  • POST /mcp — MCP endpoint
  • GET /health — health check

Add to Claude as a remote MCP server:

{
  "mcpServers": {
    "bayerncloud-mcp": {
      "type": "http",
      "url": "https://your-deployment.example.com/mcp"
    }
  }
}
Deploy to Railway
npm run build
railway login && railway init && railway up

Set the same environment variables from .env in the Railway dashboard. PORT is set automatically.

Development

npm run build      # compile TypeScript → dist/
npm run start      # run stdio server (local)
npm run start:http # run HTTP server (public)
npm run dev        # watch mode

Architecture

src/
  index.ts          # stdio entry point (Claude Desktop)
  server-http.ts    # HTTP entry point (public deployment)
  lib/
    create-server.ts  # registers all tools on an McpServer instance
    bct.ts            # BayernCloud API client
    config.ts         # environment variables + dotenv
    format.ts         # response formatters (strips JSON-LD overhead)
    cache.ts          # TTL cache for classification data
    nominatim.ts      # Nominatim + OSRM client
  tools/
    events.ts         # search_events
    tours.ts          # search_tours
    pois.ts           # search_pois
    gastronomy.ts     # search_gastronomy
    item.ts           # get_item
    elevation.ts      # get_elevation_profile
    classifications.ts # list_classification_trees, get_classifications
    suggest.ts        # suggest
    geocoding.ts      # geocode, reverse_geocode, route_distance, haversine_distance

The BCT API token is never exposed to clients — it stays server-side for both local and public deployments.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.