mcp-maigret
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-maigretsearch for username 'johndoe' across social networks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-maigret is an MCP server that lets AI agents run maigret, the OSINT tool that checks a username across thousands of sites. Ask your agent to find where a handle is registered, or to analyze a profile URL, and get a saved report back. Maigret runs in Docker, so there is nothing to install besides Docker and Node.
Use this for legitimate, authorized OSINT research on publicly available information. Follow the law and each site's terms of service, and respect people's privacy. Some sites rate-limit or block automated lookups.
Highlights
Username search across hundreds to thousands of sites, filterable by tag (
photo,dating,us, ...).URL analysis. Hand it a profile URL and maigret extracts what it can and looks for linked usernames.
Six report formats (
txt,html,csv,json,xmind,pdf), saved to a directory you choose. See which ones work today.Hardened inputs. Strict validation and
execFilewith argument arrays. No shell is ever involved. See Security.Docker-based. The maigret image is pulled on first use, so every machine runs the same maigret.
Related MCP server: Maigret MCP Server
How it works
flowchart LR
A["AI agent<br/>(Claude Desktop, Claude Code, any MCP client)"] -->|"MCP over stdio"| S["mcp-maigret"]
S -->|"validate input,<br/>execFile docker run"| D["soxoj/maigret<br/>(Docker)"]
D -->|"checks sites"| W(("Public<br/>websites"))
D -->|"writes report"| R[("MAIGRET_REPORTS_DIR")]
S -->|"report path + scan output"| AQuickstart
Requirements: Node.js 18 or newer, plus either Docker installed and running, or maigret installed locally (pipx install 'maigret[pdf]'). MAIGRET_RUNNER chooses docker, local or auto (default: local if maigret is on PATH, else Docker); see Connect a client. Developed and tested on macOS. Linux and Windows (Docker Desktop) should work but are untested.
1. Pick a reports directory. The server saves reports here. It is created if missing. The variable is required.
export MAIGRET_REPORTS_DIR="$HOME/maigret-reports"2. Add the server to your client.
claude mcp add maigret -e MAIGRET_REPORTS_DIR="$HOME/maigret-reports" -- npx -y mcp-maigretEdit the config file (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json), then restart Claude Desktop:
{
"mcpServers": {
"maigret": {
"command": "npx",
"args": ["-y", "mcp-maigret"],
"env": { "MAIGRET_REPORTS_DIR": "/absolute/path/to/maigret-reports" }
}
}
}git clone https://github.com/w0h1v/mcp-maigret && cd mcp-maigret
npm install && npm run buildThen point your client at node /absolute/path/to/mcp-maigret/build/index.js with the same MAIGRET_REPORTS_DIR variable.
3. Try it. Ask your agent: "Use maigret to check where the username octocat is registered, filtered to the coding tag."
The first search pulls the maigret image (about 800 MB), so it takes longer.
Tools
search_username
Search for a username across social networks and sites.
Parameter | Type | Default | Description |
| string, required | Letters, digits, | |
| enum |
|
|
| boolean |
| Check all sites in maigret's database instead of the top 500 |
| string[] | none | Only check sites with these tags. Letters, digits, |
{ "username": "octocat", "format": "html", "tags": ["coding"] }The result contains the path of the saved report and maigret's console output. If the report file was not produced, the result says so instead of reporting success.
parse_url
Parse a URL to extract information and search for associated usernames.
Parameter | Type | Default | Description |
| string, required | An | |
| enum |
| Same options as above |
{ "url": "https://github.com/octocat" }Results come back as maigret's scan output text.
Output formats
Reports are written to MAIGRET_REPORTS_DIR. Maigret picks the file names, and for some formats it adds a suffix. When maigret finds related usernames it can write extra reports next to the main one (for example report_octocatsup.txt).
Format | File written by | Status |
|
| Works. Default. |
|
| Works |
|
| Works |
|
| Works |
|
| Works |
|
| Works with a local maigret installed with the |
Statuses were checked against maigret 0.6.6 (image soxoj/maigret:latest, October 2026). Maigret's command line changes between releases, so this can drift.
Security
Usernames, URLs and tags come from an AI agent and are treated as untrusted.
Validation. Usernames allow only
[A-Za-z0-9_.-](max 100 characters). Tags allow only[A-Za-z0-9_-](max 50). URLs must parse ashttporhttpsand may not contain shell metacharacters.No shell. Docker is launched with
execFileand an argument array, never a concatenated command string.Contained writes. Reports are written by the container into the single directory you mount. The server does not read or write elsewhere.
What this does not cover: the server runs Docker on your machine on your agent's behalf, and it makes network requests to many third-party sites from your IP address. Run it only for agents and clients you trust.
Found a vulnerability? Report it privately. See SECURITY.md.
Troubleshooting
Message | Fix |
| Install Docker and start the daemon. Check with |
| Add the variable to your client's |
| Check the path and that your user can write to it. Use an absolute path without a trailing slash. |
| Input failed validation. Use only the characters listed under Tools. |
| The chosen format isn't available in the image (see formats). Try |
| Read the Docker output included in the message. Often a network problem or a changed maigret option. |
Searches seem slow | The first run pulls the image. Narrow the search with |
More in the docs.
Contributing
Contributions are welcome. Start with CONTRIBUTING.md.
Questions and help: SUPPORT
Security reports: SECURITY.md (private advisories, never public issues)
License
MIT. Independent project, not affiliated with the maigret project. Maigret is by soxoj and has its own license.
Available Tools
2 toolsparse_urlC
Parse a URL to extract information and search for associated usernames
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to parse and analyze | |
| format | No | Output format | txt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It does not state whether this is a read-only operation, whether it fetches network content, whether authentication is required, or what side effects the username search may have.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundant text. Its brevity is appropriate, though the phrase 'extract information' is under-specified rather than wastefully verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This tool has two parameters, no annotations, and no output schema, so the description needs to explain more about behavior and scope. It omits what information is extracted, what the username search returns, and how the output format choice affects results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains both the URL and output format parameters. The description does not add any details about URL formats, supported schemes, or how the format enum affects behavior, so it remains at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource, 'Parse a URL,' but qualifies it with the vague phrase 'extract information' without saying what information. It also mentions searching for associated usernames, which blurs the boundary with the sibling search_username tool rather than clearly distinguishing this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use parse_url versus search_username or when not to use it. The phrase about searching for associated usernames hints at overlapping use cases but does not resolve which tool should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usernameB
Search for a username across social networks and sites
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter sites by tags (e.g. photo, dating, us) | |
| format | No | Output format | txt |
| username | Yes | Username to search for | |
| use_all_sites | No | Use all available sites instead of top 500 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden and does not meet it. It never says the tool scans hundreds of sites (a slow, network-heavy operation), that output is written as a report file whose type is chosen by the format parameter, or anything about reliability or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no filler, so nothing is wasted. However, for a tool with four parameters and file-generation behavior, this level of terseness is arguably under-sized rather than optimally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the only place an agent could learn what calling this actually produces. It omits that results arrive as a formatted report artifact and says nothing about scope or duration, leaving a meaningful gap for a multi-parameter search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters including the tags and format enums are already documented in the schema. The description adds no extra meaning beyond that, which makes the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Search for a username') plus scope ('across social networks and sites'), which is materially clearer than the bare name. It does not distinguish itself from the only sibling, parse_url, though those two tools are different enough in kind that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer it should call this when it has a username to trace. There is no guidance on when not to use it, no mention of cost/time tradeoffs for the use_all_sites toggle, and no explanation of when tag filtering is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.20- First observed
parse_url - First observed
search_username
TDQS
Scored across 2 tools
The two tools have distinct primary inputs: a username versus a URL. However, parse_url also searches for associated usernames, creating some overlap with search_username that could cause an agent to hesitate when starting from a URL.
Both tools use a clean, consistent snake_case verb_noun pattern: search_username and parse_url. The convention is predictable and easy to scan.
Two tools is thin for an OSINT username/URL search server, though it may reflect a narrow wrapper around Maigret. It is borderline rather than clearly mismatched.
The surface covers basic username searching and URL parsing, but lacks obvious supporting operations such as listing supported sites, retrieving structured results, or exporting reports. Agents may hit dead ends when they need more than a raw search.
Maintenance
Related MCP Connectors
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Search 70,510 indexed MCP servers, install-risk scoring and Ed25519-signed Agent Trust Cards.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server to perform various OSINT tasks by leveraging common network reconnaissance tools.48-
- AlicenseNot gradedqualityDmaintenanceEnables OSINT research by searching usernames across hundreds of social networks and websites, and analyzing URLs to extract information and find associated usernames using the Maigret tool.547 npmMIT
- AlicenseDqualityDmaintenanceA comprehensive MCP server providing tools for IP, domain, email, and image-based open-source intelligence. It integrates services like Shodan, VirusTotal, and HaveIBeenPwned to facilitate advanced security research and data gathering.5640 npmISC
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server that exposes multiple OSINT tools to AI assistants like Claude, enabling sophisticated reconnaissance and information gathering tasks using industry-standard OSINT tools.247MIT