关于 OpenSolar MCP
OpenSolar MCP 是可自托管的 MCP 服务,为 AI Agent 提供对 OpenSolar 文档化 API 的结构化访问,涵盖项目、联系人、系统、文件、商务设置和 Teams 共享,并提供只读控制及谨慎的歧义处理。
主要功能
- 01项目与联系人的精选工具
- 02系统比较与设计摘要
- 03文件、商务及 Teams 操作
- 04只读模式与受控写入
- 05结构化输出并移除敏感字段
适用场景
- 01查找项目并查看进度
- 02比较项目的系统选项
- 03更改前检查项目共享
MCP 相关
它将 OpenSolar API 操作作为工具提供给 MCP 客户端,支持 stdio 和无状态 Streamable HTTP。服务使用组织自己的 API 令牌,并可在只读模式下禁用所有写入工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @alignco/opensolar-mcpOPENSOLAR_API_TOKEN密钥OpenSolar bearer tokenOPENSOLAR_ORG_IDOpenSolar organisation IDOPENSOLAR_PROFILETool profile: agent (curated default) or full (every registered tool)OPENSOLAR_READ_ONLYHide every tool that can change OpenSolar dataOPENSOLAR_PLANOpenSolar access plan; api_access hides tools that need Raw Data API AccessOPENSOLAR_TOOLSETSComma-separated toolsets that replace the profile's tool selectionOPENSOLAR_UPLOAD_ROOTDirectory that create_private_file may read from; uploads stay disabled when unset本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
OpenSolar MCP
让 Claude、Cursor、VS Code 和任何其他 MCP 客户端安全、结构化地访问你的 OpenSolar 组织。
非官方 · 可自托管 · 使用你自己的 OpenSolar API 令牌
OpenSolar MCP 是一个用于有文档说明的 OpenSolar API 的 Model Context Protocol 服务。它运行在你的设备或基础设施上,使用你自己的 OpenSolar 凭据,为 AI Agent 提供一组精选工具,用于处理项目、联系人、系统、文件、商务设置和 Teams 分享。
flowchart LR
client["MCP client<br/>Claude · Cursor · VS Code · Codex"]
server["OpenSolar MCP<br/>runs where you run it"]
api[("OpenSolar API<br/>api.opensolar.com")]
client -- "stdio or Streamable HTTP" --> server
server -- "HTTPS with your bearer token" --> api
重要
本项目与 OpenSolar Pty Ltd 无关联,未获其认可,也不由其维护。本项目仅调用公开且有文档说明的 OpenSolar API,不运营共享或托管的 OpenSolar 服务。
亮点
- 为 Agent 精选。 默认配置包含 31 个日常工作所需的工具。只需更改一项设置,即可使用全部 75 个已注册工具。
- 语义化操作,而不只是端点。 项目和联系人搜索、运营快照、按名称更改阶段、并排比较系统、设计摘要,以及只读分享预检。
- 以谨慎为设计原则。 搜索会报告匹配结果是
unique、ambiguous还是incomplete,并告知 Agent 不要猜测。写入操作绝不会自动重试,而只读模式会移除所有修改操作。 - 忠实遵循 OpenSolar 文档。 每个工具都基于官方 API 文档或有记录的实时验证,且仅在请求正文已确认时才开放写入操作。每个工具的依据都列于 API 合约矩阵。
- 保持模型上下文整洁。 提供带公开 schema 的结构化输出。凭据、签名 URL、设计数据块和其他原始或敏感字段会在传递给模型前移除。
- 采用最新 MCP。 基于官方 MCP TypeScript SDK v2 构建,支持 2026-07-28 规范,并为使用较早协议版本的客户端提供回退支持。支持 stdio 和无状态 Streamable HTTP,且每个工具都声明标题、输出 schema 和行为注解。
你可以向 Agent 提出的问题
| 向你的 Agent 提问…… | 将会发生什么 |
|---|---|
| “找到 Harbour Street 项目,并总结一下目前进展。” | search_projects 会找到该项目,然后 get_project_snapshot 会读取其工作流阶段、系统和文件。 |
| “比较该项目中的系统选项。” | compare_project_systems 会列出尺寸、年产量、价格、每瓦价格和硬件,但不会对它们进行排名。 |
| “将它移至 Installing。” | update_project_stage 会在项目的工作流中解析阶段名称,并拒绝含糊或已归档的匹配项。 |
| “该提案的回本年限和 NPV 是多少?” | get_proposal_data 会返回回本年限、NPV、IRR 和 ROI。需要 Raw Data API Access。 |
| “将 Jordan Lee 添加为联系人,除非该联系人已存在。” | search_contacts 会先检查是否存在匹配项,然后 create_contact 会添加此人。 |
| “为该项目生成提案 PDF。” | generate_project_document 会让 OpenSolar 将文档保存为私有文件,并返回文件 ID。 |
| “我们可以与安装合作伙伴共享该项目吗?” | preflight_project_share 会检查连接和共享实体,但不会进行任何更改。 |
快速开始
要求
- Node.js 24 或更高版本
- 已启用 API Access 的 OpenSolar 组织
- 你的 OpenSolar 组织 ID 和 bearer token
- 仅当你需要使用
get_proposal_data或get_project_design时,才需要 Raw Data API Access
提示
OpenSolar 标准用户令牌会在七天后过期。对于长期运行的设置,请创建一个专用于 API 操作的 OpenSolar 用户,并将其设为机器用户,其令牌不会过期。此服务绝不会替你更改该设置。
1. 查看你将获得哪些工具(无需凭据):
npx -y @alignco/opensolar-mcp --list-tools
2. 检查你的配置和令牌:
OPENSOLAR_API_TOKEN=your_token OPENSOLAR_ORG_ID=12345 \
npx -y @alignco/opensolar-mcp --check
--check 会读取一次你的组织信息。添加 --no-probe 可在不联系 OpenSolar 的情况下验证配置。
3. 使用以下选项之一将其添加到你的 MCP 客户端。
连接 MCP 客户端
每个客户端都需要相同的两个设置:OPENSOLAR_API_TOKEN 和 OPENSOLAR_ORG_ID。请将下方的 your_token 和 12345 替换为你自己的值。
Claude Code
claude mcp add opensolar \
-e OPENSOLAR_API_TOKEN=your_token \
-e OPENSOLAR_ORG_ID=12345 \
-- npx -y @alignco/opensolar-mcp
添加 --scope user,即可在每个项目中使用。
Claude Desktop
打开 Settings → Developer → Edit Config 并添加:
{
"mcpServers": {
"opensolar": {
"command": "npx",
"args": ["-y", "@alignco/opensolar-mcp"],
"env": {
"OPENSOLAR_API_TOKEN": "your_token",
"OPENSOLAR_ORG_ID": "12345"
}
}
}
}
保存后重启 Claude Desktop。
Cursor
使用上方的 添加到 Cursor 按钮,或将以下内容添加到 ~/.cursor/mcp.json(所有项目)或 .cursor/mcp.json(单个项目):
{
"mcpServers": {
"opensolar": {
"command": "npx",
"args": ["-y", "@alignco/opensolar-mcp"],
"env": {
"OPENSOLAR_API_TOKEN": "your_token",
"OPENSOLAR_ORG_ID": "12345"
}
}
}
}
VS Code
使用上方的 在 VS Code 中安装 按钮,或将以下内容添加到 .vscode/mcp.json。VS Code 会提示你输入令牌,并安全地保存它:
{
"inputs": [
{
"type": "promptString",
"id": "opensolar_api_token",
"description": "OpenSolar API token",
"password": true
},
{
"type": "promptString",
"id": "opensolar_org_id",
"description": "OpenSolar organisation ID"
}
],
"servers": {
"opensolar": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@alignco/opensolar-mcp"],
"env": {
"OPENSOLAR_API_TOKEN": "${input:opensolar_api_token}",
"OPENSOLAR_ORG_ID": "${input:opensolar_org_id}"
}
}
}
}
Windsurf
将以下内容添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"opensolar": {
"command": "npx",
"args": ["-y", "@alignco/opensolar-mcp"],
"env": {
"OPENSOLAR_API_TOKEN": "your_token",
"OPENSOLAR_ORG_ID": "12345"
}
}
}
}
OpenAI Codex
将以下内容添加到 ~/.codex/config.toml:
[mcp_servers.opensolar]
command = "npx"
args = ["-y", "@alignco/opensolar-mcp"]
env = { OPENSOLAR_API_TOKEN = "your_token", OPENSOLAR_ORG_ID = "12345" }
Gemini CLI
将以下内容添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"opensolar": {
"command": "npx",
"args": ["-y", "@alignco/opensolar-mcp"],
"env": {
"OPENSOLAR_API_TOKEN": "your_token",
"OPENSOLAR_ORG_ID": "12345"
}
}
}
}
任何其他 MCP 客户端
将 npx -y @alignco/opensolar-mcp 作为 stdio 服务运行,并在其环境中设置 OPENSOLAR_API_TOKEN 和 OPENSOLAR_ORG_ID。如果客户端通过 HTTP 连接,请参阅远程部署。
若要一次性安装命令,而不是通过 npx 运行:
npm install -g @alignco/opensolar-mcp
opensolar-mcp --version
提示
熟悉使用方式期间,可先在
env块中设置OPENSOLAR_READ_ONLY=1。这会移除所有能够更改 OpenSolar 数据的工具。
工具
配置集
配置集是一组经过整理的操作界面。工具集是可直接选择的功能区域。只读模式和访问计划筛选器均可叠加应用于这两者。
| 界面 | 工具 | 适用场景 |
|---|---|---|
agent(默认) | 31 | 日常项目、联系人、系统、文件和共享工作 |
agent + OPENSOLAR_READ_ONLY=1 | 22 | 研究、报告和安全地尝试操作 |
agent + OPENSOLAR_PLAN=api_access | 29 | 没有 Raw Data API Access 的组织 |
full | 75 | 管理工作:组件目录、工作流、Webhook、删除操作和 Teams 设置 |
--list-tools 始终会输出你的设置所生成的确切界面:
npx -y @alignco/opensolar-mcp --list-tools
OPENSOLAR_PROFILE=full npx -y @alignco/opensolar-mcp --list-tools
OPENSOLAR_TOOLSETS=webhooks npx -y @alignco/opensolar-mcp --list-tools
默认 agent 工具
✏️ 表示会更改 OpenSolar 数据的工具。🔒 表示需要 Raw Data API Access 的工具。
| 区域 | 工具 |
|---|---|
| 项目 | search_projects · list_projects · get_project · get_project_snapshot · create_project ✏️ · update_project ✏️ · update_project_stage ✏️ · update_project_usage ✏️ |
| 联系人 | search_contacts · list_contacts · get_contact · create_contact ✏️ · update_contact ✏️ |
| 组织 | get_org · list_roles |
| 系统 | compare_project_systems · get_system_details |
| 商务 | list_payment_options · list_pricing_schemes · list_costings |
| 文件与文档 | list_private_files · get_private_file · create_private_file ✏️ · generate_project_document ✏️ |
| 参考 | list_roof_types · list_file_tags |
| 团队共享 | list_connected_orgs · preflight_project_share · share_entities ✏️ |
| 原始数据 | get_proposal_data 🔒 · get_project_design 🔒 |
按工具集划分的全部 75 个工具
设置 OPENSOLAR_PROFILE=full 以启用所有工具,或使用 OPENSOLAR_TOOLSETS 指定工具集(例如 projects,contacts,systems)。
| 工具集 | 工具 |
|---|---|
projects | list_projects、search_projects、get_project、get_project_snapshot、create_project、update_project、update_project_stage、update_project_usage、delete_project |
org | get_org、list_roles、get_role |
contacts | list_contacts、search_contacts、get_contact、create_contact、update_contact、delete_contact |
events | get_event、list_event_types |
systems | list_project_systems、compare_project_systems、get_system、get_system_details、get_system_image |
components | list_modules、get_module、delete_module_activation、list_inverters、get_inverter、delete_inverter_activation、list_batteries、get_battery、delete_battery_activation、list_other_components、get_other_component、delete_other_component_activation |
workflow | list_workflows、get_workflow、create_workflow、delete_workflow |
payment | list_payment_options、get_payment_option、delete_payment_option |
pricing | list_pricing_schemes、get_pricing_scheme、delete_pricing_scheme |
costing | list_costings、get_costing、delete_costing |
reference | list_roof_types、list_file_tags |
files | list_private_files、get_private_file、create_private_file、update_private_file、delete_private_file、generate_project_document |
webhooks | list_webhooks、create_webhook、update_webhook、list_webhook_logs、list_webhook_queue |
teams | list_connected_orgs、preflight_project_share、list_connection_requests、create_connection_request、accept_connection_request、update_connection、delete_connection、share_project、share_entities、create_permission_role |
raw_data | get_proposal_data、get_project_design |
部分已记录的 OpenSolar 操作不会开放,这是因为文档未明确说明其请求正文,例如创建定价方案、付款选项、成本项或组件激活,以及更新工作流或组织。当前实现列出了这些操作。
配置
| 变量 | 用途 | 默认值 |
|---|---|---|
OPENSOLAR_API_TOKEN | OpenSolar Bearer 令牌。stdio 和 --check 必需。Loopback HTTP 可将其用作备用值。 | — |
OPENSOLAR_ORG_ID | 你的 OpenSolar 组织 ID。 | 必需 |
OPENSOLAR_BASE_URL | OpenSolar API 基础 URL。必须使用 https(仅 localhost 可使用 http)。 | https://api.opensolar.com/api/ |
OPENSOLAR_PROFILE | 工具配置:agent 或 full。 | agent |
OPENSOLAR_TOOLSETS | 以逗号分隔的工具集。设置后会替换配置中的选择。 | 未设置 |
OPENSOLAR_READ_ONLY | 1、true、yes 或 on 会隐藏所有变更操作。0、false、no 或 off 会保留这些操作。任何其他值都会导致启动失败。 | off |
OPENSOLAR_PLAN | api_access 会隐藏需要 Raw Data API Access 的工具;raw_data 会保留这些工具。 | 未设置 |
OPENSOLAR_UPLOAD_ROOT | create_private_file 可从中读取的目录。未设置时会禁用上传。 | 未设置 |
MCP_TRANSPORT | 设置为 http 时,使用 Streamable HTTP 而非 stdio 提供服务。 | stdio |
MCP_HTTP_HOST | HTTP 绑定地址。 | 127.0.0.1 |
MCP_HTTP_PORT | HTTP 端口。 | 3000 |
MCP_HTTP_PATH | MCP 端点路径。 | /mcp |
MCP_HTTP_ALLOWED_HOSTS | 以逗号分隔的 Host 值,允许在非 loopback 绑定时使用。绑定到 0.0.0.0 和 :: 时必需。 | 未设置 |
MCP_HTTP_ALLOWED_ORIGINS | 在非 loopback 绑定时允许的浏览器 Origin 主机名。没有 Origin 标头的请求仍会通过。 | Host 允许列表 |
OPENSOLAR_TOOLSETS 的优先级高于配置。之后会应用 OPENSOLAR_READ_ONLY 和 OPENSOLAR_PLAN。带注释的模板请参阅 .env.example;服务本身不会加载 .env 文件。
命令行选项
| 选项 | 说明 |
|---|---|
| (无) | 通过 stdio 提供 MCP 服务 |
--http | 通过 Streamable HTTP 提供 MCP 服务 |
--host <host>、--port <port>、--path <path> | HTTP 绑定设置(覆盖 MCP_HTTP_* 变量) |
--check | 验证配置并读取一次你的组织信息 |
--check --no-probe | 验证配置,但不联系 OpenSolar |
--list-tools | 打印当前设置公开的工具名称 |
--version、-v | 打印软件包版本 |
--help、-h | 显示帮助 |
本地文件上传
create_private_file 会从运行服务的机器上传文件,因此默认禁用。要启用它,请指定一个目录:
export OPENSOLAR_UPLOAD_ROOT=/absolute/path/to/uploads
相对路径会在该目录内解析。仅当绝对路径和符号链接的实际路径仍位于该目录内时,才会接受它们。模型不会发送文件字节。
通过 get_private_file 和 get_system_image 下载的文件大小上限为 10 MB。文本内容会返回给模型;图像和其他二进制文件会作为 MCP 图像或资源内容返回,而不会复制到 JSON 中。
远程部署
该服务也支持无状态的 Streamable HTTP,供通过网络连接的客户端使用。
OPENSOLAR_API_TOKEN=your_token OPENSOLAR_ORG_ID=12345 \
npx -y @alignco/opensolar-mcp --http
| 端点 | 用途 |
|---|---|
http://127.0.0.1:3000/mcp | MCP |
/health | 存活状态。返回 {"status":"ok"};无需凭据。 |
/ready | 就绪状态。返回 {"status":"ready"};无需凭据。 |
使用 loopback 地址时,Authorization: Bearer <token> 标头优先级更高;OPENSOLAR_API_TOKEN 变量则作为本地备用值。
将其公开到 localhost 以外
任何非回环地址绑定都要求每个 MCP 请求都携带 OpenSolar bearer 令牌。OPENSOLAR_API_TOKEN 变量不会作为备用选项使用,格式错误的 Authorization 标头会被拒绝。
export OPENSOLAR_ORG_ID=12345
export MCP_HTTP_HOST=0.0.0.0
export MCP_HTTP_ALLOWED_HOSTS=mcp.example.com
npx -y @alignco/opensolar-mcp --http
例如,在请求标头中携带令牌来连接客户端:
claude mcp add --transport http opensolar https://mcp.example.com/mcp \
--header "Authorization: Bearer your_token"
警告
内置服务使用纯 HTTP。在令牌经过任何网络之前,请将其置于可终止 TLS 的反向代理或平台之后。
MCP_HTTP_ALLOWED_HOSTS和MCP_HTTP_ALLOWED_ORIGINS用于防范 DNS 重绑定和跨站浏览器请求;它们不提供身份验证。
Docker
该镜像以非特权用户运行 HTTP 传输,并包含健康检查。
docker pull ghcr.io/align-software-company/opensolar-mcp:latest
docker run --rm \
-e OPENSOLAR_ORG_ID=12345 \
-p 127.0.0.1:3000:3000 \
ghcr.io/align-software-company/opensolar-mcp:latest
若要从本仓库的克隆版本构建镜像,请改用:
docker build -t opensolar-mcp .
docker run --rm \
-e OPENSOLAR_ORG_ID=12345 \
-p 127.0.0.1:3000:3000 \
opensolar-mcp
在容器内,服务绑定到 0.0.0.0,因此客户端必须在每个请求中发送 Authorization: Bearer <token>。该镜像允许将 localhost 和 127.0.0.1 作为 Host 值;如需使用其他值,请将 MCP_HTTP_ALLOWED_HOSTS 设置为你的公共主机名。
安全模型
- 不收集遥测数据。 服务不会发送分析或使用数据。它仅向 OpenSolar API 以及 OpenSolar 返回的文件和图片 URL 发送请求。
- 凭据由你掌控,进程由你运行。 令牌保留在你的环境或客户端配置中,不会持久化,本项目也不运行任何托管服务。
- 写入操作需明确执行。 修改类工具带有 MCP
readOnlyHint: false注解,破坏性工具带有destructiveHint: true注解,且不会自动重试。设置OPENSOLAR_READ_ONLY=1可彻底移除这些工具。 - 不猜测。 只有当搜索报告
resolution: unique,或在完整扫描中对单个完全匹配的电子邮件或电话号码报告identifier_match_id时,才会确认目标。服务不会重试写入操作,也不会公开隐藏的批量写入功能。 - 输出最少化。 已签名的下载 URL、集成密钥、Webhook 密钥、个人身份字段和原始设计数据都会被编辑或省略。
- 工作量有上限。 搜索、下载和 Raw Data 解压缩都设有固定限制。只有普通读取操作会重试,且仅在 HTTP 429 时最多重试三次。
- HTTP 模式会传递你的 OpenSolar 令牌。 客户端发送的 bearer 令牌就是 OpenSolar 令牌,会被转发给 OpenSolar。它不是 MCP OAuth 令牌。如果多人共用同一部署,请在其前方设置经过身份验证的网关。
请私下报告漏洞——详见 SECURITY.md。
兼容性
| MCP 协议 | 2026-07-28,并兼容使用 2025-11-25、2025-06-18 及更早修订版本的客户端 |
| 传输方式 | stdio;无状态 Streamable HTTP |
| 工具结果 | 与各工具 outputSchema 匹配的 structuredContent,以及简短的文本摘要和精简 JSON 文本,以确保兼容性 |
| 运行时 | Node.js 24+,ESM |
成功的结构化工具结果也会包含以精简 JSON 文本序列化的相同负载。因此,不转发 structuredContent 的客户端仍可将完整的结构化结果传递给模型。
故障排查
| 症状 | 处理方法 |
|---|---|
Token missing or expired | 标准令牌会在七天后过期。获取新令牌,或使用机器用户。 |
This call needs Raw Data API Access | 在 OpenSolar 中启用 Raw Data API Access,或设置 OPENSOLAR_PLAN=api_access 以隐藏这些工具。 |
The caller cannot use this record(HTTP 403) | 令牌所属用户没有相应权限,或该项目不在你的 API Access 权限范围内。 |
Throttled by OpenSolar(HTTP 429) | 你触发了 OpenSolar 的限流。请稍后再试。 |
| 缺少预期的工具 | 使用相同环境运行 --list-tools,并检查 OPENSOLAR_PROFILE、OPENSOLAR_TOOLSETS、OPENSOLAR_READ_ONLY 和 OPENSOLAR_PLAN。 |
启动时出现 Unknown OPENSOLAR_READ_ONLY | 使用 1/true/yes/on 或 0/false/no/off。其他值会被拒绝,以免拼写错误导致写入操作暴露。 |
| 客户端无法启动服务 | 检查客户端所用的 PATH 中 node --version 是否为 24 或更高版本。在 Windows 上,某些客户端需要设置 "command": "cmd",并使用 "args": ["/c", "npx", "-y", "@alignco/opensolar-mcp"]。 |
HTTP 返回 401 Unauthorized | 非回环地址绑定会忽略 OPENSOLAR_API_TOKEN;每个请求都要发送 Authorization: Bearer <token>。 |
HTTP 在到达 MCP 前返回 403 | 将你的主机名添加到 MCP_HTTP_ALLOWED_HOSTS,或将浏览器来源添加到 MCP_HTTP_ALLOWED_ORIGINS。 |
日志以 JSON 行的形式写入 stderr,因此 stdout 会保持干净,以供 MCP 协议使用。
开发
git clone https://github.com/Align-Software-Company/opensolar-mcp.git
cd opensolar-mcp
corepack enable
pnpm install --frozen-lockfile
pnpm check:all # repository hygiene, registry metadata, lint, typecheck, offline tests
pnpm build
pnpm test:docker # build and smoke-test the Docker image
常规测试套件可离线运行。实时集成测试会读取 .env.local,且默认以只读模式运行;写入操作需要设置 OPENSOLAR_INTEGRATION_WRITES=1,并使用专用的测试记录:
pnpm test:integration
OPENSOLAR_INTEGRATION_WRITES=1 pnpm test:integration
提交拉取请求前,请阅读 CONTRIBUTING.md,尤其是 OpenSolar API 证据相关规则。
文档
| 文档 | 内容 |
|---|---|
| 当前实现 | 已发布的行为:暴露规则、传输方式、客户端行为、数据脱敏和限制 |
| API 契约矩阵 | 每个工具对应的端点、方法、参数、计划、限流和证据 |
| API 特性 | OpenSolar 中令我们意外的行为,以及服务如何处理这些行为 |
| 来源日志 | 支撑各项契约的文档页面和实时检查 |
| 默认配置文件评估 | 对默认配置文件的行为评估及其发布调整 |
| 发布限制 | 影响部署的 OpenSolar 条款、限流和访问计划 |
| 发布检查清单 | 发布门槛 |
| 变更日志 | 按版本列出的重要变更 |
贡献
欢迎贡献。请参阅 CONTRIBUTING.md 和行为准则。如遇安全问题,请按照 SECURITY.md 中的说明处理,不要提交 issue。
许可证
MIT © 2026 Align Software Company。
OpenSolar 是 OpenSolar Pty Ltd 的商标。本项目独立开发,未经 OpenSolar 认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。