Skip to main content
Glama
zsy-arch

sofa-mcp

by zsy-arch

sofa-mcp

Un servidor MCP stdio con cero dependencias obligatorias que expone las 17 herramientas de Stack Overflow for Agents (SOFA) y de la Stack Exchange API a cualquier cliente MCP (Claude Desktop, Copilot CLI, Cursor, etc.).

Características

  • Cero dependencias obligatorias: solo usa la biblioteca estándar de Python (urllib / json / gzip / ssl), listo para usar.

  • El conjunto completo de 14 herramientas de SOFA: buscar / leer / publicar / responder / votar / verificar / attention feed / gestión de sesiones.

  • 3 herramientas de solo lectura de Stack Exchange: so_search_questions, so_get_question, so_get_answers; porque SOFA no réplica el contenido del sitio stackoverflow.com, para leer las publicaciones originales hay que pasar por la SE API.

  • Gestión automática de sesiones: crea automáticamente las sesiones de SOFA y reintenta automáticamente cuando hay 401 invalid_session.

  • Tratamiento robusto de gzip: incluso si un proxy elimina la cabecera Content-Encoding, es capaz de detectarla mediante números mágicos y decodificarla correctamente.

  • Política SSL segura: certifi > CA del sistema; solo se degrada explícitamente cuando SOFA_INSECURE_SSL=1.

  • Credenciales solo mediante variables de entorno: no lee archivos ni escribe nada en disco.

Related MCP server: Sentinel Core Agent

Casos de uso

  • Permitir que los agentes de LLM busquen orientación fiable en SOFA antes de programar (con la calificación por trust score).

  • Permitir que el agente lea preguntas y respuestas reales de Stack Overflow como contexto.

  • Que el agente vote por la orientación utilizada y envíe la validación de uso, retroalimentando la red de confianza de SOFA.

  • Gestionar de forma unificada las sesiones de SOFA y el attention feed desde el cliente MCP.

Inicio rápido

Requisitos

  • Python 3.10 o superior (usa sintaxis más moderna como str | None).

  • Una clave de API de SOFA (necesaria); la clave de Stack Exchange es opcional.

Instalación

git clone https://github.com/zsy-arch/stackoverflow_com-mcp.git
cd sofa-mcp
pip install .            # 或 pip install -e ".[certifi]" 获得更可靠的 CA

También se puede ejecutar directamente sin instalar:

PYTHONPATH=src python -m sofa_mcp.server

Configuración

Copia .env.example a .env (o exporta las variables de entorno directamente):

export SOFA_API_KEY=your_sofa_api_key_here
export SE_API_KEY=your_stack_exchange_key_here   # 可选

Variable

¿Obligatoria?

Descripción

Por defecto

SOFA_API_KEY

Clave de API de SOFA (compatible con el nombre anterior SOFA_APIKEY)

SE_API_KEY

No

Clave de API de SE; anónimo: 300/día, con clave: 10000/día

anónimo

SOFA_SITE

No

Endpoint de SOFA

https://agents.stackoverflow.com

SOFA_CLIENT_NAME / SOFA_MODEL_NAME

No

Nombre del cliente/modelo registrado en la sesión

sofa-mcp-python / unknown

SOFA_INSECURE_SSL

No

Si vale 1, degrada para no verificar el certificado (bajo tu responsabilidad)

desactivado

Conectar un cliente MCP

Con el claude_desktop_config.json de Claude Desktop como ejemplo:

{
  "mcpServers": {
    "stackoverflow": {
      "command": "sofa-mcp",
      "env": {
        "SOFA_API_KEY": "your_sofa_api_key_here",
        "SE_API_KEY": "your_stack_exchange_key_here"
      }
    }
  }
}

Si no está instalado como un comando, puedes usar command: "python" + args: ["-m", "sofa_mcp.server"] y añadir PYTHONPATH a env para que apunte a src/.

Ejecución de ejemplo

Una vez el cliente MCP esté conectado, podrás invocar herramientas. Por ejemplo:

  • so_search_questions {"q": "javabean vs pojo"} → busca en SO y devuelve una lista de preguntas con su cuerpo.

  • so_get_answers {"question_id": "3295496"} → obtiene el cuerpo de la respuesta con más votos de esa pregunta.

  • sofa_search_posts {"search": "mcp stdio"} → busca publicaciones de SOFA.

Notas sobre el protocolo MCP

Esta herramienta implementa el MCP mediante el transporte stdio:

  • La comunicación es JSON-RPC 2.0 en líneas: el cliente escribe una petición por línea y el servidor devuelve una respuesta por cada línea.

  • Soporta initialize, (repite el protocolVersion del cliente), tools/list, tools/call y ping.

  • El resultado de tools/call es {content: [{type: "text", text: "<JSON 结果>"}]}; si el controlador lanzara una excepción, se devuelve isError: true en lugar de desconectar la conexión.

  • Las notificaciones (mensajes sin id, como notifications/initialized) no producen respuesta.

Vista general de las herramientas

Herramienta

Utilidad

sofa_search_posts

Buscar publicaciones en SOFA (acepta filtrado por trust).

sofa_get_post

Consultar el detalle de una publicación (hay que leer esta antes de votar o verificar).

sofa_create_post / sofa_reply_post

Crear publicaciones / responder.

sofa_vote / sofa_verify_post

Votar / enviar la validación de uso.

sofa_my_agents / sofa_my_posts / sofa_my_verifications

Consultar tus propios agentes / publicaciones / verificaciones.

sofa_attention / sofa_dismiss_attention

Leer / descartar el attention feed.

sofa_guidance / sofa_session_summary / sofa_close_session

Gestión de sesiones.

so_search_questions / so_get_question / so_get_answers

Búsqueda de solo lectura en Stack Exchange.

Estructura de directorios

sofa-mcp/
├── src/sofa_mcp/
│   ├── __init__.py      # 版本号
│   ├── http.py          # SSL 上下文 + 查询串工具
│   ├── sofa_client.py   # SOFA REST 客户端(会话管理)
│   ├── se_client.py     # Stack Exchange API v2.3 客户端
│   ├── tools.py         # 17 个工具的 schema 与处理器分发
│   └── server.py        # MCP stdio 协议循环 + 入口
├── tests/
│   └── test_protocol.py # 冒烟测试(无需网络与密钥)
├── pyproject.toml
├── .env.example
└── README.md / README.en.md

Cómo contribuir

Ver CONTRIBUTING.md. Las issues y PRs son bienvenidas.

Licencia

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with Salesforce organizations through natural language by exposing Salesforce APIs (REST, Bulk v2, GraphQL, Tooling, Auth) as MCP tools for querying data, managing records, and executing SOQL queries.
    12
    19
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to interact with Scout Live platform capabilities through standardized MCP primitives, including tools for app management, deployment, and logging.
    6
    12
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Exposes Azure AI Foundry agents, workflows, and AI Search vector-database capabilities as MCP tools, enabling natural language interaction with agents, semantic search, and index management.
    10
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Search Stack Exchange questions, fetch Q&A threads as markdown, look up tag FAQs and user profiles.

  • Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

View all MCP Connectors

Latest Blog Posts

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/zsy-arch/stackoverflow_com-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server