SysMLv2 MCP服务器
一种模型上下文协议(MCP)服务器,提供对SysMLv2 API的访问。
特性
- 流式HTTP协议:使用FastMCP的流式HTTP传输进行高效的双向通信
- 授权转发:将承载令牌从MCP客户端转发到SysMLv2 API
- 只读模式:仅公开GET端点的可选只读模式
安装
- 安装依赖项:
pip install -r requirements.txt配置
服务器是通过环境变量配置的:
SYSMLV2_URL:SysMLv2 API的基本URL(默认值:http://localhost:8080)READ_ONLY:启用只读模式,仅公开GET端点(默认值:true)
- 接受值: true, 1, yes 不区分大小写
MCPPATH:MCP端点路径(默认值:/mcp)
用法
启动服务器
# Default configuration
python server.py
# With custom SysMLv2 API URL
SYSMLV2_URL=https://api.example.com python server.py
# In read-only mode
READ_ONLY=true python server.py
# Combined configuration
SYSMLV2_URL=https://api.example.com READ_ONLY=true python server.py服务器将于启动 http://0.0.0.0:8000 MCP端点将在 http://0.0.0.0:8000/mcp.
连接客户
客户端可以使用流式HTTP传输连接到MCP服务器。使用FastMCP客户端的示例:
from fastmcp.client import Client
# Without authentication
client = Client("http://localhost:8000/mcp")
# With Bearer token authentication
client = Client(
"http://localhost:8000/mcp",
headers={"Authorization": "Bearer your-token-here"}
)码头工人
塑造形象
docker build -t flexo-mms-sysmlv2-mcp .运行容器
使用自定义彩信URL运行:
docker run -d \
-p 8000:8000 \
-e MMS_URL=https://your-flexo-mms-server \
flexo-mms-sysmlv2-mcp以读写模式运行(启用创建/更新/删除操作):
docker run -d \
-p 8000:8000 \
-e MMS_URL=https://your-mms-server \
-e READ_ONLY=false \
flexo-mms-sysmlv2-mcp可用工具
服务器将OpenAPI规范中的所有操作作为MCP工具公开。每个工具对应于一个REST API端点:
项目
getProjects-获取项目postProject-创建项目getProjectById-按ID获取项目putProjectById-按ID更新项目deleteProjectById-按ID删除项目
分支
getBranchesByProject-按项目获取分支postBranchByProject-按项目创建分支getBranchesByProjectAndId-按项目和ID获取分支deleteBranchByProjectAndId-按项目和ID删除分支merge-将源提交合并到目标分支中
提交
getCommitsByProject-按项目获取提交postCommitByProject-按项目创建提交getCommitByProjectAndId-按项目和ID获取提交
元素
getElementsByProjectCommit-按项目获取元素并提交getElementByProjectCommitId-按项目、提交和ID获取元素getProjectUsageByProjectCommitElement-获取元素的ProjectUsagegetRelationshipsByProjectCommitRelatedElement-获取元素的关系getRootsByProjectCommit-获取根元素
查询
getQueriesByProject-按项目获取查询postQueryByProject-按项目创建查询getQueryByProjectAndId-按项目和ID获取查询putQueryByProjectAndId-按项目和ID更新查询deleteQueryByProjectAndId-按项目和ID删除查询getQueryResultsByProjectIdQueryId-获取查询结果getQueryResultsByProjectIdQuery-获取查询结果
标签
getTagsByProject-按项目获取标签postTagByProject-按项目创建标签getTagByProjectAndId-按项目和ID获取标签deleteTagByProjectAndId-按项目和ID删除标签
只读模式
当 READ_ONLY=true,只有GET操作作为工具公开。这有助于:
- 提供对API的安全、只读访问
- 防止意外修改
- 遵守安全政策
认证
服务器将承载令牌从MCP客户端转发到SysMLv2 API。要进行身份验证,请执行以下操作:
- 客户端发送请求
Authorization: Bearer头球 - 服务器从MCP请求上下文中提取令牌
- 服务器将令牌转发到
Authorization到SysMLv2 API的标头
这允许SysMLv2 API独立处理身份验证和授权。
建筑
MCP Client → [Streamable HTTP] → MCP Server → [REST API] → SysMLv2 API
(with Bearer token) (with Bearer token)服务器:
- 定义与SysMLv2 API操作相对应的35个显式MCP工具
- 从MCP请求上下文中提取承载令牌
- 通过正确的身份验证将请求转发到SysMLv2 API
- 将响应返回给MCP客户端
- 基于READ_ONLY模式有条件地注册写操作
错误处理
服务器包括全面的错误处理:
- 捕获HTTP错误并返回状态代码和消息
- 捕获连接错误并返回错误详细信息
- 无效请求得到妥善处理
发展
服务器使用:
- FastMCP 2.x:用于支持流式HTTP的MCP服务器实现
- httpx:用于异步HTTP客户端功能
- Python 3.7+:需要异步/等待支持
许可证
详见项目许可证。
