pinkbee-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pinkbee-mcpWhich shifts still need people for next week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pinkbee-mcp
Unofficial community integration; not affiliated with or supported by Pinkbee.
Proof of concept.
A read-only MCP server for Pinkbee
(*.mijnpinkbee.nl), an online platform for planning shifts and managing
volunteers.
It lets an AI assistant answer questions about a roster — which shifts still need people, who is scheduled, who is in which group — and nothing more: it cannot book, cancel or change anything.
Run it
Get the docker compose file
curl -fsSLO https://raw.githubusercontent.com/withoutanickname/pinkbee-mcp/main/docker-compose.ymlDeploy docker compose
docker compose up -dThat is all. It pulls withoutanickname/pinkbee-mcp and starts on built-in sample
data, so there is nothing to configure and no risk to anyone's real roster. The MCP
endpoint is then on http://<server-lan-ip>:8087/mcp (and on
http://127.0.0.1:8087/mcp from the server itself).
Without compose:
docker run -d --name pinkbee-mcp -p 8087:8080 withoutanickname/pinkbee-mcpTo build from this checkout instead, uncomment build: . in docker-compose.yml and
run docker compose up -d --build.
Point your MCP client at that URL, or try it from the terminal:
curl -s -X POST http://127.0.0.1:8087/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"pinkbee_check_connection","arguments":{}}}' | sed -n 's/^data: //p' | jq -r '.result.content[0].text'Related MCP server: Slack MCP Server
Available calls
Call | Arguments | What it answers |
| none | Which data source is in use, and does it answer? |
| none | Every group and shift with its id, and which groups may take which shift |
|
| The full roster for the weeks around the supplied dates |
| optional | Shifts that still have open spots over the coming weeks |
|
| Email addresses of volunteers in a group (personal data) |
|
| Who signed up for which shift (personal data) |
Group and shift names are chosen by each Pinkbee administrator, so nothing here
assumes any particular naming: pinkbee_list_groups_and_shifts returns the whole
list and the assistant matches the names itself.
All calls are enabled by default. Disable one or more by putting their full names in the comma-separated blacklist:
PINKBEE_DISABLED_CALLS=pinkbee_list_group_emails,pinkbee_list_registrationsDisabled calls are removed from discovery as well as invocation. An unknown name is treated as a configuration error instead of being silently ignored.
Connect it to a real Pinkbee
cp .env.example .envSet these four, then docker compose up -d:
PINKBEE_DATA_SOURCE=live
PINKBEE_BASE_URL=https://your-organisation.mijnpinkbee.nl
PINKBEE_LOGIN=
PINKBEE_PASSWORD=Use an account that only needs to read the roster. Compose reads these values from
.env; every supported variable and default is visible under environment in
docker-compose.yml.
Network access
The Compose service listens on all host interfaces so another service on the LAN can
connect without extra configuration. By default, every sender that can reach port
8087 is allowed. A bearer token is recommended even on a trusted LAN.
When upgrading from an older release that published only on 127.0.0.1, note that
this default deliberately adds LAN access. Set a token and/or sender allowlist before
upgrading a live deployment if the LAN is not fully trusted.
To restrict access, set exact sender IPs or DNS names:
PINKBEE_ALLOWED_SENDERS=192.168.1.42,agent.domain.example.comThis allowlist checks the IP of the client or service making the MCP request. It does not list the current machine's/server's own IP. DNS names are resolved to sender IPs once when the MCP starts. Behind a reverse proxy, the sender seen by the MCP is normally the proxy; see docs/deploying.md.
Browser requests carrying an Origin header are rejected to prevent a web page from
driving the LAN service through DNS rebinding. Normal MCP clients do not send it.
Safety
Read-only. Every request to Pinkbee is a GET. The only POST in the whole codebase is the login itself.
Mock data by default. Reaching a live instance needs a deliberate
PINKBEE_DATA_SOURCE=liveand credentials, or the server refuses to start.Personal data is off by default. The two tools that return names or email addresses refuse until you set
PINKBEE_ALLOW_PERSONAL_DATA=true.A filter can never widen by accident. An id that does not exist is an error, an unknown argument name is refused, and asking for every shift takes an explicit
all_shifts=true. Date ranges and id lists are capped.Credentials only over HTTPS. A plain
http://Pinkbee URL is refused, since logging in sends the password.Simple network policy. LAN access is on by default. Use
PINKBEE_ALLOWED_SENDERSfor sender-IP filtering andPINKBEE_MCP_TOKENfor a shared bearer token. There is no TLS inside the container, so use a trusted LAN or put a TLS reverse proxy in front.One exception, on purpose:
PINKBEE_LOG_LEVEL=DEBUGalso turns on the libraries' debug output, which prints whole response bodies — so personal data does appear in debug logs. Use it while troubleshooting, not in normal running. See docs/deploying.md.
Documentation
Document | Contents |
Every setting, sender access, TLS, health check, upgrading | |
A worked curl example per tool, and two traps to avoid | |
The Pinkbee API: login, the endpoints used, how to find more | |
How the session cookie is obtained, reused and renewed | |
Code layout, the mock data, running the tests |
Licence
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA read-only MCP server that provides visibility into Parallels Remote Application Server infrastructure, policies, and sessions through the RAS REST API. It enables AI assistants to query site settings, published applications, and license status without performing any modifications.411MIT
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that enables AI assistants to access Slack workspace data, including channels, messages, threads, and user information.24,3163MIT
- AlicenseAqualityBmaintenanceA read-only MCP server that transforms Deputy workforce records into operational workflows, enabling AI assistants to answer questions about coverage gaps, overtime risk, timesheet exceptions, availability conflicts, and staffing summaries.536MIT
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server that enables AI agents to act as GCP platform engineers, allowing them to investigate incidents, take inventory, and find cost-optimization opportunities in Google Cloud projects without mutating any infrastructure.2MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Read-only MCP server for Robinhood Chain token discovery, research, and due diligence via GMGN.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LaurensdeGraaff/pinkbee-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server