
























WSO2 API Manager 从 4.5 升级到 4.6 的版本中,对 MCP(模型上下文协议,Model Context Protocol)的支持确实是一个非常重要的架构级更新。下面我以 MCP 为切入点,重新梳理一下这个版本的核心变化。
这个新功能的本质,是将 WSO2 API Manager 从一个传统的 API 管理平台,升级为同时具备 AI 就绪能力的网关和中心。它解决了如何让现有 API 被 AI 智能体(Agents)高效、可控地发现和调用的问题。
WSO2 APIM 4.6.0 通过引入两个核心概念来实现这一目标:
基于上述架构,WSO2 APIM 4.6.0 为管理和使用 MCP 服务提供了三种主要方式:
灵活多样的 MCP 服务创建方式:你可以通过三种途径来生成 MCP 服务:
MCP Hub 的集中管理:
MCP_ONLY(仅MCP模式)、HYBRID(混合模式)或 API_ONLY(仅API模式),以匹配团队的消费习惯。开发优先的导入与治理:
apictl import mcp-server 命令,在 CI/CD 管道中自动化地创建和部署 MCP 服务。wso2-apim4.6多了几张表,现在有表加了几个字段,已总结到wso2am4_6_upgrade.sql文件
SET FOREIGN_KEY_CHECKS=0;
-- 去索引避免无法复制数据
-- ALTER TABLE `wso2am_db`.`am_api_metadata` DROP FOREIGN KEY `am_api_metadata_ibfk_1`;
-- ALTER TABLE `wso2am_db`.`am_backend` DROP FOREIGN KEY `am_backend_ibfk_1`;
-- ALTER TABLE `wso2am_db`.`am_gw_revision_deployment` DROP FOREIGN KEY `am_gw_revision_deployment_ibfk_2`;
-- 添加字段
ALTER TABLE `wso2am_db_pre`.`am_api`
MODIFY COLUMN `API_SUBTYPE` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `API_TYPE`;
ALTER TABLE `wso2am_db`.`am_api` ADD COLUMN `API_DISPLAY_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL AFTER `SUB_VALIDATION`;
ALTER TABLE `wso2am_db`.`am_api` ADD COLUMN `INITIATED_FROM_GW` int NULL DEFAULT 0 AFTER `API_DISPLAY_NAME`;
ALTER TABLE `wso2am_db`.`am_api_primary_ep_mapping` ADD COLUMN `REVISION_UUID` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API' AFTER `ENDPOINT_UUID`;
ALTER TABLE `wso2am_db`.`am_api_url_mapping` ADD COLUMN `DESCRIPTION` blob NULL AFTER `LOG_LEVEL`;
ALTER TABLE `wso2am_db`.`am_api_url_mapping` ADD COLUMN `SCHEMA_DEFINITION` blob NULL AFTER `DESCRIPTION`;
ALTER TABLE `wso2am_db`.`am_llm_provider` ADD COLUMN `MODEL_FAMILY_SUPPORTED` varchar(5) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'false' AFTER `API_DEFINITION`;
ALTER TABLE `wso2am_db`.`am_llm_provider_model` ADD COLUMN `MODEL_FAMILY_NAME` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL AFTER `MODEL_NAME`;
ALTER TABLE `wso2am_db`.`am_gateway_environment` ADD COLUMN `ENV_MODE` varchar(45) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'WRITE_ONLY' AFTER `GATEWAY_TYPE`;
ALTER TABLE `wso2am_db`.`am_gateway_environment` ADD COLUMN `SCHEDULED_TIME` int NULL DEFAULT NULL AFTER `ENV_MODE`;
CREATE TABLE `wso2am_db`.`am_api_metadata` (
`API_UUID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`REVISION_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API',
`METADATA_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`METADATA_VALUE` varchar(1024) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`API_UUID`, `REVISION_UUID`, `METADATA_KEY`) USING BTREE,
CONSTRAINT `am_api_metadata_ibfk_1` FOREIGN KEY (`API_UUID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_api_operation_mapping` (
`MAPPING_ID` int NOT NULL AUTO_INCREMENT,
`URL_MAPPING_ID` int NOT NULL,
`REF_URL_MAPPING_ID` int NOT NULL,
PRIMARY KEY (`MAPPING_ID`) USING BTREE,
INDEX `URL_MAPPING_ID`(`URL_MAPPING_ID` ASC) USING BTREE,
INDEX `REF_URL_MAPPING_ID`(`REF_URL_MAPPING_ID` ASC) USING BTREE,
CONSTRAINT `am_api_operation_mapping_ibfk_1` FOREIGN KEY (`URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `am_api_operation_mapping_ibfk_2` FOREIGN KEY (`REF_URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_backend` (
`BACKEND_ID` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`BACKEND_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ENDPOINT_CONFIG` blob NULL,
`DEFINITION` longblob NULL,
`REFERENCE_API_UUID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`REFERENCE_API_REVISION_UUID` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'Current API',
`ORGANIZATION` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`BACKEND_ID`) USING BTREE,
UNIQUE INDEX `REFERENCE_API_UUID`(`REFERENCE_API_UUID` ASC, `REFERENCE_API_REVISION_UUID` ASC, `BACKEND_NAME` ASC) USING BTREE,
CONSTRAINT `am_backend_ibfk_1` FOREIGN KEY (`REFERENCE_API_UUID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_backend_operation_mapping` (
`MAPPING_ID` int NOT NULL AUTO_INCREMENT,
`URL_MAPPING_ID` int NOT NULL,
`BACKEND_ID` varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`TARGET` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`VERB` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`MAPPING_ID`) USING BTREE,
INDEX `URL_MAPPING_ID`(`URL_MAPPING_ID` ASC) USING BTREE,
INDEX `BACKEND_ID`(`BACKEND_ID` ASC) USING BTREE,
CONSTRAINT `am_backend_operation_mapping_ibfk_1` FOREIGN KEY (`URL_MAPPING_ID`) REFERENCES `wso2am_db`.`am_api_url_mapping` (`URL_MAPPING_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `am_backend_operation_mapping_ibfk_2` FOREIGN KEY (`BACKEND_ID`) REFERENCES `wso2am_db`.`am_backend` (`BACKEND_ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_instance_env_mapping` (
`GATEWAY_ID` int NOT NULL,
`ENV_LABEL` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`GATEWAY_ID`, `ENV_LABEL`) USING BTREE,
CONSTRAINT `am_gw_instance_env_mapping_ibfk_1` FOREIGN KEY (`GATEWAY_ID`) REFERENCES `wso2am_db`.`am_gw_instances` (`GATEWAY_ID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_instances` (
`GATEWAY_ID` int NOT NULL AUTO_INCREMENT,
`GATEWAY_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ORGANIZATION` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`LAST_UPDATED` timestamp NOT NULL,
`GW_PROPERTIES` blob NOT NULL,
PRIMARY KEY (`GATEWAY_ID`) USING BTREE,
UNIQUE INDEX `GATEWAY_UUID`(`GATEWAY_UUID` ASC, `ORGANIZATION` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_gw_revision_deployment` (
`GATEWAY_ID` int NOT NULL,
`API_ID` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`ORGANIZATION` varchar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`STATUS` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`ACTION` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`REVISION_UUID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`LAST_UPDATED` bigint NOT NULL,
PRIMARY KEY (`GATEWAY_ID`, `API_ID`) USING BTREE,
INDEX `API_ID`(`API_ID` ASC) USING BTREE,
INDEX `IDX_GW_REV_DEPLOY_STATUS`(`STATUS` ASC, `ACTION` ASC) USING BTREE,
CONSTRAINT `am_gw_revision_deployment_ibfk_1` FOREIGN KEY (`GATEWAY_ID`) REFERENCES `wso2am_db`.`am_gw_instances` (`GATEWAY_ID`) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT `am_gw_revision_deployment_ibfk_2` FOREIGN KEY (`API_ID`) REFERENCES `wso2am_db`.`am_api` (`API_UUID`) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
CREATE TABLE `wso2am_db`.`am_task_lock` (
`LOCK_TIME` bigint NOT NULL,
`TASK_ID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`NODE_ID` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`TASK_ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS=1;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。