本项目是一个实现了 Model Context Protocol (MCP) 的服务器,专注于提供与生命周期评估 (LCA) 相关的服务能力,主要通过注册工具的方式供 LLM 客户端调用。
项目简介
本项目基于 MCP 协议标准构建,核心功能是托管并提供一系列用于 LCA 数据访问和计算的工具。LLM 客户端可以通过 MCP 协议调用这些工具,获取所需的上下文信息或执行特定操作。
主要功能点
- LCA 数据检索工具: 提供工具用于搜索生命周期清单 (LCI) 数据库中的流程 (Processes) 和流 (Flows) 数据。
- OpenLCA 集成工具: 提供工具通过 OpenLCA 的 IPC 接口进行交互,包括:
- 列出可用的 LCA 影响评估方法 (Impact Methods)。
- 列出可用的产品系统 (Product Systems)。
- 对指定的产品系统和影响评估方法执行 LCA 计算,获取环境影响结果。
- 通用计算工具: 提供一个简单的计算工具作为示例。
- 支持多种传输协议: 支持 STDIO、SSE 和 StreamableHttp 等传输方式,方便与不同类型的 MCP 客户端集成。
安装步骤
本项目基于 Node.js 开发,推荐使用 Node.js 22 及以上版本。
- 安装 Node.js 和 npm: 如果未安装,请先安装。推荐使用 nvm 进行版本管理。
# 安装 nvm 并安装 Node.js 22 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash nvm install 22 nvm use - 克隆仓库并安装依赖:
git clone https://github.com/linancn/tiangong-lca-mcp.git cd tiangong-lca-mcp npm install - 配置环境变量: 部分工具需要外部服务(如 Supabase、其他 API、OpenLCA IPC)的连接信息。复制 '.env.example' 文件为 '.env',并根据你的环境配置其中的变量。例如,'BASE_URL', 'SUPABASE_ANON_KEY', 'X_API_KEY', 'X_REGION' 用于数据检索工具,'serverUrl' 用于 OpenLCA 工具(默认为 'http://localhost:8080')。
服务器配置 (供 MCP 客户端使用)
MCP 客户端需要知道如何连接并启动 MCP 服务器。主要的连接方式取决于你选择的传输协议。
-
STDIO 方式 (推荐): 客户端启动一个子进程来运行 MCP 服务器。客户端需要配置启动命令及其参数。
{ "name": "TianGong-MCP-Server", "command": "npx", "args": [ "-p", "@tiangong-lca/mcp-server", "tiangong-lca-mcp-stdio" ], "transport": "stdio" }- 'name': 服务器的标识名称。
- 'command': 用于启动服务器的可执行命令。
- 'args': 传递给命令的参数列表。
- 'transport': 使用的传输协议类型,STDIO 表示标准输入输出。
-
HTTP/SSE/StreamableHttp 方式: 客户端连接到一个已经运行的 MCP 服务器网络端点。通常需要一个网关(如 supergateway)来将 STDIO 协议转换为 HTTP。客户端需要配置服务器的 URL。
- 首先需要按照仓库 README 启动 Supergateway 服务器(例如,在 'localhost:3001' 端口)。
- 客户端配置示例(连接到 Supergateway 默认地址):
{ "name": "TianGong-MCP-Server-HTTP", "url": "http://localhost:3001", "transport": "sse" // 或 "streamableHttp",取决于Supergateway配置的路径和客户端支持 } - 'url': MCP 服务器的 HTTP/S 地址。
- 'transport': 使用的传输协议类型 (sse 或 streamableHttp)。注意:如果使用 StreamableHttp,客户端可能需要指定 '/mcp' 路径。
基本使用方法
MCP 服务器启动后(通过客户端启动子进程或独立启动),LLM 客户端将通过配置的传输协议与之建立连接。一旦连接成功,客户端可以通过 MCP 协议方法(如 'server_capabilities')发现服务器提供的工具及其功能描述。然后,客户端可以根据 LLM 的指令,调用特定的工具(例如 'tool_execute' 方法),并传递相应的输入参数。服务器执行工具逻辑(如调用外部 API 或 OpenLCA 接口),并将结果通过 MCP 响应返回给客户端,供 LLM 使用。
具体的工具调用细节和参数格式,客户端应通过 MCP 协议动态获取服务器的能力声明。
信息
分类
数据库与文件