MCPStore

Una solución de gestión de herramientas MCP de nivel empresarial para simplificar la integración de herramientas de agentes de IA, la gestión de servicios y la monitorización del sistema.

Documentación

English | 简体中文

mcpstore

Gestión de MCP construida con Rust

GitHub Release GitHub stars GitHub forks Rust

Download for macOS Download for Windows Download for Linux

Por qué mcpstore

mcpstore está construido con Rust para ofrecer alto rendimiento y baja sobrecarga. Su arquitectura refleja el estilo de plano de control / plano de datos de Kubernetes: el plano de control gestiona la orquestación, mientras que el plano de datos se centra en la invocación. En hosts con recursos limitados, puedes adjuntar solo el plano de datos y llamar a servicios MCP ya compartidos sin mantenimiento local. Los SDK están disponibles para integrarse en aplicaciones y Agentes.

Inicio rápido

npm install -g ip2a@mcpstore

o

curl -fsSL https://raw.githubusercontent.com/ip2a/mcpstore/main/install.sh | bash

¿Prefieres integración mediante código? → Usar mediante SDK

Uso de la CLI

Gestiona servicios MCP y estado de ejecución desde la CLI. Consulta el Inicio rápido anterior para la instalación.

Añade, conecta, reinicia o elimina un servicio:

mcpstore add wiki https://example.com/mcp
mcpstore list
mcpstore connect wiki
mcpstore remove wiki

Inspecciona la configuración local, o abre la interfaz web:

mcpstore config show
mcpstore web

Expón una API HTTP:

mcpstore api --host 127.0.0.1 --port 1820

Aplicación de escritorio (Beta)

La interfaz gráfica es el plano de control: gestiona servicios y herramientas MCP, inspecciona parámetros y prueba invocaciones. Actualmente en Beta — descárgala desde GitHub Releases.

mcpstore tools panel

Uso del SDK

Integra mcpstore en tu aplicación mediante el SDK de Python o la librería de Rust.

Python

Instalación

pip install mcpstore

Inicio rápido

Inicializa un store:

from mcpstore import MCPStore

store = MCPStore.setup_store()

Usa store.for_store() para gestionar servicios y herramientas MCP en el ámbito global.

Añade tu primer servicio

store.for_store().add_service({
    "mcpServers": {
        "mcpstore_wiki": {
            "url": "https://example.com/mcp"
        }
    }
})
store.for_store().wait_service("mcpstore_wiki")

Convierte a herramientas de LangChain y úsalas

from langchain.agents import create_agent
from langchain_openai import ChatOpenAI

tools = store.for_store().for_langchain().list_tools()

llm = ChatOpenAI(
    temperature=0,
    model="your-model",
    api_key="sk-*****",
    base_url="https://api.xxx.com",
)
agent = create_agent(model=llm, tools=tools, system_prompt="You are an assistant")
events = agent.invoke({
    "messages": [{"role": "user", "content": "How do I add a service in mcpstore?"}]
})
print(events)
FrameworkObtener herramientas
LangChaintools = store.for_store().for_langchain().list_tools()
LangGraphtools = store.for_store().for_langgraph().list_tools()
OpenAItools = store.for_store().for_openai().list_tools()
AutoGentools = store.for_store().for_autogen().list_tools()
CrewAItools = store.for_store().for_crewai().list_tools()
LlamaIndextools = store.for_store().for_llamaindex().list_tools()

Agrupar por Agente

Usa for_agent(agent_id) para crear un ámbito independiente por Agente:

store.for_agent("agent1").add_service({
    "name": "mcpstore_wiki",
    "url": "https://example.com/mcp",
})

store.for_agent("agent2").add_service({
    "name": "github",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"]
    },
})

agent1_tools = store.for_agent("agent1").list_tools()
agent2_tools = store.for_agent("agent2").list_tools()
Rust

Instalación

cargo add mcpstore

Inicio rápido

use std::time::Duration;

use mcpstore::{McpConfig, MCPStore, Result, ServiceTarget};

#[tokio::main]
async fn main() -> Result<()> {
    let store = MCPStore::setup(None)?;

    store
        .for_store()
        .add_service(McpConfig::from_json_str(
            r#"{"name":"mcpstore_wiki","url":"https://example.com/mcp"}"#,
        )?)
        .await?;

    store
        .for_store()
        .wait_service(
            ServiceTarget::ServiceName("mcpstore_wiki"),
            Duration::from_secs(30),
        )
        .await?;

    let tools = store.for_store().list_tools().await?;
    println!("loaded tools: {}", tools.len());
    Ok(())
}
APIs comunes
AcciónEjemplo
Añadir serviciostore.for_store().add_service(config)
Obtener información del serviciostore.for_store().find_service("service_name").info()
Actualizar serviciostore.for_store().update_service("service_name", new_config)
Reiniciar serviciostore.for_store().restart_service("service_name")
Desconectar serviciostore.for_store().disconnect_service("service_name")
Eliminar serviciostore.for_store().remove_service(service_name="service_name")
Listar serviciosstore.for_store().list_services()
Listar herramientasstore.for_store().list_tools()
Listar prompts en el ámbito actualstore.for_store().list_prompts()
Mostrar configuraciónstore.for_store().show_config()
Listar agentesstore.list_agents()

Historial de estrellas

Star History Chart


Los problemas y sugerencias son bienvenidos a través de GitHub Issues.