Data Collection
opencouncil.gr
Provides access to municipal council meeting subjects with search, trending topics, and geographic queries.
ENDPOINT 1
https://opencouncil.gr/mcp
MCP server metadata
- Name
- opencouncil
- Version
- 1.0.0
OpenCouncil publishes transcribed, structured records of Greek municipal council meetings. Data model: cities (municipalities) hold council meetings; each meeting has subjects (agenda items); each subject is discussed in speaker segments made of utterances (the transcript). People (councillors) belong to parties and hold roles. How to work: - For "what is happening in the councils lately", start with `list_hot_subjects` — every municipality at once, ranked by debate time. - Use the `search` tool to find subjects by topic, person, party, city or date range. Use `list_cities` / `list_people` to resolve names to IDs first. Omit the query text for a filter-only listing (e.g. everything a person spoke about, newest first). - A `search` query returns subjects ranked by relevance, not by date. The top hit is not the newest one, and a page of results is not the whole record — never read "not on page 1" as "does not exist". - For "when did this body last meet", use `list_meetings` with `administrativeBodyIds` and `timeFilter: "past"` — `get_city` lists the bodies and their ids. Without `timeFilter` the top row can be a meeting that has not happened yet. `search` cannot answer this at all: it ranks subjects, and carries no body filter. - For "what has the council discussed near this address", use `list_nearby_subjects` with lat/lng: subjects pinned within the radius come first with distances, then municipality-wide ones (distanceMeters null). It only scans recent meetings — report an empty list as "nothing since oldestMeetingScanned", not "nothing". - Use `get_subject` for a subject's details and `get_subject_transcript` for exactly what was said about it, with utterance IDs. - To find which subjects of a meeting mattered, rank `get_meeting`'s subjects by `discussionSeconds` (debate time) — agenda order says nothing about importance, and most items pass without discussion. - A meeting with no subjects is not an empty meeting. Subjects come from a summarization step that runs after transcription, so a meeting is often transcribed long before it has an agenda. Check `hasTranscript` on `get_meeting` (and on `list_meetings` rows): when it is true, `get_transcript` holds the full verbatim record, and everything the subject tools do — summarizing, quoting, picking utterances for a highlight — you can do from there. Never report such a meeting as having nothing to show. - Full meeting transcripts (`get_transcript`) are long and paginated — prefer per-subject transcripts, or pass `personId` for just one councillor's segments. - Most content is in Greek; answer in the user's language but quote transcripts verbatim. - Always cite the `url` fields returned by tools when presenting results. Utterances and transcript segments carry a `url` that opens the video at that exact moment — use it when quoting. - Only released (published) meetings are visible — unless the connected token belongs to a city administrator, who also sees that city's drafts. Creating highlights (`create_highlight`) requires a personal MCP URL or bearer token — users create one on this site's /mcp page, and the highlight tools only appear on connections authenticated that way. If the user asks for highlights and you see no highlight tools, tell them to reconnect with a personal MCP URL (a service key unlocks them too). Pick the utterance IDs from `get_subject_transcript` — or from `get_transcript` with `includeUtteranceIds`, for a meeting that is not summarized yet — that best capture the moment. They need not be consecutive (skip filler, or cut together related exchanges; playback is always in meeting order). Keep highlights short. Ask the user to confirm a highlight once, and settle the video in that same question. When they want a clip, pass `video` to `create_highlight` — landscape or vertical (9:16) for social, with subtitles and speaker overlays on by default — rather than calling `generate_highlight_video` after it. Creating a highlight and rendering it are one step, and a second confirmation for a clip the user already asked for only wastes their time. `generate_highlight_video` is for re-rendering an existing highlight in another format, or for one created without a video. Rendering is asynchronous (a few minutes): poll `get_highlight` and give the user the video URL when it is ready.
Known tools 15
list_hot_subjectsThe most-discussed subjects across all municipalities over a recent period, ranked by debate time — start here for "what is happening in the councils", a weekly roundup, or picking topics worth clipping.
Inferred read-onlylist_nearby_subjectsRecent council subjects around a geographic point — "what has the council discussed about this neighborhood" (for the decision, follow up with get_subject).
Inferred read-onlyget_cityGet a municipality profile: its political parties, and its administrative bodies — the council, committees and κοινότητες that hold meetings.
Inferred read-onlylist_peopleList the people (councillors, mayor, etc.) of a municipality with their roles and party.
Inferred read-onlylist_meetingsList a municipality's council meetings, newest first (or soonest first for upcoming).
Inferred read-onlyget_subjectGet a subject (agenda item) in detail: status, description, per-speaker contribution summaries, decision.
Inferred read-onlyget_subject_transcriptThe verbatim transcript of everything said about one subject, as utterances with ids, speaker names, roles (resolved as of the meeting date) and timestamps.
Inferred read-onlyget_more_toolsCheck for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.opencouncil]
url = "https://opencouncil.gr/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"opencouncil": {
"type": "http",
"url": "https://opencouncil.gr/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: opencouncil
Remote MCP URL: https://opencouncil.gr/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"opencouncil": {
"url": "https://opencouncil.gr/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"opencouncil": {
"type": "http",
"url": "https://opencouncil.gr/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "opencouncil",
"transport": "streamable-http",
"url": "https://opencouncil.gr/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Loading Trust v2 evidence…
Checking the associated registrable domain. The BuiltWith key remains server-side.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.