一、前言
好长一段时间不写文章了,又到国庆长假,是时候整理下最近对 AI 工程化上的一些心得进行总结和分享;
在 AI 的时代浪潮里写文章的门槛变低了很多,AI渲染、AI 代笔;
能真正愿意花费时间,认真的写点东西,是真的挺难得;
在有 AI 的日子里,人的深度阅读与总结能力也开始慢慢退化了。
二、背景
回到主题,近期在公司的开发流程中集成 AI 工程化的落地实践的过程中,各端开发人员在开发流程的各个阶段均会有使用 coding agent 调用内网系统的需求,比如:
需求评审: 获取 tapd prd 需求信息,提供 Agent 了解需求进行脑暴和明确需求细节;
方案设计: 基于需求理解完后 ,让 AI 编写技术方案并同步到 wiki 文档中;
开发阶段: 构造 API 接口文档到 apidoc 平台中、功能开发完成自动 gitlab MR、自动触发发布测试环境;
测试阶段: 获取测试用例信息用于 AI 自测、获取 bug 信息用于 bugfix;
等等,在开发各个阶段,均会使用到内网系统,需要让 Agent 调度获取补充上下文信息,以及特定的功能操作;
前期大家都在探索,不同端(服务端、客户端、前端)各凭本事实现不同内网系统的调用;
三、现状
当前各端在开发阶段均有内网系统调用需求,并各凭本事重复造轮子,多数解决方案是采用 skills script 去实现内网系统的登录授权,并且携带授权信息去调用 API,复用性差,使用门槛高,安全性差,等问题;
在短时间内想让内网系统(自建、开源搭建、商用搭建)都支持 MCP Tools 能力,也不太现实;
四、目标
在不改动内网系统的情况下,将内网系统的相关能力封装成 MCP Tools 提供基础通用能力,支持 tools 的授权管理,支持个人账号登录授权管理、支持危险操作的审批机制、支持 Tool 调用审查日志、支持配套的 Skills;
使用个人内网系统账号去调用 Tools 与用户直接登录内网系统去手动操作效果一致,依然是以个人账号权限去调用,不会出现越权问题;
五、方案
概要
项目: internal-mcp --- 让 AI Agent 直接使用内网系统;
内网系统接口统一封装成 MCP tools,AI 对话即可调用;写操作走人工审批;
这里仅提供实现的思路,不开源;因为这里接入的 MCP Tools 均是公司内网系统,不适合对外开源;但是思路是通用的。

内网接口直接给 AI 用: 内网系统的接口按需授权后注册成 MCP tools,AI 客户端连接即可调用。
凭据与授权管理: 管理台录入账号密码、测试登录、逐个接口开授权开关;凭据加密存储,明文不回显。
写操作要过审批: Agent 发起的写操作只生成待执行单,人工在管理台确认后才真正执行;每次调用都留痕可查。
MCP 市场: 把外部 stdio MCP server 接进来,与内置工具一起提供给 AI。
Agent Skills: 随仓库分发成套流程技能(测试环境发布、服务安装管理),一条命令装进 AI 客户端、,对话里用自然语言触发;管理台 Skills 页可查看全部技能及其用法。
| 痛点 | internal-mcp 解决 |
|---|---|
| 各内网系统登录方式不一(SSO、令牌、Cookie),AI 接不了 | 统一适配各系统登录,AI 只面对 MCP tools,不感知登录细节 |
| 会话过期、凭据散落各处 | 凭据加密托管,过期自动重登,调用方无感知 |
| AI 直接改内网数据风险高 | 写操作先落待执行单,人工在管理台审批后才真正执行 |
| 不知道 AI 动了什么 | 每次调用留痕,执行记录可查 |
| MCP Tools 较多上下文污染与产生噪音 | 通过系统开关和 tools 授权开关管理 |
| MCP Tools 基础能力,Agent 多轮对话编排调用不稳定 | 对于特定标准化流程沉淀 skills,稳定高效执行 |
| 内网系统不支持 MCP Tools | 接通内网系统登录和 API,通过 MCP Tools 提供能力 |
| 各端开发人员想要使用内网工具,重复造轮子 | 通过 MCP Tools 提供内网系统API Tools 基础能力,可通用 |
架构图

- AI Agent: 调用方,通过 MCP tools 调用内网系统能力。
- 管理台 Vue SPA : 管理入口,配置系统、授权 API、审批与查日志。
- mcpserver: MCP 端点(stdio + HTTP),按授权动态生成 tools 并路由调用。
- 治理域(apireg + draft + execlog): 所有 tool 的唯一通路,API 授权开关 → 写操作落审批 → 执行记日志。
- adapter : 核心抽象 SystemAdapter,把各内网系统的登录、校验、调用差异封装在各自实现里。
- authcache + credstore: 身份态层------授权缓存与自动重登闭环;凭据 AES-256-GCM 加密存储。
- store( SQLite ): 单文件库,所有配置、凭据密文、审批、日志的唯一持久化。
业务 领域模型

- 治理域:核心管控链。System(内网系统)注册 ApiPermission(API 授权开关,含写类审批标记);写类调用触发 Draft(待审批单),审批后执行并经 ExecLog 落日志,draft_id 回写闭环。
- 身份域:System 配置 Credential(凭据,仅存 AES 密文);登录产出 AuthToken(令牌密文 + 过期时间),运行时由 AuthCache 缓存并在 401 时自动重登。
- 服务域:McpTool 是对外交付物,由授权的 API 动态生成(命名 {system}_{api_key});ProviderConfig 注入外部 MCP 子进程的工具,走同一治理链。
功能
| 系统 | 能做什么 |
|---|---|
| Apidoc 接口文档系统 | 查接口与标签、按域名查代码仓库、新增/更新接口文档 |
| TAPD | 查项目、需求、缺陷,需求与任务维护、评论 |
| Confluence Wiki | 读文章、页面管理、评论与标签 |
| ELK 日志中心 | 按条件查询线上日志 |
| GitLab | 仓库代码、代码评审(MR)、流水线、Issue 协作、发布制品 |
| 内网发布系统(Sparrow) | 发起测试环境发布 |
| ... | ... |
怎么用
1)安装(技能方式)
在目标项目根目录执行:
csharp
npx skills add git@gitlab.xxxx.com:sflyq/internal-mcp.git
装好后在 AI 客户端 Agent 对话里输入 /my-internal-mcp install,由技能完成:下载最新版本 → 注册常驻服务 → 自动配置本机 MCP 客户端。
安装参数列表:

更新操作

2)初始化(一次性)
打开管理台 http://127.0.0.1:6688:
- 系统总览 › 凭据管理:录入内网系统账号密码,点「测试登录」确认成功。
- 系统总览 › API 授权:按需打开接口开关,对应接口立刻作为 MCP tool 提供给 AI。
服务地址:管理台 127.0.0.1:6688,MCP 端点 127.0.0.1:6677/mcp。
控制台
1)内网系统&授权管理
支持开启关闭系统,tools 授权管理、登录凭据管理;
考虑到 mcp tools 过多会对模型上下文污染和产生判断干扰,这里做个系统开关和 tools 开关;


2)Tools 授权&审核管理
支持搜索、批量管理、推荐授权场景组;

3)MCP 市场
使用mcp provider,支持接入开关的 mcp,统一在 internal-mcp 进行管控;


4)Skills
基于 mcp tools 基础能力,编排对应特定标准流程的skills,让执行更稳定、高效; 其中 my-internal-mcp 技能可以对系统进行安装、升级、停止、重启、运行状态,等操作;降低安装升级和使用的门槛;

5)审批
审批通过、拒绝,支持查看历史,支持可视化对比,比如:apidoc 可视化对比差异,wiki 可视化对比内容变更,等;

6)关于
版本更新说明、更新红点提醒;
