in spring-ai-alibaba-jmanus/src/main/resources/static/admin/js/mcp-ui.js [32:134]
initMcpPanel() {
// 清空当前内容
this.mcpConfigPanel.innerHTML = '';
// 添加标题
const titleElement = document.createElement('h2');
titleElement.className = 'panel-title';
titleElement.textContent = 'MCP配置';
this.mcpConfigPanel.appendChild(titleElement);
// 创建MCP服务器列表容器
const mcpLayout = document.createElement('div');
mcpLayout.className = 'mcp-layout';
this.mcpConfigPanel.appendChild(mcpLayout);
// 创建表格容器
this.mcpTableContainer = document.createElement('div');
this.mcpTableContainer.className = 'mcp-table-container';
mcpLayout.appendChild(this.mcpTableContainer);
// 创建添加MCP服务器表单容器
const addMcpContainer = document.createElement('div');
addMcpContainer.className = 'add-mcp-container';
mcpLayout.appendChild(addMcpContainer);
// 添加标题
const addMcpHeader = document.createElement('div');
addMcpHeader.className = 'add-mcp-header';
addMcpContainer.appendChild(addMcpHeader);
const addMcpTitle = document.createElement('h3');
addMcpTitle.className = 'add-mcp-title';
addMcpTitle.textContent = '添加MCP服务器';
addMcpHeader.appendChild(addMcpTitle);
// 创建添加表单
const addMcpForm = document.createElement('div');
addMcpForm.className = 'mcp-form';
addMcpContainer.appendChild(addMcpForm);
// 添加表单内容
addMcpForm.innerHTML = `
<div class="mcp-form-group">
<label for="mcp-connection-type">连接类型:</label>
<div class="connection-type-options">
<div class="connection-type-option">
<input type="radio" id="mcp-connection-type-studio" name="mcp-connection-type" value="STUDIO" checked>
<label for="mcp-connection-type-studio">STUDIO</label>
<div class="connection-type-desc">本地mcp server,目前市面上主流的是这个</div>
</div>
<div class="connection-type-option">
<input type="radio" id="mcp-connection-type-sse" name="mcp-connection-type" value="SSE">
<label for="mcp-connection-type-sse">SSE</label>
<div class="connection-type-desc">一种远程mcp server 链接协议,目前推荐</div>
</div>
</div>
</div>
<div class="mcp-form-group">
<label for="mcp-config-input">mcp json配置:</label>
<textarea id="mcp-config-input" rows="12" placeholder="请输入MCP服务器配置JSON。
例如:
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}"></textarea>
</div>
<div class="mcp-form-actions">
<button class="submit-mcp-btn" id="submit-mcp-btn">提交</button>
</div>
<div class="mcp-form-instructions">
<h3>使用说明:</h3>
<ol>
<li>找到你要用的mcp server的配置json:
<ul class="indented-list">
<li><strong>本地(STDIO)</strong>:可以在<a href="https://mcp.so" target="_blank">mcp.so</a>上找到,需要你有Node.js环境并理解你要配置的json里面的每一个项,
做对应调整比如配置ak</li>
<li><strong>远程服务(SSE)</strong>:<a href="https://mcp.higress.ai/" target="_blank">mcp.higress.ai/</a>上可以找到,
有SSE和STREAMING两种,目前SSE协议更完备一些</li>
</ul>
</li>
<li>将json配置复制到上面的输入框,本地选STUDIO,远程选STREAMING或SSE,提交</li>
<li>这样mcp tools就注册成功了。默认会放在DEFAULT_AGENT下面,如果tools过多,对上下文有压力,多出的tools会被忽略</li>
<li>推荐在Agent配置里面,新建一个agent,然后增加指定的tools,这样可以极大减少冲突,增强tools被agent选择的准确性</li>
</ol>
</div>
`;
this.addMcpForm = {
configInput: addMcpForm.querySelector('#mcp-config-input'),
submitButton: addMcpForm.querySelector('#submit-mcp-btn')
};
}