You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+213Lines changed: 213 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -765,6 +765,211 @@ mcp:
765
765
}
766
766
```
767
767
768
+
### ✅ TODO Server
769
+
770
+
A shared TODO list management server that allows multiple agents to coordinate tasks with states and assignees. Perfect for agent team coordination.
771
+
772
+
**Features:**
773
+
- Shared TODO list accessible by multiple agents/processes
774
+
- File-based persistence with atomic writes
775
+
- File locking for concurrent access safety
776
+
- Task states: pending, in_progress, done
777
+
- Assignee tracking for task ownership
778
+
- Full CRUD operations (add, update, remove, list)
779
+
- Status summary with counts by state and assignee
780
+
781
+
**Tools:**
782
+
- `add_todo`- Add a new TODO item to the shared list
783
+
- `update_todo_status`- Update the status of a TODO item (pending, in_progress, or done)
784
+
- `update_todo_assignee`- Update the assignee of a TODO item
785
+
- `remove_todo`- Remove a TODO item by ID
786
+
- `list_todos`- List all TODO items
787
+
- `get_todo_status`- Get a summary of the TODO list with counts by status and assignee
788
+
789
+
**Configuration:**
790
+
- `TODO_FILE_PATH` - Environment variable to set the TODO file path (default: `/data/todos.json`)
791
+
792
+
**TODO Item Format:**
793
+
```json
794
+
{
795
+
"id": "1703123456789000000",
796
+
"title": "Implement feature X",
797
+
"status": "in_progress",
798
+
"assignee": "agent1"
799
+
}
800
+
```
801
+
802
+
**Add TODO Input Format:**
803
+
```json
804
+
{
805
+
"title": "Implement feature X",
806
+
"assignee": "agent1"
807
+
}
808
+
```
809
+
810
+
**Update Status Input Format:**
811
+
```json
812
+
{
813
+
"id": "1703123456789000000",
814
+
"status": "done"
815
+
}
816
+
```
817
+
818
+
**List TODOs Output Format:**
819
+
```json
820
+
{
821
+
"items": [
822
+
{
823
+
"id": "1703123456789000000",
824
+
"title": "Implement feature X",
825
+
"status": "in_progress",
826
+
"assignee": "agent1"
827
+
}
828
+
],
829
+
"count": 1
830
+
}
831
+
```
832
+
833
+
**Status Summary Output Format:**
834
+
```json
835
+
{
836
+
"total": 10,
837
+
"pending": 3,
838
+
"in_progress": 5,
839
+
"done": 2,
840
+
"by_assignee": {
841
+
"agent1": 4,
842
+
"agent2": 6
843
+
}
844
+
}
845
+
```
846
+
847
+
**Docker Image:**
848
+
```bash
849
+
docker run -e TODO_FILE_PATH=/custom/path/todos.json -v /host/data:/data ghcr.io/mudler/mcps/todo:latest
850
+
```
851
+
852
+
**LocalAI configuration (to add to the model config):**
853
+
```yaml
854
+
mcp:
855
+
stdio: |
856
+
{
857
+
"mcpServers": {
858
+
"todo": {
859
+
"command": "docker",
860
+
"env": {
861
+
"TODO_FILE_PATH": "/data/todos.json"
862
+
},
863
+
"args": [
864
+
"run", "-i", "--rm", "-v", "/host/data:/data",
865
+
"ghcr.io/mudler/mcps/todo:master"
866
+
]
867
+
}
868
+
}
869
+
}
870
+
```
871
+
872
+
### 📬 Mailbox Server
873
+
874
+
A shared mailbox server that enables message exchange between different agents in a team. Each agent instance reads only its own messages while being able to send messages to any agent.
875
+
876
+
**Features:**
877
+
- Shared mailbox accessible by multiple agents/processes
878
+
- File-based persistence with atomic writes
879
+
- File locking for concurrent access safety
880
+
- Agent-specific message filtering
881
+
- Read/unread status tracking
882
+
- Message deletion (only by recipient)
883
+
- Timestamp tracking for all messages
884
+
885
+
**Tools:**
886
+
- `send_message`- Send a message to a recipient agent
887
+
- `read_messages`- Read all messages for this agent
888
+
- `mark_message_read`- Mark a message as read by ID
889
+
- `mark_message_unread`- Mark a message as unread by ID
890
+
- `delete_message`- Delete a message by ID (only if recipient matches this agent)
891
+
892
+
**Configuration:**
893
+
- `MAILBOX_FILE_PATH` - Environment variable to set the mailbox file path (default: `/data/mailbox.json`)
894
+
- `MAILBOX_AGENT_NAME`- Environment variable for this agent's name (required)
895
+
896
+
**Message Format:**
897
+
```json
898
+
{
899
+
"id": "1703123456789000000",
900
+
"sender": "agent1",
901
+
"recipient": "agent2",
902
+
"content": "Please review the changes",
903
+
"timestamp": "2023-12-21T10:30:56.789Z",
904
+
"read": false
905
+
}
906
+
```
907
+
908
+
**Send Message Input Format:**
909
+
```json
910
+
{
911
+
"recipient": "agent2",
912
+
"content": "Please review the changes"
913
+
}
914
+
```
915
+
916
+
**Send Message Output Format:**
917
+
```json
918
+
{
919
+
"id": "1703123456789000000",
920
+
"sender": "agent1",
921
+
"recipient": "agent2",
922
+
"content": "Please review the changes",
923
+
"timestamp": "2023-12-21T10:30:56.789Z"
924
+
}
925
+
```
926
+
927
+
**Read Messages Output Format:**
928
+
```json
929
+
{
930
+
"messages": [
931
+
{
932
+
"id": "1703123456789000000",
933
+
"sender": "agent1",
934
+
"recipient": "agent2",
935
+
"content": "Please review the changes",
936
+
"timestamp": "2023-12-21T10:30:56.789Z",
937
+
"read": false
938
+
}
939
+
],
940
+
"count": 1,
941
+
"unread": 1
942
+
}
943
+
```
944
+
945
+
**Docker Image:**
946
+
```bash
947
+
docker run -e MAILBOX_FILE_PATH=/custom/path/mailbox.json -e MAILBOX_AGENT_NAME=agent1 -v /host/data:/data ghcr.io/mudler/mcps/mailbox:latest
948
+
```
949
+
950
+
**LocalAI configuration (to add to the model config):**
951
+
```yaml
952
+
mcp:
953
+
stdio: |
954
+
{
955
+
"mcpServers": {
956
+
"mailbox": {
957
+
"command": "docker",
958
+
"env": {
959
+
"MAILBOX_FILE_PATH": "/data/mailbox.json",
960
+
"MAILBOX_AGENT_NAME": "agent1"
961
+
},
962
+
"args": [
963
+
"run", "-i", "--rm", "-v", "/host/data:/data",
964
+
"ghcr.io/mudler/mcps/mailbox:master"
965
+
]
966
+
}
967
+
}
968
+
}
969
+
```
970
+
971
+
**Note:** Each agent instance must have a unique `MAILBOX_AGENT_NAME` to properly filter and manage its own messages. The mailbox file is shared across all agents, but each agent only sees messages where it is the recipient.
972
+
768
973
## Development
769
974
770
975
### Prerequisites
@@ -792,6 +997,8 @@ make MCP_SERVER=shell build
792
997
make MCP_SERVER=ssh build
793
998
make MCP_SERVER=scripts build
794
999
make MCP_SERVER=localrecall build
1000
+
make MCP_SERVER=todo build
1001
+
make MCP_SERVER=mailbox build
795
1002
796
1003
# Run tests and checks
797
1004
make ci-local
@@ -865,6 +1072,12 @@ Docker images are automatically built and pushed to GitHub Container Registry:
865
1072
- `ghcr.io/mudler/mcps/localrecall:latest`- Latest LocalRecall server
0 commit comments