MCP Waifu Queue
MCP Waifu 큐
이 프로젝트는 비동기 처리를 위해 Redis 큐를 거쳐 OpenRouter API를 활용하는 대화형 AI "와이푸" 캐릭터용 MCP(Model Context Protocol) 서버를 구현합니다. 간소화된 서버 설정 및 관리를 위해 FastMCP 라이브러리를 사용합니다.
목차
Related MCP server: local-agent-context
기능
~/.model-openrouter또는openrouter/free의 모델을 사용하여 OpenRouter를 통한 텍스트 생성.동시 요청을 비동기적으로 처리하기 위한 Redis 기반 요청 큐잉.
FastMCP를 사용한 MCP 호환 API.MCP 리소스를 통한 작업 상태 추적.
환경 변수(
.env파일)를 통한 구성.API 키 로드:
OpenRouter:
OPENROUTER_API_KEY또는~/.api-openrouter
홈 디렉토리의 모델 선택 파일:
OpenRouter 모델 이름을 위한
~/.model-openrouter
아키텍처
이 프로젝트는 다음과 같은 주요 구성 요소로 이루어져 있습니다:
main.py:FastMCP애플리케이션을 초기화하고 MCP 도구/리소스를 정의하는 메인 진입점.respond.py: OpenRouter API를 사용하는 핵심 텍스트 생성 로직 포함.task_queue.py: Redis 큐(python-rq사용)와의 상호작용을 처리하고 생성 요청을 큐에 추가.utils.py: 워커가respond.py의 생성 로직을 호출하기 위해 실행하는call_predict_response와 같은 유틸리티 함수 포함.worker.py: 큐에서 작업을 가져와call_predict_response를 호출하는 Redis 워커(python-rq).config.py:pydantic-settings를 사용하여 구성을 관리.models.py: MCP 요청 및 응답 검증을 위한 Pydantic 모델 정의.
요청 흐름은 다음과 같습니다:
클라이언트가
generate_textMCP 도구(main.py에 정의됨)로 요청을 보냅니다.도구는 요청(프롬프트)을 Redis 큐(
task_queue.py에서 처리)에 추가합니다.worker.py프로세스가 큐에서 작업을 가져옵니다.워커는
call_predict_response함수(utils.py에서)를 실행합니다.call_predict_response는 OpenRouter API와 상호작용하는predict_response함수(respond.py내)를 호출합니다.생성된 텍스트(또는 오류 메시지)가
predict_response에 의해 반환되고 RQ에 의해 작업 결과로 저장됩니다.클라이언트는
job://{job_id}MCP 리소스(main.py에 정의됨)를 사용하여 작업 상태와 결과를 검색할 수 있습니다.
graph LR
subgraph Client
A[User/Client] -->|1. Send Prompt via MCP Tool| B(mcp-waifu-queue: main.py)
end
subgraph mcp-waifu-queue Server
B -->|2. Enqueue Job (prompt)| C[Redis Queue]
B -->|7. Return Job ID| A
D[RQ Worker (worker.py)] --|>| C
D -->|3. Dequeue Job & Execute| E(utils.call_predict_response)
E -->|4. Call Generation Logic| F(respond.predict_response)
F -->|5. Call OpenRouter API| G[OpenRouter API]
G -->|6. Return Response| F
F --> E
E -->|Update Job Result in Redis| C
A -->|8. Check Status via MCP Resource| B
B -->|9. Fetch Job Status/Result| C
B -->|10. Return Status/Result| A
end사전 요구 사항
Python 3.7+
pip또는uv(Python 패키지 설치 프로그램)Redis 서버 (설치 및 실행 중)
OpenRouter API 키
시스템에 Redis를 설치하는 방법은 공식 Redis 웹사이트에서 확인할 수 있습니다: https://redis.io/docs/getting-started/ OpenRouter API 키는 다음에서 얻을 수 있습니다: https://openrouter.ai/
설치
저장소 복제:
git clone <YOUR_REPOSITORY_URL> cd mcp-waifu-queueuv를 사용하여 가상 환경 생성 및 활성화:python -m uv venv .venv .venv/Scripts/python.exe -m ensurepip .venv/Scripts/python.exe -m pip install uv의존성 설치:
.venv/Scripts/python.exe -m uv pip install -r requirements.txt .venv/Scripts/python.exe -m uv pip install -r requirements-dev.txt
구성
$HOME 내 파일을 통한 모델 이름:
OpenRouter 모델 파일:
echo "openrouter/free" > ~/.model-openrouter
API 키: 환경 변수를 권장하며 파일 방식을 대체제로 사용:
OpenRouter:
OPENROUTER_API_KEY또는~/.api-openrouterGXP6
(
YOUR_API_KEY_HERE를 실제 키로 교체하세요)기타 설정:
.env.example파일을.env로 복사:cp .env.example .env.env파일을 수정하여 나머지 구성 값을 설정:MAX_NEW_TOKENS: 응답을 위한 최대 토큰 수 (기본값:2048).REDIS_URL: Redis 서버의 URL (기본값:redis://localhost:6379).FLASK_ENV,FLASK_APP: 선택 사항, 다른 곳에서 사용되는 경우 Flask와 관련이 있으며 MCP 서버/워커 작업의 핵심은 아님.
서비스 실행
Redis가 실행 중인지 확인하십시오. 로컬에 설치한 경우 Redis 서버 프로세스를 시작해야 할 수 있습니다(예:
redis-server명령 또는 서비스 관리자를 통해).RQ 워커 시작: 터미널을 열고 가상 환경을 활성화(
source .venv/bin/activate등)한 후 다음을 실행합니다:python -m mcp_waifu_queue.worker이 명령은
.env파일에 정의된 Redis 큐에서 작업을 수신할 워커 프로세스를 시작합니다. 이 터미널을 계속 실행해 두십시오.MCP 서버 시작: 다른 터미널을 열고 가상 환경을 활성화한 후
uvicorn과 같은 도구를 사용하여 MCP 서버를 실행합니다(pip install uvicorn또는uv pip install uvicorn으로 설치해야 할 수 있음):uvicorn mcp_waifu_queue.main:app --reload --port 8000 # Example port8000을 원하는 포트로 교체하십시오.--reload플래그는 개발 시 유용합니다.또는
start-services.sh스크립트(주로 Linux/macOS 환경용으로 설계됨)를 사용할 수 있습니다. 이 스크립트는 Redis(실행 중이 아닌 경우)와 워커를 백그라운드에서 시작하려고 시도합니다:# Ensure the script is executable: chmod +x ./scripts/start-services.sh ./scripts/start-services.sh # Then start the MCP server manually as shown above.
MCP API
서버는 다음과 같은 MCP 호환 엔드포인트를 제공합니다:
도구
generate_text설명: 백그라운드 큐를 통해 OpenRouter API로 텍스트 생성 요청을 보냅니다.
입력:
{"prompt": "여기에 텍스트 프롬프트 입력"}(유형:GenerateTextRequest)출력:
{"job_id": "rq:job:..."}(큐에 추가된 작업의 고유 ID)
리소스
job://{job_id}설명: 이전에 제출된 작업의 상태와 결과를 검색합니다.
URI 매개변수:
job_id(generate_text도구가 반환한 ID).출력:
{"status": "...", "result": "..."}(유형:JobStatusResponse)status: 작업의 현재 상태 (예: "queued", "started", "finished", "failed"). RQ는 내부적으로 약간 다른 용어를 사용합니다("started" 대 "processing", "finished" 대 "completed"). 리소스는 이를 매핑합니다.result: 작업 상태가 "completed"인 경우 생성된 텍스트, 그렇지 않으면null. 작업이 실패한 경우 RQ의 처리에 따라 결과가null이거나 오류 정보가 포함될 수 있습니다.
테스트
이 프로젝트에는 테스트가 포함되어 있습니다. 테스트 의존성이 설치되어 있는지 확인하십시오(pip install -e .[test] 또는 uv pip install -e .[test]).
pytest를 사용하여 테스트를 실행합니다:
pytest tests참고: 테스트는 Redis 모킹(fakeredis)과 구현 방식에 따라 OpenRouter API 호출 모킹이 필요할 수 있습니다.
문제 해결
오류:
OpenRouter API key not available:OPENROUTER_API_KEY가 설정되어 있는지, 또는~/.api-openrouter파일에 키가 한 줄로(공백 없이) 작성되어 있는지 확인하십시오.작업이 "queued" 상태에서 멈춤: RQ 워커(
python -m mcp_waifu_queue.worker)가 별도의 터미널에서 실행 중이며.env에 지정된 동일한 Redis 인스턴스에 연결되어 있는지 확인하십시오. 워커 로그에서 오류를 확인하십시오.ConnectionRefusedError (Redis): Redis 서버가 실행 중이며
.env에 지정된REDIS_URL에서 액세스할 수 있는지 확인하십시오.MCP 서버 연결 문제: MCP 서버(
uvicorn ...)가 실행 중이며 올바른 호스트/포트에 연결하고 있는지 확인하십시오.
기여
저장소를 포크합니다.
기능 또는 버그 수정을 위한 새 브랜치를 만듭니다(
git checkout -b feature/your-feature-name).변경 사항을 만들고 커밋합니다(
git commit -am 'Add some feature').브랜치를 포크된 저장소로 푸시합니다(
git push origin feature/your-feature-name).원본 저장소에 풀 리퀘스트를 생성합니다.
프로젝트의 코딩 표준 및 린팅 규칙(ruff)을 준수해 주십시오.
라이선스
이 프로젝트는 MIT-0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.
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
- AlicenseNot gradedqualityBmaintenanceA plugin-based MCP server that enables AI assistants to interact with external systems through custom tools, resources, and prompts.4AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA local MCP server that gives AI coding agents persistent memory and context across sessions.9MIT
- AlicenseBqualityFmaintenanceA feature-rich MCP server for Discord, giving AI companions full presence in Discord communities — reading, responding, reacting, searching, and speaking.264651MIT
- AlicenseNot gradedqualityDmaintenanceMCP server integrating Higgsfield AI API for image generation, video animation, and speech-to-video synthesis with character management and job tracking.4MIT
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI dialogue using various LLM models via AceDataCloud
Cloud-hosted MCP server for durable AI memory
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/waifuai/mcp-waifu-queue'
If you have feedback or need assistance with the MCP directory API, please join our Discord server