fds-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FDS_MCP_BASE_URL | No | Base URL of the FragDenStaat instance. Only https origins without a path or credentials are accepted. | https://fragdenstaat.de |
| FDS_MCP_DRAFT_DIR | No | Every draft path must stay inside this directory (: -separated list). | |
| FDS_MCP_BROWSER_SEND | No | Set to '1' to register the send_reply_via_browser tool. Unset or any other value disables the tool. | |
| FDS_MCP_DOWNLOAD_DIR | No | Every download_attachment target must stay inside this directory. | |
| FDS_MCP_BROWSER_PROFILE | No | Browser profile directory for the send_reply_via_browser tool. Point it at a profile logged in to fragdenstaat.de and nothing else. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_authoritiesA | Search public bodies on fragdenstaat.de. GREEN: no auth, no side effects. |
| get_authorityA | Full record for one public body, including its laws. GREEN. |
| get_lawC | One freedom-of-information act with its deadline rules. GREEN. |
| check_jurisdictionA | Which authority covers a given place? GREEN — returns the evidence trail. |
| list_my_requestsA | Your own FOI requests. YELLOW: needs a token (scope read:request), read only. |
| get_requestB | One FOI request in detail. YELLOW (public requests work without a token). |
| get_messagesB | All messages of a request, oldest first. YELLOW. |
| list_attachmentsB | Attachments belonging to one message. YELLOW. |
| download_attachmentA | Download one attachment into a local directory. YELLOW: reading only. |
| check_deadlinesA | Your open requests whose statutory deadline has passed. YELLOW. |
| build_reply_draftA | Prepare a follow-up message to an authority. YELLOW: reads the API, sends nothing. |
| create_request_draftA | Write a local YAML draft. RED tier, but performs NO network traffic at all. |
| validate_draftA | Run the rule set against a draft. RED tier. |
| build_submit_urlA | Build the prefilled web form URL — the recommended way out. RED tier. |
| submit_requestA | Actually POST the request to fragdenstaat.de. RED tier — IRREVERSIBLE. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Every tool maps to a distinct resource or action: authority lookup, jurisdiction resolution, request retrieval, message/attachment access, deadline checks, and the draft/submit pipeline. Even the several draft-related tools are clearly separated by request vs reply and validate/build/submit roles.
Tool names mostly follow a clear verb_noun pattern like list_my_requests, get_request, download_attachment, and submit_request. Minor inconsistencies exist, such as create_request_draft vs build_reply_draft and get_messages vs list_attachments, but the overall convention remains predictable.
With 15 tools, the server is at the upper edge of a well-scoped set but each tool earns its place. The count reflects a complete workflow: discovery, retrieval, attachments, deadlines, draft validation, URL generation, and submission.
The domain is well covered: authority and law lookup, request/message/attachment retrieval, deadline checking, request drafting/validation/submission, and reply drafting all exist. The main gap is that reply submission is not provided by any tool, though the description explains this is an API limitation and the workflow hands off to a human.