Token导航 LogoToken导航TokenDH.com
Darklens MCP Server logo
设计创作stdio官方级别未说明来源级核验

Darklens MCP Server

MCP Server

DarkLens是一款生产级模型上下文协议(MCP)服务器,能够检测、分类、解释并道德地重新设计网站和用户界面中的暗黑模式。

工具数

5

提示词数

0

GitHub Stars

1

资源数

0
PythonClaude设计Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Manavarya09

提供方

Manavarya09

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

DarkLens–暗模式检测MCP服务器

一个生产级的模型上下文协议(MCP)服务器,使AI代理能够检测、分类、解释和道德地重新设计网站和UI流中的暗模式。

概述

DarkLens分析UI元素、同意流、定价结构和交互摩擦,以识别操纵性设计模式。它提供适合推理和合规性评估的结构化JSON输出。

特性

  • 模式检测:基于规则的+NLP启发式方法,用于识别9+个暗模式类别
  • 分类:通过认知偏差分析和严重程度对模式进行分类
  • 伦理解释:对操纵策略和潜在危害的简明英语解释
  • 符合性评估:GDPR、FTC和DPDP法规下的风险评分
  • 伦理替代方案:建议重新设计UI流程和复制

支持的深色图案

  • 确认羞辱
  • 强迫同意
  • 蟑螂汽车旅馆
  • 隐性成本
  • 偷偷溜进篮子
  • 虚假紧迫感
  • 视觉操纵
  • 默认偏差利用
  • 唠叨/反复打断
  • 社会证明操纵 (通过Kaggle数据集增强)

数据源

检测系统通过来自 Kaggle暗模式数据集,提供了2000多个标记的电子商务和网络界面中的暗模式示例。

安装

先决条件

  • Python 3.10或更高版本
  • uv 包管理器(推荐)或 pip

使用紫外线进行安装(推荐)

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone or navigate to the project directory
cd /path/to/DarkLens-MCP-Server

# Install dependencies
uv sync

使用pip安装

# Install dependencies
pip install -e .

项目结构

DarkLens-MCP-Server/
├── darklens_mcp_server/
│   └── server.py          # Main MCP server implementation
├── data/
│   └── dark_patterns.json # Pattern taxonomy database
├── demo/                  # Example usage scripts
├── pyproject.toml         # Project configuration
├── requirements.txt       # Alternative dependencies
├── README.md             # This file
└── uv.lock               # Lock file for uv

服务端组件

资源

  • dark_patterns://taxonomy:完整的深色图案分类
  • ui_text://{url}:从网页中提取UI文本元素

工具

  • detect_dark_patterns:分析HTML/text/URL中的暗模式
  • classify_pattern:获取模式的详细分类
  • explain_manipulation:解释心理操纵
  • risk_score:评估法律/合规风险
  • suggest_ethical_alternative:获取道德重新设计建议

提示

  • audit_website:全面的网站审计模板
  • explain_ui_to_user:面向非技术用户的UI说明
  • compliance_report:用户体验道德合规报告模板
  • rewrite_cta:道德CTA重写模板
  • assess_gdpr_risk:GDPR风险评估模板

用法

运行MCP服务器

# With uv
uv run darklens_mcp_server

# With Python
python -m darklens_mcp_server.server

服务器通过MCP协议的stdio进行通信。

MCP客户端集成

使用任何兼容MCP的客户端进行连接。

示例工具调用

{
  "method": "tools/call",
  "params": {
    "name": "detect_dark_patterns",
    "arguments": {
      "input_type": "url",
      "content": "https://example.com"
    }
  }
}

示例响应

{
  "result": [
    {
      "pattern_id": "confirmshaming",
      "pattern_type": "Confirmshaming",
      "confidence": 0.9,
      "evidence": ["No thanks, I don't want to save money"]
    }
  ]
}

API 参考

detect_dark_patters

输入:

  • input_type:“html”|“text”|“url”
  • content:要分析的字符串内容

输出: 带有ID、类型、置信度和证据的检测模式数组。

分类模式

输入: pattern_id:字符串 输出: 类别、认知偏差、严重程度。

解释操纵

输入: pattern_id:字符串, user_type:“儿童”|“老年人”|“普通用户” 输出: 简单解释,心理学原理,潜在危害。

风险_核心

输入: pattern_id:字符串, region:“欧盟”|“美国”|“印度” 输出: 风险评分(0-100),违反规定,执行可能性。

建议伦理替代方案

输入: pattern_id:字符串 输出: 重写UI副本,重新设计流程,道德论证。

伦理考量

该工具旨在促进合乎道德的用户体验设计和监管合规性。负责任地使用:

  • 对网站进行操纵模式审计
  • 对设计师进行道德替代品教育
  • 确保遵守隐私和消费者保护法
  • 提高用户信任度和体验

免责声明: 该工具基于既定的暗模式研究提供分析,但不应被视为法律建议。始终就合规事宜咨询法律专家。

贡献

欢迎投稿!请确保代码遵循既定的模式,并包含适当的测试。

许可证

MIT许可证

资源

资源提供对数据的只读访问。它们类似于REST API中的GET端点。

静态资源

@mcp.resource("users://list")
def get_users_list() -> str:
    """Get a list of all users."""
    return json.dumps(SAMPLE_USERS, indent=2)

带参数的动态资源

@mcp.resource("users://{user_id}")
def get_user_by_id(user_id: str) -> str:
    """Get a specific user by ID."""
    # Implementation...

API外部资源

@mcp.resource("api://external/{endpoint}")
async def get_external_api_data(endpoint: str) -> str:
    """Fetch data from an external API endpoint."""
    # Implementation...

工具

工具是可以执行计算、API调用或其他操作的可执行函数。执行前可能需要用户批准。

同步工具

@mcp.tool()
def calculate_sum(numbers: List[float]) -> float:
    """Calculate the sum of a list of numbers."""
    return sum(numbers)

异步工具

@mcp.tool()
async def fetch_user_posts(user_id: int) -> str:
    """Fetch posts for a specific user from external API."""
    async with httpx.AsyncClient() as client:
        response = await client.get(f"{API_BASE_URL}/posts?userId={user_id}")
        return json.dumps(response.json(), indent=2)

具有复杂逻辑的工具

@mcp.tool()
def analyze_text(text: str) -> Dict[str, Any]:
    """Analyze text and return statistics."""
    words = text.split()
    return {
        "word_count": len(words),
        "character_count": len(text),
        # ... more analysis
    }

提示

提示是可重用的模板,可帮助LLM与您的服务器有效交互。它们定义了预期的输入和交互模式。

简单提示

@mcp.prompt()
def summarize_content(content: str, max_length: int = 100) -> str:
    """Create a prompt to summarize content."""
    return f"Please summarize the following content in {max_length} words or less:\n\n{content}"

复杂提示

@mcp.prompt()
def create_study_plan(subject: str, hours_per_week: int, weeks: int) -> str:
    """Create a study plan prompt."""
    return f"""Create a detailed study plan for learning {subject}.

Available time: {hours_per_week} hours per week
Duration: {weeks} weeks

Please include:
1. Weekly breakdown of topics
2. Daily study schedule
3. Recommended resources
4. Assessment milestones
5. Tips for effective learning"""

运行服务器

使用紫外线

uv run darklens-server

直接使用Python

python -m darklens_mcp_server.server

使用脚本

darklens-server

服务器将启动并通过stdio监听MCP协议消息。

测试服务器

使用MCP检查器

测试MCP服务器的最简单方法是使用MCP检查器:

# Install MCP Inspector globally
npm install -g @modelcontextprotocol/inspector

# Run the inspector with your server
mcp-inspector uv run darklens-server

这将打开一个web界面,您可以在其中与服务器的资源、工具和提示进行交互。

与客户进行手动测试

您还可以创建一个简单的测试客户端:

import asyncio
from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

async def test_server():
    async with stdio_client(
        StdioServerParameters(command="uv", args=["run", "darklens-server"])
    ) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # List resources
            resources = await session.list_resources()
            print("Available resources:", [r.uri for r in resources.resources])

            # List tools
            tools = await session.list_tools()
            print("Available tools:", [t.name for t in tools.tools])

            # List prompts
            prompts = await session.list_prompts()
            print("Available prompts:", [p.name for p in prompts.prompts])

            # Test a resource
            resource_content = await session.read_resource("users://list")
            print("Users resource content:", resource_content.contents[0].text)

            # Test a tool
            result = await session.call_tool("calculate_sum", {"numbers": [1, 2, 3, 4, 5]})
            print("Sum tool result:", result.content[0].text)

            # Test a prompt
            prompt_result = await session.get_prompt("summarize_content", {
                "content": "This is a sample text to summarize.",
                "max_length": 50
            })
            print("Prompt result:", prompt_result.messages[0].content)

asyncio.run(test_server())

与Claude Desktop集成

要将此服务器与Claude Desktop一起使用,请执行以下操作:

  1. 配置Claude桌面:

- 打开 ~/Library/Application Support/Claude/claude_desktop_config.json - 添加您的服务器配置:

{
  "mcpServers": {
    "darklens": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/DarkLens-MCP-Server",
        "run",
        "darklens-server"
      ]
    }
  }
}
  1. 重新启动克劳德桌面
  1. 克劳德测试:

- 让Claude“列出可用资源”或“使用calculate_sum工具” - 尝试以下提示:“制定一个学习Python的学习计划,每周10小时,持续8周”

可用资源

  • users://list -列出所有示例用户
  • users://{user_id} -按ID获取特定用户
  • posts://list -列出所有示例帖子
  • api://external/{endpoint} -从JSONPlaceholder API获取数据

可用工具

  • calculate_sum -将一系列数字相加
  • find_max -在列表中查找最大值
  • reverse_string -反转字符串
  • fetch_user_posts -从外部API获取用户的帖子
  • analyze_text -分析文本统计信息

可用提示

  • summarize_content -创建摘要提示
  • analyze_sentiment -创建情绪分析提示
  • generate_code -创建代码生成提示
  • create_study_plan -创建学习计划提示

最佳实践

资源

  • 保持资源函数的轻量级-避免繁重的计算
  • 为不同的内容类型使用适当的MIME类型
  • 优雅地处理错误并返回有意义的错误消息
  • 为动态资源使用URI模板

工具

  • 包含带有参数描述的清晰文档字符串
  • 验证输入参数
  • 妥善处理错误
  • 对I/O操作使用异步函数
  • 保持工具名称的描述性和一致性

提示

  • 使用可选参数使提示灵活
  • 包括LLM的明确说明
  • 结构提示输出一致
  • 使用描述性名称和描述

将军

  • 使用日志记录而不是打印语句(MCP使用stdio进行通信)
  • 部署前彻底测试服务器
  • 处理边缘情况和无效输入
  • 遵循Python类型提示以获得更好的工具支持

故障排除

服务器无法启动

  • 检查Python版本(必须是3.10+)
  • 验证是否已安装所有依赖项
  • 检查代码中的语法错误

工具/资源未显示

  • 确保正确使用装饰剂(@mcp.tool(),不 @mcp.tool)
  • 检查函数是否有正确的类型提示
  • 验证服务器初始化

Claude桌面集成问题

  • 在配置文件中检查服务器的路径
  • 确保服务器启动时没有错误
  • 配置更改后重新启动Claude Desktop
  • 检查Claude Desktop日志是否有错误

常见错误

  • “print()中断MCP”:切勿使用 print() 在生产环境中,它破坏了JSON-RPC协议
  • “需要异步函数”:使用 async def 用于执行I/O的功能
  • “URI无效”:确保资源URI遵循正确的格式

下一步

许可证

这个项目是作为一个教育例子提供的。您可以根据自己的MCP服务器实现自由修改和扩展它。

目录标签

目录标签

PythonClaude设计暗黑模式检测本地部署用户界面分析合规评估道德设计AI工具

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP