一个基于Model Context Protocol (MCP)的服务器,使AI助手能够创建Datawrapper图表。该服务器基于datawrapper Python库,并使用Pydantic进行验证。
以下是一个完整的示例,展示了如何通过与助手聊天来创建、发布、更新和显示图表:
"创建一个展示温度趋势的数据wrapper折线图,数据如下:
2020, 15.5
2021, 16.0
2022, 16.5
2023, 17.0"
# 助手创建图表并返回图表ID,例如:"abc123"
"发布它。"
# 助手发布图表并返回公共URL
"用2024年的新数据更新图表:17.2°C"
# 助手使用新的数据点更新图表
"将线条颜色设置为海浪蓝。"
# 助手更新图表配置以设置线条颜色
"给我编辑器的URL。"
# 助手返回Datawrapper编辑器的URL,在那里你可以查看或编辑图表
"给我图表的PNG图像。"
# 助手在其响应中嵌入图表的PNG图像。
"提出五种改进图表的方法。"
# 看会发生什么!
配置您的MCP客户端,使用uvx在claude_desktop_config.json中运行服务器:
{
"mcpServers": {
"datawrapper": {
"command": "uvx",
"args": ["datawrapper-mcp"],
"env": {
"DATAWRAPPER_ACCESS_TOKEN": "your-token-here"
}
}
}
}
pip install datawrapper-mcp
然后配置您的MCP客户端:
{
"mcpServers": {
"datawrapper": {
"command": "datawrapper-mcp",
"env": {
"DATAWRAPPER_ACCESS_TOKEN": "your-token-here"
}
}
}
}
对于企业部署,此服务器可以通过HTTP传输部署到Kubernetes:
docker build -t datawrapper-mcp:latest .
docker run -p 8501:8501 \
-e DATAWRAPPER_ACCESS_TOKEN=your-token-here \
-e MCP_SERVER_HOST=0.0.0.0 \
-e MCP_SERVER_PORT=8501 \
datawrapper-mcp:latest
DATAWRAPPER_ACCESS_TOKEN:您的Datawrapper API令牌(必需)MCP_SERVER_HOST:服务器主机(默认值:0.0.0.0)MCP_SERVER_PORT:服务器端口(默认值:8501)MCP_SERVER_NAME:服务器名称(默认值:datawrapper-mcp)HTTP服务器包括一个用于Kubernetes存活和就绪探测的/healthz端点:
curl http://localhost:8501/healthz
# 返回:{"status": "healthy", "service": "datawrapper-mcp"}
apiVersion: apps/v1
kind: Deployment
metadata:
name: datawrapper-mcp
spec:
replicas: 1
selector:
matchLabels:
app: datawrapper-mcp
template:
metadata:
labels:
app: datawrapper-mcp
spec:
containers:
- name: datawrapper-mcp
image: datawrapper-mcp:latest
ports:
- containerPort: 8501
env:
- name: DATAWRAPPER_ACCESS_TOKEN
valueFrom:
secretKeyRef:
name: datawrapper-secrets
key: access-token
livenessProbe:
httpGet:
path: /healthz
port: 8501
initialDelaySeconds: 5
periodSeconds: 30
readinessProbe:
httpGet:
path: /healthz
port: 8501
initialDelaySeconds: 5
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: datawrapper-mcp
spec:
selector:
app: datawrapper-mcp
ports:
- protocol: TCP
port: 8501
targetPort: 8501