mcp独立模块
This commit is contained in:
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"mcpServers": {
|
|
||||||
"tavily": {
|
|
||||||
"command": "npx",
|
|
||||||
"args": [
|
|
||||||
"-y",
|
|
||||||
"mcp-remote",
|
|
||||||
"https://mcp.tavily.com/mcp/?tavilyApiKey=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"
|
|
||||||
],
|
|
||||||
"env": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
"""
|
"""
|
||||||
MaiSaka - MCP (Model Context Protocol) 客户端包
|
MCP (Model Context Protocol) 客户端包。
|
||||||
|
|
||||||
提供 MCPManager 用于管理 MCP 服务器连接、发现工具、调用工具。
|
提供 MCPManager 用于管理 MCP 服务器连接、发现工具、调用工具。
|
||||||
|
|
||||||
用法:
|
用法:
|
||||||
from .manager import MCPManager
|
from .manager import MCPManager
|
||||||
|
|
||||||
manager = await MCPManager.from_config("mcp_config.json")
|
manager = await MCPManager.from_config("config/mcp_config.json")
|
||||||
if manager:
|
if manager:
|
||||||
tools = manager.get_openai_tools() # 获取 OpenAI 格式工具列表
|
tools = manager.get_openai_tools() # 获取 OpenAI 格式工具列表
|
||||||
result = await manager.call_tool(name, args) # 调用工具
|
result = await manager.call_tool(name, args) # 调用工具
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
"""
|
"""
|
||||||
MaiSaka - MCP 配置加载与验证
|
MCP 配置加载与验证。
|
||||||
从 mcp_config.json 读取 MCP 服务器定义,解析为结构化配置对象。
|
从 config/mcp_config.json 读取 MCP 服务器定义,解析为结构化配置对象。
|
||||||
|
|
||||||
配置格式示例:
|
配置格式示例:
|
||||||
{
|
{
|
||||||
@@ -21,12 +21,16 @@ MaiSaka - MCP 配置加载与验证
|
|||||||
- url: SSE 传输(连接远程服务器)
|
- url: SSE 传输(连接远程服务器)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Optional
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
from dataclasses import dataclass, field
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from ..console import console
|
from src.maisaka.console import console
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_MCP_CONFIG_PATH = Path(__file__).resolve().parents[2] / "config" / "mcp_config.json"
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -54,7 +58,7 @@ class MCPServerConfig:
|
|||||||
return "unknown"
|
return "unknown"
|
||||||
|
|
||||||
|
|
||||||
def load_mcp_config(config_path: str = "mcp_config.json") -> list[MCPServerConfig]:
|
def load_mcp_config(config_path: str = str(DEFAULT_MCP_CONFIG_PATH)) -> list[MCPServerConfig]:
|
||||||
"""
|
"""
|
||||||
从配置文件加载 MCP 服务器列表。
|
从配置文件加载 MCP 服务器列表。
|
||||||
|
|
||||||
@@ -76,7 +80,7 @@ def load_mcp_config(config_path: str = "mcp_config.json") -> list[MCPServerConfi
|
|||||||
|
|
||||||
mcp_servers = data.get("mcpServers", {})
|
mcp_servers = data.get("mcpServers", {})
|
||||||
if not isinstance(mcp_servers, dict):
|
if not isinstance(mcp_servers, dict):
|
||||||
console.print("[warning]⚠️ mcp_config.json 中 mcpServers 格式无效[/warning]")
|
console.print("[warning]⚠️ MCP 配置中的 mcpServers 格式无效[/warning]")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
configs: list[MCPServerConfig] = []
|
configs: list[MCPServerConfig] = []
|
||||||
@@ -6,7 +6,8 @@ MaiSaka - 单个 MCP 服务器连接管理
|
|||||||
from contextlib import AsyncExitStack
|
from contextlib import AsyncExitStack
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..console import console
|
from src.maisaka.console import console
|
||||||
|
|
||||||
from .config import MCPServerConfig
|
from .config import MCPServerConfig
|
||||||
|
|
||||||
# ──────────────────── MCP SDK 可选导入 ────────────────────
|
# ──────────────────── MCP SDK 可选导入 ────────────────────
|
||||||
@@ -5,8 +5,9 @@ MaiSaka - MCP 管理器
|
|||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from ..console import console
|
from src.maisaka.console import console
|
||||||
from .config import MCPServerConfig, load_mcp_config
|
|
||||||
|
from .config import DEFAULT_MCP_CONFIG_PATH, MCPServerConfig, load_mcp_config
|
||||||
from .connection import MCPConnection, MCP_AVAILABLE
|
from .connection import MCPConnection, MCP_AVAILABLE
|
||||||
|
|
||||||
# 内置工具名称集合 —— MCP 工具不允许与这些名称冲突
|
# 内置工具名称集合 —— MCP 工具不允许与这些名称冲突
|
||||||
@@ -43,7 +44,7 @@ class MCPManager:
|
|||||||
@classmethod
|
@classmethod
|
||||||
async def from_config(
|
async def from_config(
|
||||||
cls,
|
cls,
|
||||||
config_path: str = "mcp_config.json",
|
config_path: str = str(DEFAULT_MCP_CONFIG_PATH),
|
||||||
) -> Optional["MCPManager"]:
|
) -> Optional["MCPManager"]:
|
||||||
"""
|
"""
|
||||||
从配置文件创建并初始化 MCPManager。
|
从配置文件创建并初始化 MCPManager。
|
||||||
Reference in New Issue
Block a user