Sensitive Lexicon Mcp について
Sensitive Lexicon Mcpは、Sensitive-lexiconの語彙データを使って敏感語を検出・フィルタリングするMCPサーバーです。LLMのコンテンツ確認やテキスト処理向けで、分類別の処理とGitHubからの語彙更新に対応します。
主な機能
- 01テキスト内の敏感語検出
- 02分類別の語句置換とフィルタリング
- 03利用可能な分類の一覧
- 04語彙データ内の語数確認
- 05GitHubからの語彙更新取得
活用シーン
- 01ユーザー投稿の内容確認
- 02指定分類の語句のマスキング
- 03文書やコードの一括チェック
- 04分類ごとの語数確認
MCP 対応
敏感語の検出とフィルタリング、分類一覧、語数確認のツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | センシティブな単語をチェックするテキスト |
| categories | array | いいえ | 任意:チェックする特定のカテゴリ(例:["political", "violence"]) |
詳細
Sensitive Lexicon MCP Server
Sensitive-lexicon のセンシティブワード辞書を基盤とする MCP(Model Context Protocol)サーバーです。LLM にセンシティブワードの検出とフィルタリング機能を提供します。
機能
- センシティブワードの検出:テキスト内のセンシティブワードを検出します
- センシティブワードのフィルタリング:テキスト内のセンシティブワードを置き換えます
- 複数の分類に対応:政治、ポルノ、暴力、広告など、さまざまなセンシティブワードの分類に対応します
- リアルタイム更新:GitHub リポジトリから最新のセンシティブワード辞書をリアルタイムで取得します
- 簡単に統合可能:標準の MCP プロトコルを採用しており、さまざまな LLM と簡単に統合できます
クイックスタート
方法 1:NPM でインストール(推奨)
# 全局安装
npm install -g sensitive-lexicon-mcp
# 或项目本地安装
npm install sensitive-lexicon-mcp
方法 2:ソースからインストール
# 克隆项目
git clone https://github.com/zephyrpersonal/sensitive-lexicon-mcp.git
cd sensitive-lexicon-mcp
# 安装依赖
npm install
# 构建项目
npm run build
統合設定
Claude Desktop
Claude Desktop の設定ファイルに追加します:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"sensitive-lexicon": {
"command": "npx",
"args": ["sensitive-lexicon-mcp"]
}
}
}
ローカルにインストールした場合:
{
"mcpServers": {
"sensitive-lexicon": {
"command": "node",
"args": ["./path/to/sensitive-lexicon-mcp/dist/index.js"]
}
}
}
Continue.dev
config.json に追加します:
{
"mcpServers": [
{
"name": "sensitive-lexicon",
"command": "npx",
"args": ["sensitive-lexicon-mcp"]
}
]
}
Cline (VSCode Extension)
VS Code の設定に追加します:
{
"cline.mcpServers": {
"sensitive-lexicon": {
"command": "npx",
"args": ["sensitive-lexicon-mcp"]
}
}
}
Zed Editor
Zed の settings.json に追加します:
{
"language_models": {
"anthropic": {
"version": "1",
"api_url": "https://api.anthropic.com",
"mcp_servers": {
"sensitive-lexicon": {
"command": "npx",
"args": ["sensitive-lexicon-mcp"]
}
}
}
}
}
Cursor IDE
Cursor の設定に追加します:
{
"mcp.servers": {
"sensitive-lexicon": {
"command": "npx",
"args": ["sensitive-lexicon-mcp"]
}
}
}
カスタム MCP クライアント
カスタム MCP クライアントを使用する場合は、次のように接続できます:
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'npx',
args: ['sensitive-lexicon-mcp']
});
const client = new Client({
name: "sensitive-lexicon-client",
version: "1.0.0"
}, {
capabilities: {}
});
await client.connect(transport);
Python MCP クライアント
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
server_params = StdioServerParameters(
command="npx",
args=["sensitive-lexicon-mcp"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化
await session.initialize()
# 调用工具
result = await session.call_tool(
"detect_sensitive_words",
{"text": "测试文本"}
)
print(result)
Docker によるデプロイ
Dockerfile を作成します:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
EXPOSE 3000
CMD ["npm", "start"]
コンテナを実行します:
docker build -t sensitive-lexicon-mcp .
docker run -p 3000:3000 sensitive-lexicon-mcp
環境変数の設定
環境変数を使って設定をカスタマイズできます:
# 设置敏感词库更新间隔(秒)
export SENSITIVE_UPDATE_INTERVAL=3600
# 设置缓存大小
export SENSITIVE_CACHE_SIZE=10000
# 启用调试日志
export DEBUG=sensitive-lexicon:*
利用可能なツール
1. detect_sensitive_words
テキスト内のセンシティブワードを検出します
パラメーター:
text(必須):検出対象のテキストcategories(任意):検出する分類の配列を指定します
例:
{
"text": "这是一段测试文本",
"categories": ["political", "violence"]
}
戻り値:
{
"isSensitive": true,
"sensitiveWordsCount": 2,
"sensitiveWords": [
{"word": "敏感词1", "category": "political"},
{"word": "敏感词2", "category": "violence"}
],
"summary": "Found 2 sensitive word(s) in the text"
}
2. filter_sensitive_words
テキスト内のセンシティブワードをフィルタリングします
パラメーター:
text(必須):フィルタリング対象のテキストreplacement(任意):置換文字列。デフォルトは "***" ですcategories(任意):フィルタリングする分類の配列を指定します
例:
{
"text": "这是一段测试文本",
"replacement": "[已屏蔽]",
"categories": ["political"]
}
戻り値:
{
"originalText": "这是一段测试文本",
"filteredText": "这是一段[已屏蔽]文本",
"isSensitive": true,
"sensitiveWordsFound": 1,
"sensitiveWords": [
{"word": "测试", "category": "political"}
]
}
3. get_categories
利用可能なセンシティブワードの分類一覧を取得します
戻り値:
{
"categories": [
"covid19", "gfw", "other", "subversive",
"advertisement", "political", "violence",
"livelihood", "weapons", "pornography-type",
"pornography", "supplementary", "corruption",
"tencent", "illegal-urls"
],
"totalCategories": 15
}
4. get_word_count
センシティブワード辞書に登録されている語数を取得します
パラメーター:
category(任意):分類名を指定します
例:
{
"category": "political"
}
戻り値:
{
"category": "political",
"wordCount": 1500
}
使用例
Claude Desktop での使用
設定が完了すると、Claude Desktop で直接使用できます:
请帮我检测这段文本是否包含敏感词:"这是一段需要检测的文本内容"
请帮我过滤这段文本中的敏感词,并用[已屏蔽]替换:"这是一段需要过滤的文本内容"
Continue.dev での使用
コードのコメントやドキュメント内のセンシティブワードを検出します:
// 检查这个变量名是否包含敏感词
@sensitive-check 检测这个函数名:getUserPoliticalInfo
プログラムへの統合
// Node.js 示例
const { spawn } = require('child_process');
function detectSensitiveWords(text) {
return new Promise((resolve, reject) => {
const child = spawn('npx', ['sensitive-lexicon-mcp']);
child.stdin.write(JSON.stringify({
method: 'tools/call',
params: {
name: 'detect_sensitive_words',
arguments: { text }
}
}));
child.stdout.on('data', (data) => {
resolve(JSON.parse(data));
});
child.stderr.on('data', (data) => {
reject(new Error(data.toString()));
});
});
}
一括処理の例
# Python 批量处理示例
import asyncio
import json
from mcp.client.stdio import stdio_client
async def batch_check_content(texts):
server_params = StdioServerParameters(
command="npx",
args=["sensitive-lexicon-mcp"]
)
results = []
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
for text in texts:
result = await session.call_tool(
"detect_sensitive_words",
{"text": text}
)
results.append({
"text": text,
"result": result
})
return results
# 使用示例
texts = ["文本1", "文本2", "文本3"]
results = asyncio.run(batch_check_content(texts))
for item in results:
print(f"文本: {item['text']}")
print(f"结果: {item['result']}")
センシティブワードの分類
以下のセンシティブワードの分類に対応しています:
covid19:COVID-19 関連gfw:GFW 補足辞書other:その他の辞書subversive:反体制関連の辞書advertisement:広告関連political:政治関連violence:暴力・テロ関連の辞書livelihood:生活関連の辞書weapons:銃器・爆発物関連pornography-type:ポルノ関連pornography:ポルノ辞書supplementary:補足辞書corruption:汚職関連の辞書tencent:Tencent 関連illegal-urls:違法 URL
開発
# 开发模式运行
npm run dev
# 类型检查
npm run type-check
# 构建
npm run build
技術スタック
- TypeScript
- Node.js
- Model Context Protocol(MCP)SDK
- Sensitive-lexicon センシティブワード辞書
ライセンス
MIT License
免責事項
本プロジェクトは、学習および研究のみを目的としています。使用にあたっては、現地の法令およびプラットフォームのポリシーを遵守してください。センシティブワードの定義は業務上の状況によって異なる場合があります。具体的なニーズに応じて調整してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。