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
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.
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)
| Framework | Obter ferramentas |
|---|---|
| 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() |
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ção | Exemplo |
|---|---|
| Adicionar serviço | store.for_store().add_service(config) |
| Obter informações do serviço | store.for_store().find_service("service_name").info() |
| Atualizar serviço | store.for_store().update_service("service_name", new_config) |
| Reiniciar serviço | store.for_store().restart_service("service_name") |
| Desconectar serviço | store.for_store().disconnect_service("service_name") |
| Remover serviço | store.for_store().remove_service(service_name="service_name") |
| Listar serviços | store.for_store().list_services() |
| Listar ferramentas | store.for_store().list_tools() |
| Listar prompts no escopo atual | store.for_store().list_prompts() |
| Mostrar configuração | store.for_store().show_config() |
| Listar agentes | store.list_agents() |
Histórico de Estrelas
Problemas e sugestões são bem-vindos via GitHub Issues.