Stepstone
About
Fetches job listings from Stepstone.de based on keywords and location parameters.
Details
- Author
- kdkiss
- Categories
- Web Scraping, Search
Jump to
Setup
Install Stepstone in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/kdkiss/mcp-stepstone
Follow the installation instructions in the repository README, then restart your MCP client.
AnModel Context Protocol (MCP)server that lets MCP-compatible clients search the German job portalStepstone.de. The service exposes a pair of tools for running multi-term job searches and fetching rich job details so assistants such as Claude Desktop or Smithery can surface up-to-date vacancies.
- Key Features
- Quick Start
- Configuration
- Usage
- Architecture Overview
- Local Development
- Testing
- Troubleshooting
- Contributing
- Support
- Version History
- License
- πMulti-term Searchβ Concurrently queries Stepstone for every search phrase you supply and deduplicates duplicate postings.
- πLocation Targetingβ Supports German postal codes with a configurable radius (1β100 km) for regional searches.
- π§ Session-aware Follow-upsβ Saves results for one hour so you can request full job details later viaget_job_details.
- π‘οΈRobust Validationβ Defensive parameter validation, logging, and graceful error messages for malformed requests.
- π³Container & CLI Friendlyβ Works as a plain Python process or inside Docker; integrates cleanly with Smithery and Claude Desktop.
βΉοΈNote:A Redis cache and other scaling features are mentioned as future enhancements. They are not enabled in the current release.
- Python 3.8+
- pip
- Internet access to reach Stepstone.de when running real searches
npx -y @smithery/cli install @kdkiss/mcp-stepstone --client claude
# Clone the repository git clone https://github.com/kdkiss/mcp-stepstone.git cd mcp-stepstone # Install runtime dependencies pip install -r requirements.txt # (Optional) make the server script executable on Unix-like systems chmod +x stepstone_server.py
# Build the image docker build -t mcp-stepstone . # Run the container docker run -it --rm mcp-stepstone
{ "mcpServers": { "stepstone-job-search": { "command": "python", "args": ["/path/to/stepstone_server.py"], "description": "Search for job listings on Stepstone.de", "env": { "LOG_LEVEL": "INFO", "REQUEST_TIMEOUT": "10" } } } }
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%/Claude/claude_desktop_config.json
{ "mcpServers": { "stepstone-job-search": { "command": "python", "args": ["/absolute/path/to/stepstone_server.py"], "env": { "LOG_LEVEL": "DEBUG", "USER_AGENT": "MCP-Stepstone-Bot/1.0" } } } }
Runs one or more keyword searches against Stepstone.
- search_terms(array of strings, optional)β Search phrases to query. Defaults to["fraud", "betrug", "compliance"].
- zip_code(string, optional)β German 5-digit postal code. Defaults to"40210"(DΓΌsseldorf).
- radius(integer, optional)β Radius in kilometres around the postal code. Defaults to5; must be between 1 and 100.
Fetches one stored job and enriches it with full description and metadata.
- job_index(integer, optional)β 1-based index into the most recent sessionβs results.
- job_query(string, optional)β Fuzzy match against stored jobs. Aliasqueryis also accepted.
- session_id(string, optional)β Explicit session identifier (auto-selects the most recent active session when omitted).
β οΈ Provide eitherjob_indexorjob_query. Supplying both prioritisesjob_index.
// Basic search { "tool": "search_jobs", "parameters": { "search_terms": ["software engineer", "developer"] } } // Location constrained search { "tool": "search_jobs", "parameters": { "search_terms": ["marketing manager", "digital marketing"], "zip_code": "10115", "radius": 15 } } // Fetch job details by index { "tool": "get_job_details", "parameters": { "job_index": 1 } } // Fetch job details by query string { "tool": "get_job_details", "parameters": { "job_query": "AML Specialist", "session_id": "550e8400-e29b-41d4-a716-446655440000" } }
Job Search Summary: Search Terms: fraud analyst, compliance officer Location: 60329 (Β±25km) Total Jobs Found: 23 Session ID: 550e8400-e29b-41d4-a716-446655440000 --- Results for 'fraud analyst' --- 1. Senior Fraud Analyst - Digital Banking Company: Deutsche Bank AG Description: Join our fraud prevention team to analyze transaction patterns... Link: https://www.stepstone.de/stellenangebote--Senior-Fraud-Analyst-Frankfurt-Deutsche-Bank-AG--1234567
π Job Details: Senior Fraud Analyst - Digital Banking π’ Company: Deutsche Bank AG π Location: Frankfurt am Main π° Salary: β¬65,000 - β¬85,000 per year β° Employment Type: Full-time, Permanent π Description: Join our fraud prevention team to analyze transaction patterns and develop detection algorithms... β
Requirements: β’ Bachelor's degree in Computer Science, Finance, or related field β’ 3+ years experience in fraud detection or financial crime prevention β’ Strong analytical skills with SQL, Python, or R β’ Knowledge of AML regulations and compliance frameworks
ββββββββββββββββββββββ βββββββββββββββββββββββ βββββββββββββββββββββ β MCP Client β βββΆ β MCP Stepstone β βββΆ β Stepstone.de β β (Claude/Smithery) β β Server β β Job Portal β ββββββββββββββββββββββ βββββββββββββββββββββββ βββββββββββββββββββββ β βββββββββββββββββββββββ β Job Scraper β β - URL Builder β β - HTML Parser β β - Data Cleaner β βββββββββββββββββββββββ
- Requestβ MCP client sends tool invocation.
- Validationβ Inputs validated (terms, postal code, radius).
- Searchβ URLs constructed and fetched concurrently.
- Processingβ HTML parsed and normalised job entries produced.
- Sessioningβ Results stored in memory for one hour for follow-up queries.
- Responseβ Textual summary returned to the MCP client.
- Detailsβget_job_detailsfetches the original job page and extracts specifics.
- StepstoneJobScraperβ Builds search URLs, fetches and parses job listings.
- JobDetailParserβ Scrapes detailed job pages for salary, requirements, etc.
- SessionManagerβ Stores search sessions, supports lookup by index or fuzzy match.
- stepstone_server.pyβ Registers MCP tools/resources and handles tool invocations.
# Clone repository git clone https://github.com/kdkiss/mcp-stepstone.git cd mcp-stepstone # Create & activate a virtual environment python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Install dev tooling pip install pytest pytest-asyncio black flake8 # Run formatter and linter black stepstone_server.py flake8 stepstone_server.py
A lightweight HTTP server is included to serve bundled HTML fixtures. Start it when adjusting selectors or parsers:
Visithttp://127.0.0.1:5000to inspect the mocked Stepstone pages used in tests.
Some hosted MCP environments (such as Smithery) require an HTTP endpoint with liberal CORS headers instead of the default STDIO transport. The project ships a small Starlette-based adapter that exposes the existing server over the streamable HTTP protocol:
The server listens on0.0.0.0:8000by default and responds to preflight requests withAccess-Control-Allow-Origin: . Adjust theHOSTandPORTenvironment variables when deploying to platforms that mandate specific interfaces or ports.
The test suite uses mocked network responses to avoid contacting Stepstone.de.
pip install -r requirements.txt pytest pytest
To validate specific tool flows interactively, you can runstepstone_server.pydirectly or callhandle_call_toolfrom a Python shell.
python --version # Expect 3.8+ pip list | grep -E "(requests|beautifulsoup4|mcp)" ls -la stepstone_server.py # Confirm execute permissions when running directly
- Verify the postal code is a valid five-digit German PLZ.
- Increaseradiusor broadensearch_terms.
- Confirm internet connectivity.
- Stepstone layout changes may require updating selectorsβuse the debug server to compare fixtures.
pip install -r requirements.txt pip install --upgrade pip
export LOG_LEVEL=DEBUG python stepstone_server.py
Logs are emitted to stdout; integrate with your own logging infrastructure if desired.
Smithery Scanner Cannot Initialize Connection
If the Smithery CLI reports repeatedHTTP error: This operation was abortedorMcpError: MCP error -32001: Request timed outmessages while scanning the server, the MCP process started successfully but the JSON-RPC handshake failed. Typical causes and remedies:
- CORS headers missingβ Ensure your HTTP transport returns permissive CORS headers:
res.setHeader("Access-Control-Allow-Origin", ""); res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); res.setHeader("Access-Control-Allow-Headers", "Content-Type");
{ "mcpServers": { "stepstone-job-search": { "type": "streamable-http", "url": "http://localhost:3000/mcp", "initTimeout": 30000, "timeout": 60000 } } }
When debugging, start the server manually vianpx -y @smithery/cli serveto observe whether it exits early or logs binding issues.
- Fork the repository and create a feature branch:git checkout -b feature/my-change.
- Implement your changes and add tests.
- Runpytestand lint/format the code (black,flake8).
- Open a pull request describing the change.
- Follow PEP 8 and include type hints where practical.
- Document public functions with docstrings.
- Handle network and parsing errors defensively.
- π Consult this README for configuration and usage tips.
- π§ͺ Use the debug server to inspect fixture HTML when selectors break.
- π File bugs or feature requests via GitHub Issues.
- π¬ Join the projectβs Discord community (link forthcoming).
- Addedget_job_detailstool for follow-up queries.
- Introduced session management with one-hour TTL.
- Enhanced detail parsing for salary, requirements, and benefits.
- Summaries now include session IDs for easy follow-up.
- Expanded documentation and usage examples.
- Added Docker support and environment variable configuration.
- Improved error handling and validation.
- Initial release with multi-term job search and MCP compliance.
Adds powerful web scraping and search capabilities to LLM clients like Cursor and Claude.
Official OpenWeb Ninja MCP server connecting any AI agent to 40+ web data APIs for web search, e-commerce, local business, jobs, real estate, and finance data.
Integrate real-time Scrapeless Google SERP(Google Search, Google Flight, Google Map, Google Jobs....) results into your LLM applications. This server enables dynamic context retrieval for AI workflows, chatbots, and research tools.
Unified MCP server giving any AI agent access to 20+ social platforms, web search, scraping, and crypto data β one install, any MCP client.
MCP server for Al Jazeera 360 β Connect AI assistants to Al Jazeera's streaming catalog. Search, browse, and retrieve Arabic video content with direct watch links.
Scrapes and searches for products on Amazon.
An MCP server that connects AI agents to Amazon product, search, and review data across 20 marketplaces via the ChocoData Amazon Scraper API.
Interact with the Bilibili video website, enabling actions like searching for videos, retrieving video information, and accessing user data.
A Model Context Protocol (MCP) service that indexes and queries car-deal contexts - fast, flexible search for vehicle listings and marketplace data.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


