Skip to content

Commit da63b1a

Browse files
committed
Add mcp/fibery
Signed-off-by: David Gageot <david.gageot@docker.com>
1 parent daac548 commit da63b1a

File tree

3 files changed

+277
-0
lines changed

3 files changed

+277
-0
lines changed

prompts/catalog.yaml

+19
Original file line numberDiff line numberDiff line change
@@ -2640,3 +2640,22 @@ registry:
26402640
properties:
26412641
key_id:
26422642
type: string
2643+
fibery:
2644+
description: Interact with your Fibery workspace.
2645+
title: Fibery
2646+
ref: github:docker/labs-ai-tools-for-devs?ref=main&path=prompts/mcp/fibery.md
2647+
readme: https://github.com/docker/labs-ai-tools-for-devs/blob/main/prompts/mcp/readmes/fibery.md
2648+
source: https://github.com/Fibery-inc/fibery-mcp-server/tree/main
2649+
icon: https://avatars.githubusercontent.com/u/72027989?v=4
2650+
tools:
2651+
- name: create_entities_batch
2652+
- name: create_entity
2653+
- name: current_date
2654+
- name: describe_database
2655+
- name: list_databases
2656+
- name: query_database
2657+
- name: update_entity
2658+
secrets:
2659+
- name: fibery.api_token
2660+
prompts: 0
2661+
resources: {}

prompts/mcp/fibery.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
mcp:
3+
- container:
4+
image: mcp/fibery:latest
5+
workdir: /app
6+
secrets:
7+
fibery.api_token: FIBERY_API_TOKEN
8+
environment:
9+
FIBERY_HOST: "{{fibery.host|safe}}"
10+
source:
11+
url: https://github.com/Fibery-inc/fibery-mcp-server/tree/main
12+
---

prompts/mcp/readmes/fibery.md

+246
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
# Fibery MCP Server
2+
3+
Interact with your Fibery workspace.
4+
5+
[What is an MCP Server?](https://www.anthropic.com/news/model-context-protocol)
6+
7+
## Characteristics
8+
Attribute|Details|
9+
|-|-|
10+
**Image Source**|Official Image
11+
**Docker Image**|[mcp/fibery](https://hub.docker.com/repository/docker/mcp/fibery)
12+
**Author**|[Fibery-inc](https://github.com/Fibery-inc)
13+
**Repository**|https://github.com/Fibery-inc/fibery-mcp-server
14+
**Dockerfile**|https://github.com/Fibery-inc/fibery-mcp-server/blob/main/Dockerfile
15+
**Docker Image built by**|Docker Inc.
16+
**Docker Scout Health Score**| ![Docker Scout Health Score](https://api.scout.docker.com/v1/policy/insights/org-image-score/badge/mcp/fibery)
17+
**Licence**|MIT License
18+
19+
## Available Tools
20+
Tools provided by this Server|Short Description
21+
-|-
22+
`create_entities_batch`|Create multiple Fibery entities at once with specified fields.|
23+
`create_entity`|Create Fibery entity with specified fields.|
24+
`current_date`|Get today's date in ISO 8601 format (YYYY-mm-dd.HH:MM:SS.000Z)|
25+
`describe_database`|Get list of all fields (in format of 'Title [name]: type') in the selected Fibery database and for all related databases.|
26+
`list_databases`|Get list of all databases (their names) in user's Fibery workspace (schema)|
27+
`query_database`|Run any Fibery API command.|
28+
`update_entity`|Update Fibery entity with specified fields.|
29+
30+
---
31+
## Tools Details
32+
33+
#### Tool: **`create_entities_batch`**
34+
Create multiple Fibery entities at once with specified fields.
35+
Examples (note, that these databases are non-existent, use databases only from user's schema!):
36+
Query: Create some features
37+
Tool use:
38+
{
39+
"database": "Product Management/Feature",
40+
"entities": [
41+
{
42+
"Product Management/Name": "New Feature 1",
43+
"Product Management/Description": "Description of the new feature 1",
44+
"workflow/state": "To Do" # notice how we use string literal for workflow field here
45+
},
46+
{
47+
"Product Management/Name": "New Feature 2",
48+
"Product Management/Description": "Description of the new feature 2",
49+
"workflow/state": "In Progress" # notice how we use string literal for workflow field here
50+
}
51+
]
52+
}
53+
In case of successful execution, you will get links to created entities. Make sure to give the links to the user.
54+
Parameters|Type|Description
55+
-|-|-
56+
`database`|`string`|Fibery Database where entities will be created.
57+
`entities`|`object`|List of dictionaries that define what fields to set in format [{"FieldName": value}] (i.e. [{"Product Management/Name": "My new entity"}]).
58+
59+
---
60+
#### Tool: **`create_entity`**
61+
Create Fibery entity with specified fields.
62+
Examples (note, that these databases are non-existent, use databases only from user's schema!):
63+
Query: Create a feature
64+
Tool use:
65+
{
66+
"database": "Product Management/Feature",
67+
"entity": {
68+
"Product Management/Name": "New Feature",
69+
"Product Management/Description": "Description of the new feature",
70+
"workflow/state": "To Do" # notice how we use string literal for workflow field here
71+
}
72+
}
73+
In case of successful execution, you will get a link to created entity. Make sure to give that link to the user.
74+
Parameters|Type|Description
75+
-|-|-
76+
`database`|`string`|Fibery Database where to create an entity.
77+
`entity`|`object`|Dictionary that defines what fields to set in format {"FieldName": value} (i.e. {"Product Management/Name": "My new entity"}).
78+
79+
---
80+
#### Tool: **`current_date`**
81+
Get today's date in ISO 8601 format (YYYY-mm-dd.HH:MM:SS.000Z)
82+
#### Tool: **`describe_database`**
83+
Get list of all fields (in format of 'Title [name]: type') in the selected Fibery database and for all related databases.
84+
Parameters|Type|Description
85+
-|-|-
86+
`database_name`|`string`|Database name as defined in Fibery schema
87+
88+
---
89+
#### Tool: **`list_databases`**
90+
Get list of all databases (their names) in user's Fibery workspace (schema)
91+
#### Tool: **`query_database`**
92+
Run any Fibery API command. This gives tremendous flexibility, but requires a bit of experience with the low-level Fibery API. In case query succeeded, return value contains a list of records with fields you specified in select. If request failed, will return detailed error message.
93+
Examples (note, that these databases are non-existent, use databases only from user's schema!):
94+
Query: What newly created Features do we have for the past 2 months?
95+
Tool use:
96+
{
97+
"q_from": "Dev/Feature",
98+
"q_select": {
99+
"Name": ["Dev/Name"],
100+
"Public Id": ["fibery/public-id"],
101+
"Creation Date": ["fibery/creation-date"]
102+
},
103+
"q_where": [">", ["fibery/creation-date"], "$twoMonthsAgo"],
104+
"q_order_by": {"fibery/creation-date": "q/desc"},
105+
"q_limit": 100,
106+
"q_offset": 0,
107+
"q_params": {
108+
$twoMonthsAgo: "2025-01-16T00:00:00.000Z"
109+
}
110+
}
111+
112+
Query: What Admin Tasks for the past week are Approval or Done?
113+
Tool use:
114+
{
115+
"q_from": "Administrative/Admin Task",
116+
"q_select": {
117+
"Name": ["Administrative/Name"],
118+
"Public Id": ["fibery/public-id"],
119+
"Creation Date": ["fibery/creation-date"],
120+
"State": ["workflow/state", "enum/name"]
121+
},
122+
"q_where": [
123+
"q/and", # satisfy time AND states condition
124+
[">", ["fibery/creation-date"], "$oneWeekAgo"],
125+
[
126+
"q/or", # nested or, since entity can be in either of these states
127+
["=", ["workflow/state", "enum/name"], "$state1"],
128+
["=", ["workflow/state", "enum/name"], "$state2"]
129+
]
130+
],
131+
"q_order_by": {"fibery/creation-date": "q/desc"},
132+
"q_limit": 100,
133+
"q_offset": 0,
134+
"q_params": { # notice that parameters used in "where" are always passed in params!
135+
$oneWeekAgo: "2025-03-07T00:00:00.000Z",
136+
$state1: "Approval",
137+
$state2: "Done"
138+
}
139+
}
140+
141+
Query: What Admin Tasks for the past week are Approval or Done?
142+
Tool use:
143+
{
144+
"q_from": "Administrative/Admin Task",
145+
"q_select": {
146+
"State": ["workflow/state", "enum/name"],
147+
"Public Id": ["fibery/public-id"],
148+
"Creation Date": ["fibery/creation-date"],
149+
"Modification Date": ["fibery/modification-date"],
150+
"Deadline": ["Administrative/Deadline"],
151+
"Group": ["Administrative/Group", "Administrative/name"],
152+
"Name": ["Administrative/Name"],
153+
"Priority": ["Administrative/Priority_Administrative/Admin Task", "enum/name"]
154+
},
155+
"q_where": ["!=", ["workflow/state", "workflow/Final"], "$stateType"], # Administrative/Admin Task is not "Finished" yet
156+
"q_order_by": {"fibery/creation-date": "q/desc"},
157+
"q_limit": 100,
158+
"q_offset": 0,
159+
"q_params: {
160+
"$stateType": true
161+
}
162+
}
163+
164+
Query: Summarize acc contacts with public id 1.
165+
Tool use:
166+
{
167+
"q_from": "Accounting/Acc Contacts",
168+
"q_select": {
169+
"Name": ["Accounting/Name"],
170+
"Public Id": ["fibery/public-id"],
171+
"Creation Date": ["fibery/creation-date"],
172+
"Description": ["Accounting/Description"]
173+
},
174+
"q_where": ["=", ["fibery/public-id"], "$publicId"],
175+
"q_limit": 1,
176+
"q_params": {
177+
$publicId: "1",
178+
}
179+
}
180+
Parameters|Type|Description
181+
-|-|-
182+
`q_from`|`string`|Specifies the entity type in "Space/Type" format (e.g., "Product Management/feature", "Product Management/Insight")
183+
`q_select`|`object`|Defines what fields to retrieve. Can include:
184+
- Primitive fields using format {"AliasName": "FieldName"} (i.e. {"Name": "Product Management/Name"})
185+
- Related entity fields using format {"AliasName": ["Related entity", "related entity field"]} (i.e. {"Secret": ["Product Management/Description", "Collaboration~Documents/secret"]}). Careful, does not work with 1-* connection!
186+
To work with 1-* relationships, you can use sub-querying: {"AliasName": {"q/from": "Related type", "q/select": {"AliasName 2": "fibery/id"}, "q/limit": 50}}
187+
AliasName can be of any arbitrary value.
188+
`q_limit`|`integer` *optional*|Number of results per page (defaults to 50). Maximum allowed value is 1000
189+
`q_offset`|`integer` *optional*|Number of results to skip. Mainly used in combination with limit and orderBy for pagination.
190+
`q_order_by`|`object` *optional*|List of sorting criteria in format {"field1": "q/asc", "field2": "q/desc"}
191+
`q_params`|`object` *optional*|Dictionary of parameter values referenced in where using "$param" syntax. For example, {$fromDate: "2025-01-01"}
192+
`q_where`|`object` *optional*|Filter conditions in format [operator, [field_path], value] or ["q/and"|"q/or", ...conditions]. Common usages:
193+
- Simple comparison: ["=", ["field", "path"], "$param"]. You cannot pass value of $param directly in where clause. Use params object instead. Pay really close attention to it as it is not common practice, but that's how it works in our case!
194+
- Logical combinations: ["q/and", ["<", ["field1"], "$param1"], ["=", ["field2"], "$param2"]]
195+
- Available operators: =, !=, <, <=, >, >=, q/contains, q/not-contains, q/in, q/not-in
196+
197+
---
198+
#### Tool: **`update_entity`**
199+
Update Fibery entity with specified fields.
200+
Examples (note, that these databases are non-existent, use databases only from user's schema!):
201+
Query: Update a feature we talked about
202+
Tool use:
203+
{
204+
"database": "Product Management/Feature",
205+
"entity": {
206+
"fibery/id": "12345678-1234-5678-1234-567812345678",
207+
"Product Management/Name": "New Feature 2",
208+
"Product Management/Description": {"append": true, "content": "Notes: some notes"},
209+
"workflow/state": "In Progress"
210+
}
211+
}
212+
In case of successful execution, you will get a link to updated entity. Make sure to give that link to the user.
213+
Parameters|Type|Description
214+
-|-|-
215+
`database`|`string`|Fibery Database where to update an entity.
216+
`entity`|`object`|Dictionary that defines what fields to set in format {"FieldName": value} (i.e. {"Product Management/Name": "My new entity"}).
217+
Exception are document fields. For them you must specify append (boolean, whether to append to current content) and content itself: {"Product Management/Description": {"append": true, "content": "Additional info"}}
218+
219+
---
220+
## Use this MCP Server
221+
222+
```json
223+
{
224+
"mcpServers": {
225+
"fibery": {
226+
"command": "docker",
227+
"args": [
228+
"run",
229+
"-i",
230+
"--rm",
231+
"-e",
232+
"FIBERY_HOST",
233+
"-e",
234+
"FIBERY_API_TOKEN",
235+
"mcp/fibery"
236+
],
237+
"env": {
238+
"FIBERY_HOST": "your-domain.fibery.io",
239+
"FIBERY_API_TOKEN": "your-api-token"
240+
}
241+
}
242+
}
243+
}
244+
```
245+
246+
[Why is it safer to run MCP Servers with Docker?](https://www.docker.com/blog/the-model-context-protocol-simplifying-building-ai-apps-with-anthropic-claude-desktop-and-docker/)

0 commit comments

Comments
 (0)