MCP Server Usecases


Get dates and meetings


A user can see what kind of activities he can volunteer for:


Get users and roles


Embedding in a website

iframe width="400" height="215" src="https://nx.openheidelberg.de/apps/calendar/embed/cEeeKR9xGJ6E66GC"></iframe

urbaninnovation?
permissions?


MCP Features


mcp.tool

tools in mcp are model-controlled. The language model can discover and invoke tools automatically based on its contextual understanding.
Docstring and types in python are used to define tool features.

@mcp.tool()
def show_events(category: str) -> str:
"""Get Events for Openheidelberg.

Args:
category: category of event
"""
return get_events()

MCP Agent


mcp.prompts

used to expose prompt templates to clients.
prompts are user-controlled, they are triggered through user-initiated commands in the user interface
For example, as slash commands: '/termine'


mcp.resources

Similar to RAG resources provide context to LLMs
Each resource is uniquely identified by a URI.
Resources are application-driven,
To retrieve resource contents, clients send a resources/read request:
For example: Our wiki page could provide context as a resource


Completions

completions provide a standardized way for servers to offer argument autocompletion suggestions for prompts and resource URIs. (similar to IDE code completion.)
For example: Completions could be used for event categories


Elicitation

Is a standardized way for servers to request additional information from users through the client during interactions.
Servers request structured data from users with JSON schemas to validate responses.

For example: Request from a user all Information required to create a new Event.


Sampling

is a standardized way to request completions or generations from external LLMs.
Sampling allows servers to implement agentic behaviors, by enabling LLM calls to occur nested inside other MCP server features.

For example: Read Events from a website.


Agent

howto create new meeting? (in Calendar UI obviously )

Code for nextcloud

import it as a new ics-file using this command

sudo curl -T /home/rollanders/kombineradedit.ics -u User:Password https://mydomain.com/remote.php/dav/calendars/User/kombinerad/


MCP Client

Claude Desktop

a start for devs, but not actual users !

--> build our own client


stdio

Clients SHOULD support stdio whenever possible.

https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#stdio


Streamable HTTP

In the Streamable HTTP transport, the server operates as an independent process that can handle multiple client connections

https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http


Architecture

flowchart LR
UI --> MCPClient
MCPClient --> MCPServer
MCPClient --> LLM
MCPServer --> API
API --> Context

UI


Webclient

Python Library to build chat bot as webclient


Android / Iphone App

with flet.dev we can build an Android / Iphone App
getting it on the App Store might be tedious


Chat App

We could combine chatting with the LLM with chatting with members in on UI.
-> matrix chat client


MCPClient

[√] https://github.com/rawdlite/mcp-openheidelberg/blob/main/client.py


MCPServer

[√] https://github.com/rawdlite/mcp-openheidelberg/blob/main/server/openheidelberg.py


API

[√] show_events https://github.com/rawdlite/mcp-openheidelberg/blob/main/server/ical.py
[√] show_members, show_tasks https://github.com/rawdlite/mcp-openheidelberg/blob/main/server/workpackages.py


Resources

Next steps


MCP Member Bildschirmfoto 2025-07-01.png