ipdata MCP by usefulapi
Look up location, network, company and threat data for IP addresses and ASNs in ipdata.
作者による説明(英語の原文)
Local MCP proxy: collapses N servers' tools into 4 meta-tools and compresses large tool outputs.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"context-firewall": {
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}ターミナルでこれを実行します
claude mcp add context-firewall -- npx -y context-firewall --config your-valueこのサーバーは起動コマンドに値を入れる必要があるので、設定をコピーして入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"context-firewall": {
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
このサーバーは起動コマンドに値を入れる必要があるので、設定をコピーして入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"context-firewall": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"context-firewall",
"--config",
"your-value"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Alepha188838884 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:ipdata MCP by usefulapi, MaxMind minFraud MCP by usefulapi, Lambda Labs MCP by usefulapi
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Look up location, network, company and threat data for IP addresses and ASNs in ipdata.
MCP server for MaxMind minFraud — score transactions for fraud risk from your AI assistant.
Read GPU instances, types, images, filesystems and firewall rules; launch and terminate instances.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
中文文档
Shrink large MCP tool outputs by 60–95% before they reach your model's context window — and collapse 50+ tool definitions into 4. Real HTML/JSON, measured — see benchmarks. Works with any MCP client, any model. Anything still over your configured token budget after compression is hard-truncated to that budget, with the full original always retrievable via read_more.
*The session report printed on shutdown — this one from a real 3-call session (two large file reads, one echo). Every number measured, none simulated.*
Context Firewall is a local MCP proxy that sits between your AI agent (Claude Code, Claude Desktop, Cursor, Cline, ...) and every downstream MCP server you've configured. Large tool outputs (raw HTML, base64 blobs, giant JSON) are compressed before they ever reach the model's context window, and the client sees exactly 4 tools no matter how many the downstream servers actually have.
| Metric | Result |
|---|---|
| Output compression | 70–94% on real HTML pages, ~97% on large structured JSON (smart stages alone, before budget truncation) — e.g. a live Wikipedia page via the fetch tool: 232,391 → 6,907 chars (97.0%, measured); a GitHub issues JSON payload via the jsonSummary stage: 186,810 → 3,480 chars (98.1%, measured) |
| Tool collapse | 122 → 4 exposed meta-tools (5 real downstream servers incl. official GitHub github-mcp-server, 85 tools) |
| Tool-definition savings | ~28,600 tokens *(estimated, chars ÷ 3.5)* — 102,158 raw definition chars vs. 2,146 exposed |
All figures measured against real downstream MCP servers, not synthetic data — full methodology and tables in docs/BENCHMARKS.md.
list_tool_categories, search_tools, invoke_tool, read_more) and only pays the token cost of a tool's full schema when it actually searches for it.read_more(handle, offset, length).npx context-firewall --config context-firewall.json
Minimal context-firewall.json (the downstreams block mirrors the mcpServers format you already know):
{
"downstreams": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"] }, "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } } } }
(${GITHUB_TOKEN} above is just this example's environment variable *name* — pick whatever's already set in your shell; it gets expanded into GITHUB_PERSONAL_ACCESS_TOKEN, the env var name the downstream server itself actually reads.)
Which GitHub server? Two options, different tool counts:
npx -y line, zero extra setup. Archived/no longer maintained upstream, but still functional.GITHUB_TOOLSETS=all). Ships as a Go binary or Docker image, not an npm package: "github": {
"command": "docker", "args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } }
or, running a locally-built/downloaded binary directly: "command": "/path/to/github-mcp-server", "args": ["stdio"] (same env block; add GITHUB_TOOLSETS to scope which of the 85 tools are exposed).
Per-tool allow/deny policy. Add allowTools/denyTools (array of exact names or * globs) to any downstream entry to restrict which of its tools can be invoked:
"github": {
"command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "denyTools": ["delete_*"] }
Deny always wins over allow. When allowTools is set, only matching tools are permitted; everything else on that server is blocked. An empty allowTools: [] is treated the same as omitting it (allow everything), not "deny everything". Blocked tools are hidden from search_tools results, and invoke_tool rejects them before dispatching to the downstream server. Tool counts in list_tool_categories and in the meta-tool descriptions are unfiltered totals — the policy is only enforced at search_tools/invoke_tool time.
Set Context Firewall as your only MCP server — move every downstream server you currently configure directly (filesystem, github, everything, ...) into context-firewall.json's downstreams block instead. Your agent then sees 4 tools instead of the sum of every downstream server's tool count; pointing the client at Context Firewall *alongside* your existing servers doesn't give you the tool-collapse or compression benefit.
Each client below takes the same server entry:
{
"mcpServers": { "context-firewall": { "command": "npx", "args": ["-y", "context-firewall", "--config", "/absolute/path/to/context-firewall.json"] } } }
Project-scoped .mcp.json in your repo root (shown above), or via the CLI:
claude mcp add --transport stdio context-firewall -- npx -y context-firewall --config /absolute/path/to/context-firewall.json
claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json) — same mcpServers block as above.
.cursor/mcp.json (project-scoped) or ~/.cursor/mcp.json (global) — same mcpServers block as above.
cline_mcp_settings.json (VS Code extension storage; macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json) — same mcpServers block as above.
| Client | Status |
|---|---|
| Claude Code | tested in real agent sessions — autonomous list → search → invoke → read_more workflow verified end-to-end |
| Claude Desktop | protocol-verified* |
| Cursor | config format documented, community testing welcome |
| Cline | config format documented, community testing welcome |
\* Verified via MCP protocol integration tests (236 automated tests, including full stdio protocol round-trips against real downstream servers, run in CI on every push). Real-client reports welcome.
downstreamsEach entry is either a stdio server (same shape as mcpServers) or a Streamable HTTP server:
{
"downstreams": { "local-tool": { "command": "npx", "args": ["-y", "some-mcp-server"], "env": { "TOKEN": "${TOKEN}" } }, "remote-tool": { "url": "https://mcp.example.com/mcp", "transport": "streamable-http" } } }
${VAR_NAME} in any string value is expanded from the environment; a missing variable fails config load with a readable error.
compressionPolicy resolution order is default < perServer < perTool (later overrides earlier, field by field):
{
"compression": { "default": { "maxOutputTokens": 2000, "htmlToMarkdown": true, "stripBase64": true, "jsonSummary": true, "llmSummary": false, "bypass": false }, "perServer": { "github": { "maxOutputTokens": 4000 } }, "perTool": { "filesystem/read_file": { "maxOutputTokens": 8000 } } } }
| Field | Type | Default | Meaning |
|---|---|---|---|
maxOutputTokens | number | 2000 | Soft budget (chars ≈ tokens × 3.5) a compressed output is truncated to as a last resort. |
htmlToMarkdown | boolean | true | Convert detected HTML to Markdown, extracting the main content region (nav/header/footer chrome stripped) when one is recognizable. |
stripBase64 | boolean | true | Replace base64 blobs (data URIs and bare blocks) with a read_more handle. |
jsonSummary | boolean | true | Collapse homogeneous JSON arrays and trim long string fields, keeping valid JSON. |
llmSummary | boolean | false | Semantically summarize over-budget outputs with an LLM of your choice. Requires the top-level llm block - see LLM summarization (opt-in). |
bypass | boolean | false | Skip the whole pipeline for this server/tool - output passes through untouched. |
report{
"report": { "enabled": true, "markdownPath": "./context-firewall-report.md" } }
| Field | Type | Default | Meaning |
|---|---|---|---|
enabled | boolean | true | Print the session report to stderr on shutdown. |
markdownPath | string | *(none)* | If set, also write the report as a Markdown file at this path. |
callToolTimeoutMsTop-level (not nested under compression). Per-invoke_tool timeout in milliseconds passed to the downstream MCP SDK client; a downstream that hangs without responding causes invoke_tool to return an isError result once this elapses, instead of blocking. Defaults to the SDK's own default (60,000ms) when unset.
{ "callToolTimeoutMs": 30000 }
The client calls list_tool_categories() to see what's connected and what it's roughly capable of, search_tools(query) to pull the full input schema for candidate tools, invoke_tool(server, tool, args) to actually run one (compressed on the way back), and read_more(handle, offset, length) to page through anything that got compressed. Compression, when it runs, always applies in the same order: strip base64 → main-content extraction + HTML to Markdown → JSON structure summary → truncate to budget (if the opt-in LLM summarization stage below is enabled, it runs right before truncation). Content extraction is conservative by design: it only strips chrome when a semantic content region ( / ) is recognizable or the removal clearly isn't the page's actual content, and falls back to whole
冒頭だけを表示しています。続きはリポジトリで読めます