Jellyfish MCP Server Security Advisory
Review security guidance before deploying this Jellyfish MCP server; consult SECURITY.md for known risks and implementation limitations.
npx -y @Jellyfish-AI/jellyfish-mcpOverview
This MCP (Model Context Protocol) server exposes Jellyfish API data to host applications (for example Claude Desktop, Cursor, or VSCode) so language models can answer natural-language queries about engineering metrics, teams, allocations, delivery, and more. The server maps specific Jellyfish API endpoints into MCP “tools” the host can call; hosts can use these tools to retrieve structured data that a model can reason over when answering user prompts.
Before deploying, review SECURITY.md in the repository for documented risks and implementation limitations. This implementation includes optional integration with a PromptGuard verifier (Meta Llama PromptGuard via Hugging Face) to reduce prompt-injection risk, but it is not a complete mitigation. Treat API tokens and model safeguards as part of a defense-in-depth approach.
Features
- Bridges Jellyfish API data into MCP-compatible tools for LLM hosts
- Tool-per-endpoint design: each Jellyfish endpoint is exposed as an MCP tool
- Optional PromptGuard verification to reduce prompt injection risk
- Multiple deployment paths: Claude Desktop extension, Docker container, or local Node run
- Lightweight required configuration: Jellyfish API token is mandatory; PromptGuard-related variables are optional
Installation / Configuration
Prerequisites
- Jellyfish API token (required)
- Optional: Hugging Face token with access to PromptGuard models (for PromptGuard integration)
- For Docker: Docker installed
- For local: Node.js (v18+ recommended) and npm
Environment variables
JELLYFISH_API_TOKEN # required — Jellyfish API token
HUGGINGFACE_API_TOKEN # optional — enables PromptGuard verification
MODEL_AVAILABILITY=false # optional — allow data when PromptGuard is unreachable? (true|false). Default: false
MODEL_TIMEOUT=10 # optional — seconds to wait for PromptGuard. Default: 10
Example .claude.json / mcp.json (snippet)
Docker (recommended for hosts that support stdio transport)
# Example: register with Claude's MCP using stdio transport
Local (development / modification)
# Start with env vars set
# optional
Claude Desktop extension
- Download the .mcpb file from the repository releases and install via Claude Desktop. Follow the extension prompts to supply required tokens.
Available Tools / Resources
The server exposes tools grouped by Jellyfish domain. Each tool maps to a Jellyfish API endpoint.
General
- get_api_schema
Allocations
- allocations_by_person
- allocations_by_team
- allocations_by_investment_category
- allocations_by_investment_category_person
- allocations_by_investment_category_team
- allocations_by_work_category
- allocations_by_work_category_person
- allocations_by_work_category_team
- allocations_filter_fields
- allocations_summary_by_investment_category
- allocations_summary_by_work_category
Delivery
- deliverable_details
- deliverable_scope_and_effort_history
- work_categories
- work_category_contents
DevEx
- devex_insights_by_team
Metrics
- company_metrics
- person_metrics
- team_metrics
- team_sprint_summary
- unlinked_pull_requests
People & Teams
- list_engineers
- search_people
- list_teams
- search_teams
Each tool accepts parameters consistent with the corresponding Jellyfish API endpoint (filtering, date ranges, pagination). Use get_api_schema to inspect available endpoints and schemas programmatically.
Use Cases (concrete examples)
“What were our company metrics in December 2025?”
- Host requests company_metrics for a date range; model synthesizes a human-readable summary using returned values.
“List unlinked pull requests in the last 30 days”
- Call unlinked_pull_requests with timeframe parameters to surface PRs that lack tracking/delivery linkage.
“Show allocations by person for Q1 2026”
- Use allocations_by_person with start/end dates and grouping to produce a per-person allocation breakdown.
Example flow (high level)
- User asks a question in the host app.
- Host invokes an MCP tool (e.g., team_metrics) with structured parameters.
- Server fetches data from Jellyfish API, optionally runs PromptGuard verification, and returns structured JSON to the host.
- LLM composes a human-friendly response using that data.
Security Advisory & Best Practices
Important: consult SECURITY.md in the project root for known risks and implementation limitations before using this server in production.
Key recommendations
- Secrets: never commit JELLYFISH_API_TOKEN or HUGGINGFACE_API_TOKEN to source control. Use environment variables or a secrets manager.
- Least privilege: limit API token permissions and token time-to-live in Jellyfish. Rotate tokens regularly.
- Network exposure: do not bind the server to a public interface unless protected by a firewall or reverse proxy with authentication. Prefer running in a private network or via stdio transport when used by a local host.
- Prompt injection: PromptGuard integration helps but is not foolproof. Treat returned data as privileged and combine PromptGuard with additional application-level input/output sanitization and filtering.
- Monitoring & rate limits: monitor API usage and logs for anomalous requests. Respect Jellyfish rate limits and add retry/backoff logic.
- Container hardening: run containers with non-root users, limit capabilities, and keep images up-to-date. Scan dependencies and update frequently.
- Fail-open vs fail-closed: configure MODEL_AVAILABILITY according to your risk tolerance. Setting MODEL_AVAILABILITY=false blocks data when PromptGuard is unavailable; true allows data to flow.
- Audit and review: review and test the MCP behavior in a staging environment and validate that the outputs match organizational security policies.
Where to get more information
- Source and releases: https://github.com/Jellyfish-AI/jellyfish-mcp
- Security guidance and known issues: see SECURITY.md in the repository
- API schema: use the get_api_schema tool to inspect available endpoints and field types programmatically
If you plan to deploy this server in production, perform a security review tailored to your environment and combine the server’s optional protections