MCPStore

Uma solução de gerenciamento de ferramentas MCP de nível empresarial para simplificar a integração de ferramentas de Agentes de IA, gerenciamento de serviços e monitoramento de sistemas.

Documentação

English | 简体中文

mcpstore

Gerenciamento de MCP construído com Rust

GitHub Release GitHub stars GitHub forks Rust

Download for macOS Download for Windows Download for Linux

Por que mcpstore

mcpstore é construído com Rust para alto desempenho e baixa sobrecarga. Sua arquitetura espelha o estilo Kubernetes de plano de controle / plano de dados: o plano de controle lida com a orquestração, enquanto o plano de dados foca na invocação. Em hosts com recursos limitados, você pode anexar apenas o plano de dados e chamar serviços MCP já compartilhados com zero manutenção local. SDKs estão disponíveis para incorporação em aplicações e Agentes.

Início Rápido

npm install -g ip2a@mcpstore

ou

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

Prefere integração via código? → Use via SDK

Uso via CLI

Gerencie serviços MCP e estado de execução pela CLI. Veja o Início Rápido acima para instalação.

Adicione, conecte, reinicie ou remova um serviço:

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

Inspecione a configuração local ou abra a interface web:

mcpstore config show
mcpstore web

Exponha uma API HTTP:

mcpstore api --host 127.0.0.1 --port 1820

Aplicativo Desktop (Beta)

A interface gráfica é o plano de controle: gerencie serviços e ferramentas MCP, inspecione parâmetros e experimente invocações. Atualmente em Beta — baixe em GitHub Releases.

mcpstore tools panel

Uso via SDK

Integre mcpstore à sua aplicação por meio do SDK Python ou da Lib Rust.

Python

Instalação

pip install mcpstore

Início Rápido

Inicialize um store:

from mcpstore import MCPStore

store = MCPStore.setup_store()

Use store.for_store() para gerenciar serviços e ferramentas MCP no escopo global.

Adicione seu primeiro serviço

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

Converta em ferramentas LangChain e use-as

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)
FrameworkObter ferramentas
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()

Agrupe por Agente

Use for_agent(agent_id) para criar um escopo independente 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

Instalação

cargo add mcpstore

Início 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 Comuns
AçãoExemplo
Adicionar serviçostore.for_store().add_service(config)
Obter informações do serviçostore.for_store().find_service("service_name").info()
Atualizar serviçostore.for_store().update_service("service_name", new_config)
Reiniciar serviçostore.for_store().restart_service("service_name")
Desconectar serviçostore.for_store().disconnect_service("service_name")
Remover serviçostore.for_store().remove_service(service_name="service_name")
Listar serviçosstore.for_store().list_services()
Listar ferramentasstore.for_store().list_tools()
Listar prompts no escopo atualstore.for_store().list_prompts()
Mostrar configuraçãostore.for_store().show_config()
Listar agentesstore.list_agents()

Histórico de Estrelas

Star History Chart


Problemas e sugestões são bem-vindos via GitHub Issues.