Skip to main content

secretcv-mcp 🇹🇷

mcp-name: io.github.mohammad-abbasi-sh/secretcv-mcp

Unofficial read-only MCP server for secretcv.com, Türkiye's job board — keyword/city job search (~18,000 live listings), full job details from schema.org JobPosting data (title, company, city, date posted, employment type, salary when disclosed, description + qualifications), sector list and city list.

Built by Mohammad Abbasi as part of the "Turkey MCP factory" (Sepehr-style pipeline). Not affiliated with secretcv.com.

For AI agents

Add to your MCP client config (stdio):

{
  "mcpServers": {
    "secretcv": {
      "command": "uvx",
      "args": ["secretcv-mcp"]
    }
  }
}

Or run locally: python -m secretcv_mcp.server (needs mcp<2, curl-cffi).

Tools

Tool Description
secretcv_search_jobs Search jobs by keyword and/or city — query ("barista", "garson", "şoför"), city ("İstanbul", "Ankara", "İzmir"; "İstanbul Anadolu" / "İstanbul Avrupa" are separate regions); returns the total matching-job count + jobs (title, company, city, district, relative post date, job URL). First results page only (20 jobs)
secretcv_latest_jobs Newest listings on secretcv.com (limit 1..20); returns the total live-job count + jobs
secretcv_get_job Full detail for one job — job_url (as returned by the search/latest tools); returns title, company (+ company page URL), city/region, date posted, employment type, salary in TRY/month when disclosed, full description + qualifications
secretcv_list_sectors Job sectors (e.g. "Bankacılık / Finans", "Bilgisayar / BT / İnternet", "Çağrı Merkezi") with slug + listing URL; limit 1..50
secretcv_list_cities Turkish cities/regions with listings (81 provinces; İstanbul split into Anadolu/Avrupa) with slug + listing URL; limit 1..50

Example output (secretcv_search_jobs / "barista"):

{"query": "barista", "total": 220, "count": 2, "jobs": [
  {"title": "Barista / Tuzla - Sabancı Üniversitesi",
   "company": "Coffy", "city": "İstanbul Anadolu",
   "posted_relative": "1 gün önce",
   "url": "https://www.secretcv.com/coffy-11372/barista-tuzla-sabanci-universitesi-is-ilanlari-1884564"}, …]}

Example output (secretcv_get_job / the Coffy barista posting):

{"title": "Barista / Tuzla - Sabancı Üniversitesi", "company": "Coffy",
 "city": "İstanbul Anadolu", "date_posted": "2026-11-06T19:18:10+03:00",
 "employment_type": "Tam Zamanlı",
 "description": "Coffy hizmet deneyimiyle harmanlayarak misafirlerimize …"}

How it works

secretcv.com serves its listings fully server-rendered — no login, no API key, no session cookies. Keyword search is path-based (/is-ilanlari/<keyword>-is-ilanlari, e.g. barista → 220 jobs); city listings use /is-ilanlari/<city>-is-ilanlari (istanbul → 2,397 jobs); city + keyword uses /is-ilanlari/<city>/<keyword>-is-ilanlari. (The ?q= query form is dead — HTTP 410.) Listing pages carry 20 job cards each (title, company, city + district, relative post date) and a total count ("18.225 İş İlanı Listelendi"). Job detail pages carry a schema.org JobPosting JSON-LD block (title, description with "Genel Yetkinlikler" + "İŞ TANIMI", qualifications, datePosted, employmentType, hiringOrganization, jobLocation, baseSalary — "-" when undisclosed). The sectors index (/sektore-gore-is-ilanlari) mixes sectors with city/district links, so sector/city parsing filters on the 81-province slug set. City names are slugified (İstanbul → istanbul). Transport uses Chrome TLS impersonation (curl-cffi, chrome120); requests are spaced ~0.8s apart; everything is read-only.

Install

uvx secretcv-mcp        # run directly (needs uv)
# or
pip install secretcv-mcp
secretcv-mcp    # starts the MCP server on stdio

Tests

python -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m unittest discover -s tests -v

Offline tests run on recorded fixtures (real pages fetched 2026-11-07); live tests hit secretcv.com. 25/25 green at build time (16 offline + 9 live) plus an MCP stdio smoke test.

Roadmap

  • Second-page listings (the site has no server-side pagination links; a "load more" API would be needed)
  • Company pages (/firma/<slug>-is-ilanlari: all jobs from one employer)
  • Salary statistics per keyword/city (most postings do not disclose a salary)

License

MIT — see LICENSE.

Metadata

Release files for secretcv-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for secretcv-mcp 0.1.0
File Size Uploaded Provenance Actions
secretcv_mcp-0.1.0.tar.gz 125.4 kB With provenance Details for secretcv_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for secretcv-mcp 0.1.0
File Interpreter ABI Platform Actions
secretcv_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for secretcv_mcp-0.1.0-py3-none-any.whl

Total release size: 137.7 kB

Release files / secretcv_mcp-0.1.0.tar.gz

Download URL secretcv_mcp-0.1.0.tar.gz
Size 125.4 kB
Tags Source
SHA-256 checksum
How to use checksums
35ab01a5bef8f3fe9bd303fee07a0c7589b69d1d2f973cf05dbc3ad8c1533e23
BLAKE2b-256 checksum
How to use checksums
1d898659512f77a4bf814cd89330f44344c2f96857fbb7e24d5530fac317a429
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / secretcv_mcp-0.1.0-py3-none-any.whl

Download URL secretcv_mcp-0.1.0-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff849888e988847a6eefdc2968e16562b6d445542b4267d6d8a66fe91c32cacb
BLAKE2b-256 checksum
How to use checksums
47f8d71ace75d82f57947293e8ad5712875344db153f1da2e5f3a12e7f1a0adf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Security for secretcv-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for secretcv_mcp-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page