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.pyAPI监听 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______________________________________________________________________
🤝贡献
- 分叉并创建特征分支
- 使用常规提交(
feat:,fix:…) - 跑
make lint test本地 - 打开PR——批准后进行合并
______________________________________________________________________
📜许可证
分布在 MIT许可证 –参见 LICENSE 了解详情。
©2025 Kwesi Apponsah
