MCP出租车
一个模型上下文协议(MCP)服务器,充当人工智能代理的TAXII客户端,使他们能够使用TAXII协议与威胁情报平台进行交互。
概述
MCP TAXII在AI代理和TAXII(可信的智能信息自动交换)服务器之间提供了一座桥梁,使AI系统能够:
- 查询威胁情报数据
- 从TAXII集合中检索STIX对象
- 发现可用的威胁情报来源
- 在允许的情况下,将新的威胁情报添加到集合中
服务器支持TAXII 2.0和TAXII 2.1协议。
特性
- TAXII 2.0和2.1支持:兼容两个主要的TAXII协议版本
- FastMCP框架:基于FastMCP构建,实现高效的MCP服务器实施
- 身份验证支持:处理TAXII服务器的用户名/密码身份验证
- 收集管理:浏览、查询TAXII集合并与之交互
- STIX对象操作:检索和添加STIX威胁情报对象
- 分页支持:使用内置分页处理大型数据集(TAXII 2.1)
- 环境变量配置:通过环境变量轻松设置
uvx快速入门(无需安装)
uvx 是一个允许您在不安装Python包的情况下运行Python包的工具。这非常适合:
- 快速测试 而不会扰乱您的系统
- 在CI/CD中运行 管道
- 孤立执行 没有依赖冲突
- 始终运行最新版本
uvx的先决条件
# Install uv (which includes uvx)
pip install uv
# or
pipx install uv直接从PyPI运行
发布到PyPI后,您可以立即运行MCP TAXII:
# Run the latest version
uvx mcp-taxii
# Run a specific version
uvx mcp-taxii==0.1.0
# With environment configuration
MCPTAXII_HOST="http://localhost:8000/taxii21/" \
MCPTAXII_USERNAME="admin" \
MCPTAXII_PASSWORD="admin_password" \
uvx mcp-taxii从GitHub运行
对于开发版本或未发布版本:
# Run directly from GitHub main branch
uvx --from git+https://github.com/yourusername/mcp_taxii mcp-taxii
# Run from a specific branch or tag
uvx --from git+https://github.com/yourusername/mcp_taxii@develop mcp-taxii
uvx --from git+https://github.com/yourusername/mcp_taxii@v0.2.0 mcp-taxii
# With environment variables
MCPTAXII_HOST="https://your-server.com/taxii2/" \
MCPTAXII_USERNAME="user" \
MCPTAXII_PASSWORD="pass" \
uvx --from git+https://github.com/yourusername/mcp_taxii mcp-taxii从本地目录运行
发展:
# From the project directory
uvx --from . mcp-taxii
# From another directory
uvx --from /path/to/mcp_taxii mcp-taxii安装
先决条件
- Python 3.11或更高版本
uv软件包管理器(安装pip install uv)- 要连接的TAXII服务器(或使用附带的测试服务器)
设置
- 克隆存储库:
git clone
cd mcp_taxii- 如果尚未安装,请安装uv:
# Using pip
pip install uv
# Or using pipx (recommended)
pipx install uv- 安装依赖项:
uv sync --extra dev- 配置环境变量:
复制示例环境文件,并使用您的TAXII服务器凭据进行更新:
cp .env.example .env
# Edit .env with your TAXII server details这 .env 文件应包含:
# .env file
MCPTAXII_HOST="https://your-taxii-server.com/taxii2/"
MCPTAXII_USERNAME="your-username"
MCPTAXII_PASSWORD="your-password"
TAXII_VERSION="2.1" # or "2.0" depending on your server或者,直接导出它们:
export MCPTAXII_HOST="https://your-taxii-server.com/taxii2/"
export MCPTAXII_USERNAME="your-username"
export MCPTAXII_PASSWORD="your-password"
export TAXII_VERSION="2.1"使用测试服务器(可选)
如果您没有TAXII服务器,可以使用附带的测试服务器:
# Start the test server (in a separate terminal)
python dev/taxii_test_server/run_server.py --port 8000
# Configure your .env to point to the test server
MCPTAXII_HOST="http://localhost:8000/taxii21/"
MCPTAXII_USERNAME="admin"
MCPTAXII_PASSWORD="admin_password"
TAXII_VERSION="2.1"MCP服务器设置
作为独立MCP服务器运行
# Run the MCP server
uv run python -m mcp_taxii.server服务器将启动并监听MCP协议连接。
与Claude Desktop集成
要将此MCP服务器与Claude Desktop一起使用,您有多个选项:
选项1:使用uvx(推荐-无需安装)
{
"mcpServers": {
"mcp-taxii": {
"command": "uvx",
"args": ["mcp-taxii"],
"env": {
"MCPTAXII_HOST": "https://your-taxii-server.com/taxii2/",
"MCPTAXII_USERNAME": "your-username",
"MCPTAXII_PASSWORD": "your-password",
"TAXII_VERSION": "2.1"
}
}
}
}选项2:使用uvx从GitHub
{
"mcpServers": {
"mcp-taxii": {
"command": "uvx",
"args": ["--from", "git+https://github.com/yourusername/mcp_taxii", "mcp-taxii"],
"env": {
"MCPTAXII_HOST": "https://your-taxii-server.com/taxii2/",
"MCPTAXII_USERNAME": "your-username",
"MCPTAXII_PASSWORD": "your-password",
"TAXII_VERSION": "2.1"
}
}
}
}选项3:本地安装
{
"mcpServers": {
"mcp-taxii": {
"command": "uv",
"args": ["run", "python", "-m", "mcp_taxii.server"],
"cwd": "/path/to/mcp_taxii",
"env": {
"MCPTAXII_HOST": "https://your-taxii-server.com/taxii2/",
"MCPTAXII_USERNAME": "your-username",
"MCPTAXII_PASSWORD": "your-password",
"TAXII_VERSION": "2.1"
}
}
}
}- 重新启动克劳德桌面 加载MCP服务器
配置选项
环境变量
| 变量 | 描述 | 默认值 | 必填 |
|---|---|---|---|
MCPTAXII_HOST | TAXII服务器的基本URL | 无 | 是\* |
MCPTAXII_USERNAME | 身份验证用户名 | 无 | 是\* |
MCPTAXII_PASSWORD | 身份验证密码 | 无 | 是\* |
TAXII_VERSION | TAXII协议版本(“2.0”或“2.1”) | “2.1” | 否 |
TAXII_VERIFY_SSL | 验证SSL证书 | “true” | 否 |
TAXII_TIMEOUT | 请求超时(秒) | “30” | 否 |
\*除非通过以下方式提供,否则需要 initialize_taxii 工具
验证设置
配置后,您可以通过询问Claude来验证MCP服务器是否正常工作:
"Initialize a connection to the TAXII server and show me what collections are available"Claude将使用MCP工具连接到您的TAXII服务器,并列出可用的威胁情报收集。
快速入门指南
1.使用uvx在本地服务器上进行测试
# Terminal 1: Start test TAXII server
python dev/taxii_test_server/run_server.py
# Terminal 2: Run MCP server with uvx
MCPTAXII_HOST="http://localhost:8000/taxii21/" \
MCPTAXII_USERNAME="admin" \
MCPTAXII_PASSWORD="admin_password" \
uvx mcp-taxii2.使用uvx连接生产TAXII服务器
# Option A: With environment variables
MCPTAXII_HOST="https://your-taxii-server.com/taxii2/" \
MCPTAXII_USERNAME="your-username" \
MCPTAXII_PASSWORD="your-password" \
TAXII_VERSION="2.1" \
uvx mcp-taxii
# Option B: With .env file
cat > .env
cd mcp_taxii
uv sync --extra dev
# Run with uv
uv run python -m mcp_taxii.server故障排除
常见问题
- 连接被拒绝错误:
- 确保您的TAXII服务器正在运行且可访问 - 检查MCPTAXII_HOST是否正确(包括协议和路径) - 验证防火墙设置是否允许连接
- 身份验证失败:
- 仔细检查您的用户名和密码 - 确保在环境变量中正确设置凭据 - 一些TAXII服务器需要特定的身份验证标头
- SSL证书错误:
- 对于自签名证书,设置 TAXII_VERIFY_SSL="false" - 确保您的系统已更新CA证书
- 未返回收藏:
- 验证您是否有查看集合的权限 - 检查API根路径是否正确 - 尝试使用 get_discovery() 工具首先查看可用的API根
- Claude无法识别MCP服务器:
- 确保路径 claude_desktop_config.json 是绝对的 - 配置更改后重新启动Claude Desktop - 检查Claude的开发人员控制台是否有错误消息
可用工具
MCP TAXII服务器为AI代理提供以下工具:
initialize_taxii
初始化与TAXII服务器的连接。
参数:
url(可选):TAXII服务器URLusername(可选):身份验证用户名password(可选):身份验证密码version:TAXII版本(“2.0”或“2.1”,默认为“2.1”)
get_discovery
检索TAXII服务器发现信息,包括可用的API根。
get_collections
列出TAXII服务器上的可用集合。
参数:
api_root(可选):特定的API根URL
get_collection_objects
从特定集合中检索STIX对象。
参数:
collection_id:要查询的集合的IDapi_root(可选):特定的API根URLlimit:要检索的最大对象数(默认值:100)added_after(可选):ISO时间戳,用于过滤在此时间之后添加的对象
get_object_manifest
从集合中获取对象清单(元数据)。
参数:
collection_id:集合的IDapi_root(可选):特定的API根URLlimit:清单条目的最大数量(默认值:100)
add_objects
将STIX对象添加到可写集合中。
参数:
collection_id:目标集合的IDobjects:要添加的STIX对象列表api_root(可选):特定的API根URL
集成示例
以下是AI代理如何与MCP TAXII服务器交互:
# Initialize connection
await initialize_taxii(
url="https://intel.example.com/taxii2/",
username="analyst",
password="secure_password",
version="2.1"
)
# Discover available resources
discovery = await get_discovery()
# List collections
collections = await get_collections()
# Retrieve threat indicators
indicators = await get_collection_objects(
collection_id="indicators-collection",
limit=50
)
# Add new threat intelligence
new_indicators = [
{
"type": "indicator",
"id": "indicator--" + str(uuid4()),
"created": "2024-01-01T00:00:00.000Z",
"modified": "2024-01-01T00:00:00.000Z",
"pattern": "[file:hashes.MD5 = 'malicious_hash']",
"valid_from": "2024-01-01T00:00:00.000Z"
}
]
status = await add_objects("indicators-collection", new_indicators)发展
运行测试
uv run pytest代码格式化
uv run ruff format src/ tests/掉毛
uv run ruff check src/ tests/项目结构
mcp_taxii/
├── docs/ # Documentation
├── aidocs/ # AI-specific documentation
│ └── specs/ # TAXII specification docs
├── dev/ # Development tools
│ └── taxii_test_server/ # Test TAXII server
├── src/
│ └── mcp_taxii/
│ ├── __init__.py
│ ├── server.py # Main MCP server implementation
│ └── clients/ # TAXII client implementations
│ ├── base.py # Abstract base client
│ ├── taxii_20.py # TAXII 2.0 client
│ └── taxii_21.py # TAXII 2.1 client
├── tests/ # Test suite
│ ├── conftest.py # Shared test fixtures
│ └── test_server.py # Server tests
├── pyproject.toml # Project configuration
├── CLAUDE.md # AI agent instructions
└── README.md # This file测试服务器
兼容的TAXII 2.0/2.1测试服务器可在 dev/ 用于测试目的的目录。看 dev/taxii_test_server/README.md 了解详情。
许可证
\[在此处指定您的许可证\]
贡献
\[如适用,添加捐款指南\]
