MCP server for Fibery GraphQL API. This server provides tools to introspect the Fibery GraphQL API to help your LLM to write valid graphql.
Three tools with basic descriptions and Zod schemas for two of them. list_spaces_and_types has no input schema (empty object). Descriptions are present but lack actionable detail on when/why to use each tool and what to do with outputs. No error handling guidance, no output schema documentation, no parameter descriptions for inputs. Tool names follow verb_noun pattern (good), but descriptions don't explain dependencies or recovery paths. Average description length ~250 chars (within baseline 194 median but verbose). No tool annotations, no pagination support, no structured output guidance.
Get the complete GraphQL schema SDL for a Fibery space. This includes all type definitions, queries, mutations, etc. Although you might think the response is truncated, it is not. Please proceed as if it's not truncated. The following is some markdown documentation on how the fibery graphql api works: The list of entities can be retrieved from the database by using find query which is defined for every database for each space. For example findBugs, findEmployees. ## Filtering Filters can be applied by providing filtering arguments for find queries. ### String filtering operators is: String isNot: String contains: String notContains: String greater: String greaterOrEquals: String less: String lessOrEquals: String in: [String] notIn: [String] isNull: Boolean ### Int filtering operators is: Int isNot: Int greater: Int greaterOrEquals: Int less: Int lessOrEquals: Int in: [Int] notIn: [Int] isNull: Boolean ### Float filtering operators is: Float isNot: Float greater: Float greaterOrEquals: Float less: Float lessOrEquals: Float in: [Float] notIn: [Float] isNull: Boolean ### Boolean filtering operators is: Boolean isNull: Boolean ### ID filtering operators is: ID isNot: ID in: [ID] notIn: [ID] isNull: Boolean ### Filtering by inner lists isEmpty: Boolean contains: [InnerListDbFilter] // AND statement containsAny: [InnerListDbFilter] // OR statement notContains: [InnerListDbFilter] // AND statement notContainsAny: [InnerListDbFilter] // OR statement ## Sorting Use orderBy argument which can be applied for native fields or one-to-one properties. Example: orderBy: { releaseDate: DESC } ## Rich fields and comments Rich text fields or comments can be downloaded in four formats: jsonString, text, md, html. ## Paging and limits By default, find database query returns 100 records. Use limit and offset arguments to control pagination. Example: findBugs(limit:3, offset:3) ## Aliases GraphQL aliases can be used for find query as alternative to OR statement. Example: { todo: findBugs(state:{name:{is:"To Do"}}) done: findBugs(state:{name:{is:"Done"}}) } After using this tool to generate schema, you should always call validate_fibery_graphql to validate your queries.
list_spaces_and_types has no input schema (empty object {}). This tool should document what it returns and when to call it before get_schema_sdl.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields without knowing response structure. get_schema_sdl returns {space_id, sdl} but this is not declared in tool definition.
get_schema_sdl description is 600+ chars and embeds Fibery API documentation inline. This wastes tokens and buries the core purpose. Separate API docs into a README or discovery tool; keep tool description to 50-200 chars explaining WHAT it does and WHEN to call it.
No error handling guidance. If space_id is invalid or token expires, errors are thrown but LLM gets no recovery path. Should return 'Space not found. Call list_spaces_and_types to find valid space IDs.' instead of raw exception.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
List all Fibery GraphQL spaces and types (types are also known as databases). Use this when a space, type or database name is provided and you want to find the correct ID name of the space.
Validate a generated GraphQL query or mutation for Fibery against the known schema. Returns any validation errors.
Tool composition assumes linear workflow (list → get_schema → validate) but does not document this dependency. Descriptions should state 'Call list_spaces_and_types first to find space_id' and 'Call get_schema_sdl before validate_fibery_graphql to understand available fields.'