flru-mcp
Click on "Install 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., "@flru-mcpfind relevant projects for a Python developer"
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.
flru-mcp
Local MCP server for working with the FL.ru freelance marketplace. It lets Codex or another MCP client browse projects, inspect details, score relevance, keep local history, save proposal drafts, and preview proposal submission in dry-run mode.
The server is intentionally not an autonomous proposal bot. Sending proposals is a separate tool and defaults to dry-run.
Requirements
Python 3.12+
uvChromium for Playwright
FL.ru account for authenticated features
Related MCP server: kwork-mcp
Installation
uv sync --extra dev
uv run playwright install chromiumCopy .env.example to .env and fill only local secrets there:
cp .env.example .envImportant defaults:
FLRU_DRY_RUN=trueFLRU_BROWSER_PROFILE=./data/browser-profileFLRU_STORAGE_STATE=./data/storage_state.jsonFLRU_DATABASE=./data/flru_mcp.sqlite3FLRU_EXPERTISE_PROFILE=./config/expertise.yml
First Authentication
FL.ru login currently shows Yandex SmartCaptcha. The server does not bypass it.
Run the MCP tool flru_login from a client, or run the server and call the tool with:
{ "headless": false }Playwright opens FL.ru login. Complete login and any CAPTCHA/2FA manually. The resulting browser storage state is saved under data/.
Launch MCP Server
uv run flru-mcpCodex MCP configuration example:
{
"mcpServers": {
"flru": {
"command": "uv",
"args": ["run", "flru-mcp"],
"cwd": "/home/stepanov-sv/projects/fl.ru",
"env": {
"FLRU_DRY_RUN": "true"
}
}
}
}Tools
flru_auth_statusflru_loginflru_list_projectsflru_search_projectsflru_get_projectflru_find_relevant_projectsflru_mark_project_seenflru_get_unseen_projectsflru_get_project_historyflru_get_proposal_contextflru_save_proposal_draftflru_get_proposal_draftflru_submit_proposalflru_get_customerflru_list_conversationsflru_get_conversationflru_send_message
Message tools currently return NOT_IMPLEMENTED until authenticated message endpoints are verified.
Dry-Run Workflow
1. flru_find_relevant_projects
2. flru_get_project for selected candidates
3. Client drafts a proposal from source data
4. flru_save_proposal_draft
5. flru_submit_proposal returns a preview because FLRU_DRY_RUN=trueNo FL.ru modification is made in dry-run.
Real Submission Workflow
Real submission is intentionally not enabled yet because the authenticated freelancer proposal form was not verified during public-page research. With FLRU_DRY_RUN=false, flru_submit_proposal still performs auth, project, duplicate, closed-project, and form checks, then returns REAL_SUBMISSION_NOT_ENABLED_FOR_UNVERIFIED_FORM unless a verified proposal form is parsed.
Before enabling real submission, inspect the authenticated form with Playwright, document fields in docs/flru-research.md, add fixtures/tests, and verify success from the project page after submit. Never retry ambiguous POSTs automatically.
Debugging
Set:
FLRU_HEADLESS=false
FLRU_DEBUG=trueBrowser failure screenshots and HTML snapshots are stored under data/debug/.
Local Scanner
uv run flru-scanThe scanner discovers and scores projects into SQLite. It never submits proposals.
Tests
uv run pytestCurrent tests cover parsers, budgets, project detail extraction, relevance scoring, SQLite history/drafts, dry-run submission, and duplicate prevention.
Known FL.ru Limitations
Public project pages are server-rendered and parseable over HTTP.
Login includes SmartCaptcha, so authentication is manual through Playwright.
FL.ru uses DDoS-Guard; crawling is sequential with respectful delays.
Authenticated proposal and message forms were not verified from public research, so real sending is disabled.
CSS selectors are isolated in parser functions and documented in
docs/flru-research.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceMCP server for Freelo project management API, enabling task and project management through natural language.3410MIT
- AlicenseAqualityBmaintenanceMCP server that exposes 25 tools for the Kwork freelance marketplace — browse projects, submit offers, manage orders, send messages, and more.283MIT
- AlicenseBqualityCmaintenanceLightweight MCP server for 1C.ai integration, enabling queries, code analysis, and documentation search via natural language.82AGPL 3.0
- Flicense-qualityFmaintenanceMCP server for the Upwork GraphQL API enabling job search, contract management, proposal drafting, and other Upwork automation tasks via natural language.
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for Google search results via SERP API
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/creator137/marketplace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server