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
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.
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)
| Framework | Obtener herramientas |
|---|---|
| LangChain | tools = store.for_store().for_langchain().list_tools() |
| LangGraph | tools = store.for_store().for_langgraph().list_tools() |
| OpenAI | tools = store.for_store().for_openai().list_tools() |
| AutoGen | tools = store.for_store().for_autogen().list_tools() |
| CrewAI | tools = store.for_store().for_crewai().list_tools() |
| LlamaIndex | tools = 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ón | Ejemplo |
|---|---|
| Añadir servicio | store.for_store().add_service(config) |
| Obtener información del servicio | store.for_store().find_service("service_name").info() |
| Actualizar servicio | store.for_store().update_service("service_name", new_config) |
| Reiniciar servicio | store.for_store().restart_service("service_name") |
| Desconectar servicio | store.for_store().disconnect_service("service_name") |
| Eliminar servicio | store.for_store().remove_service(service_name="service_name") |
| Listar servicios | store.for_store().list_services() |
| Listar herramientas | store.for_store().list_tools() |
| Listar prompts en el ámbito actual | store.for_store().list_prompts() |
| Mostrar configuración | store.for_store().show_config() |
| Listar agentes | store.list_agents() |
Historial de estrellas
Los problemas y sugerencias son bienvenidos a través de GitHub Issues.