语义路由配置器MCP服务器

该项目部署了一个MCP服务器作为语义路由的sidecar,用于管理语义路由配置YAML文件,通过模型上下文协议提供配置管理工具。

  • by agentic-world-lab
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 agentic-world-lab/semantic-router-configurator-mcp

使用说明

语义路由器配置器MCP服务器

此项目将MCP服务器部署为语义路由器的sidecar,该sidecar对语义路由器配置YAML文件进行更改。提供通过模型上下文协议管理语义路由器配置的工具。

建筑

该服务器设计为在Kubernetes中运行,具有:

  • 一 初始配置 从ConfigMap加载(initial-configuration)
  • A. 最终配置 存储在空的Dir卷中(final-config)可以与其他Pod共享
  • 对最终配置进行更改,同时保留初始配置。

MCP服务器在语义路由器Helm部署期间安装,并在同一pod中作为sidecar容器运行,允许其修改语义路由器使用的配置文件。

语义路由器不再将configmap与配置一起持久化。MCP服务器负责写入语义路由器将读取的配置文件。这允许MCP服务器管理配置生命周期。

本地开发

先决条件

  • Python 3.11+
  • 点

Kubernetes部署

使用Helm部署

首先,构建并推送MCP服务器镜像:

export SEMANTIC_ROUTER_MCP_IMAGE_REPO="[yourimage-repo]"
export SEMANTIC_ROUTER_MCP_IMAGE_TAG="[tag]"
export SEMANTIC_ROUTER_IMAGE_REPO="[yourimage-repo-with-agentgateway-support]"
export SEMANTIC_ROUTER_IMAGE_TAG="[tag-with-agentgateway-support]"
docker buildx build --platform linux/amd64,linux/arm64 -t ${SEMANTIC_ROUTER_MCP_IMAGE_REPO}:${SEMANTIC_ROUTER_MCP_IMAGE_TAG} --push .

如果没有,请安装kustomize。这是后渲染器在部署前修改Helm chart所必需的:

brew install kustomize

使用MCP服务器sidecar部署语义路由器:

helm upgrade -i semantic-router oci://ghcr.io/vllm-project/charts/semantic-router \
--version v0.0.0-latest \
--namespace vllm-semantic-router-system  \
--create-namespace \
--set image.repository=${SEMANTIC_ROUTER_IMAGE_REPO} \
--set image.tag=${SEMANTIC_ROUTER_IMAGE_TAG} \
--set config.classifier.pii_model.pii_mapping_path="models/pii_classifier_modernbert-base_presidio_token_model/label_mapping.json" \
--set image.pullPolicy=Always \
--post-renderer ./scripts/kustomize-wrapper.sh \
-f ./helm/values.yaml

要将MCP服务器作为LoadBalancer服务公开,请应用以下清单:

kubectl apply -f manifests/semantic-router-mcp-service.yaml

配置卷

部署使用两个卷:

  1. 初始配置:从装载的只读卷 initial-configuration 康福特地图

    • 路径: /config/initial/semantic-router.yaml
    • 目的:提供基线配置
  2. 最终配置:工作配置的空Dir卷

    • 路径: /config/final/semantic-router.yaml
    • 目的:存储可与其他Pod共享的修改后的配置
    • 可以由同一部署中的其他Pod挂载,以读取更新的配置

与语义路由器Pod共享配置

MCP服务器和语义路由器部署在同一个pod中:

示例用法

打开终端并端口转发MCP服务器服务或使用负载均衡器服务。

export SEM_ROUTER_ADDRESS=$(kubectl get svc -n vllm-semantic-router-system semantic-router-mcp -o jsonpath="{.status.loadBalancer.ingress[0]['hostname','ip']}")
echo $SEM_ROUTER_ADDRESS

打开npx检查器并连接到MCP服务器:

npx @modelcontextprotocol/inspector --log-level debug --server-url http://$SEM_ROUTER_ADDRESS:8081/mcp

然后单击检查器UI中的“连接”按钮连接到MCP服务器。您应该看到检查器中加载了初始配置。

然后转到“工具”选项卡,单击“列出工具”以查看配置中定义的工具。使用工具更新配置,并查看语义路由器pod中反映的更改。