共享内存服务器

mcp-blackboard是一个轻量级的共享内存服务器,用于在多AI代理系统中存储和检索上下文及结果,支持文档、嵌入和结构化对象等。

  • by peekwez
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 peekwez/mcp-blackboard

使用说明

mcp黑板

版本0.1.0 –一个轻量级的黑板内存服务器 模型上下文协议(MCP)

mcp-blackboard 公开了一个简单的HTTP/SSE接口,允许多个AI代理 存储和检索上下文和结果--文档、嵌入、结构化对象等——在共享的“黑板”上。

它被设计为可以放入任何与MCP兼容的工作流中,这样你的多代理系统就可以共享状态和协作,而无需重新发明持久性。


可用工具

MCP工具

以下工具可在 mcp-blackboard:

  • save_plan(plan_id: str, plan: dict | str) -> str 将计划保存为共享状态。

  • mark_plan_as_completed(plan_id: str, step_id: str) -> str 将计划步骤标记为已在共享状态下完成。

  • save_result(plan_id: str, agent_name: str, step_id: str, description: str, result: str | dict) -> str 将结果保存为共享状态。

  • save_context_description(plan_id: str, file_path_or_url: str, description: str) -> str 为共享状态编写上下文描述。

  • get_blackboard(plan_id: str) -> str | dict | None 拿一个黑板条目来做计划。

  • get_plan(plan_id: str) -> str | dict | None 从共享状态获取计划。

  • get_result(plan_id: str, agent_name: str, step_id: str) -> str | dict | None 从共享状态获取结果。

  • get_context(file_path_or_url: str, use_cache: bool = True) -> str 读取媒体内容并将其转换为Markdown格式。

文件缓存管理计划程序

  • remove_stale_files(max_age: int = 3600) -> None 从缓存目录中删除超过指定年龄的文件。

✨亮点

能力 为什么重要
统一存储器 代理上下文的一个真实来源——不需要临时的草稿文件或临时的Redis密钥。
文件系统抽象 基于 fsspec S3、Azure Blob、GCS、ABFS、SFTP、SMB等的可选驱动程序。
实时更新 服务器发送事件(SSE)流上下文会立即更改到连接的代理。
管家调度员 可插拔的cron作业会自动修剪过期的密钥并刷新嵌入。
集装箱准备就绪 确定性构建通过 uv 锁档;纤薄的Docker镜像小于90 MB。

🚀快速入门

1.本地开发环境

git clone https://github.com/pwc-ca-adv-genai-factory/mcp-blackboard.git
cd mcp-blackboard

# Create an isolated env & install locked deps
uv venv
uv sync

# Copy the sample env and fill in credentials
cp samples/env-sample.txt .env

# Run the server (FastAPI)
uv run src/main.py

API监听 http://127.0.0.1:8000 默认情况下(请参见 src/server.py).

2.Docker编写

docker compose up -d

作曲开始:

  • mcp黑板 –黑板MCP服务器
  • mem黑板 –使用Redis在内存中存储密钥、分数、嵌入和元数据

⚙️配置

所有设置都是环境驱动的:

变量 目的
OPENAI_API_KEY 嵌入/LLM调用(可选)
OPENAI_API_BASE 自定义OpenAI API基础URL(可选)
OPENAI_DEFAULT_MODEL 用于嵌入的OpenAI模型(可选)
MCP_TRANSPORT 活动交通(sse 或 stdio)
CACHE_PATH 文件缓存目录可以是local、abfs、s3等。
REDIS_HOST, REDIS_PORT, REDIS_DB Redis连接
AZURE_STORAGE_ACCOUNT / AWS_ACCESS_KEY_ID /… 远程文件系统的凭据

(参见 samples/env-sample.txt 完整列表)


🏗️项目布局

├── .devcontainer/                # Dev container setup
│   ├── certs/                    # Custom CA certificates
│   │   └── cacert.pem
│   ├── Dockerfile                # Dev container Dockerfile
│   ├── post-create.sh            # Post-creation setup script
│   └── scripts/                  # Utility scripts for dev container
│       ├── add-dependencies.sh
│       └── add-precommit-hooks.sh
├── .vscode/                      # VS Code workspace settings
│   ├── cspell.json               # Spell checker config
│   ├── settings.json             # Workspace settings
│   ├── tasks.json                # Task runner config
├── src/                          # Application source code
│   ├── common.py                 # Config loader & utility functions
│   ├── config.yaml.j2            # Jinja2 template for config
│   ├── main.py                   # App entry point
│   ├── models.py                 # Pydantic models
│   ├── server.py                 # FastAPI server & scheduler
│   └── tools/                    # Tool implementations
│       ├── context.py            # Document/context tools
│       └── memory.py             # Blackboard/memory tools
├── samples/                      # Example files & templates
│   ├── _task.yml                 # Task definition sample
│   ├── credit_report.pdf         # Sample PDF
│   ├── env-sample.txt            # Env variable template
│   ├── loe_sample.png            # Sample PNG
│   ├── plan.json                 # Sample plan
│   └── ps_sample.png             # Additional PNG
├── tests/                        # Test suite
│   └── conftest.py               # Pytest fixtures
├── docker-compose.yaml           # Docker Compose config
├── Dockerfile                    # Production Dockerfile
├── LICENSE                       # MIT License
├── Makefile                      # Build/test commands
├── pyproject.toml                # Project metadata & deps
├── README.md                     # Project documentation
└── uv.lock                       # Dependency lockfile

🧪测试

make tests

🤝贡献

  1. 分叉并创建特征分支
  2. 使用常规提交(feat:, fix:…)
  3. 跑 make lint test 本地
  4. 打开PR——批准后进行合并

📜许可证

分布在 MIT许可证 –参见 LICENSE 了解详情。

©2025 Kwesi Apponsah